mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-24 01:46:36 +02:00
Merge branch 'upstream-openssl' into restricted_routes
This commit is contained in:
commit
effdb70417
10 changed files with 147 additions and 4 deletions
|
@ -30,7 +30,7 @@ before_install:
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew unlink boost openssl && brew link boost openssl -f ; fi
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew unlink boost openssl && brew link boost openssl -f ; fi
|
||||||
env:
|
env:
|
||||||
matrix:
|
matrix:
|
||||||
# - BUILD_TYPE=Release UPNP=ON
|
- BUILD_TYPE=Release UPNP=ON
|
||||||
- BUILD_TYPE=Release UPNP=OFF
|
- BUILD_TYPE=Release UPNP=OFF
|
||||||
script:
|
script:
|
||||||
- cd build && cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWITH_UPNP=${UPNP} && make
|
- cd build && cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWITH_UPNP=${UPNP} && make
|
||||||
|
|
10
SSUData.cpp
10
SSUData.cpp
|
@ -425,6 +425,7 @@ namespace transport
|
||||||
if (ecode != boost::asio::error::operation_aborted)
|
if (ecode != boost::asio::error::operation_aborted)
|
||||||
{
|
{
|
||||||
uint32_t ts = i2p::util::GetSecondsSinceEpoch ();
|
uint32_t ts = i2p::util::GetSecondsSinceEpoch ();
|
||||||
|
int numResent = 0;
|
||||||
for (auto it = m_SentMessages.begin (); it != m_SentMessages.end ();)
|
for (auto it = m_SentMessages.begin (); it != m_SentMessages.end ();)
|
||||||
{
|
{
|
||||||
if (ts >= it->second->nextResendTime)
|
if (ts >= it->second->nextResendTime)
|
||||||
|
@ -437,6 +438,7 @@ namespace transport
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_Session.Send (f->buf, f->len); // resend
|
m_Session.Send (f->buf, f->len); // resend
|
||||||
|
numResent++;
|
||||||
}
|
}
|
||||||
catch (boost::system::system_error& ec)
|
catch (boost::system::system_error& ec)
|
||||||
{
|
{
|
||||||
|
@ -457,7 +459,13 @@ namespace transport
|
||||||
else
|
else
|
||||||
it++;
|
it++;
|
||||||
}
|
}
|
||||||
ScheduleResend ();
|
if (numResent < MAX_OUTGOING_WINDOW_SIZE)
|
||||||
|
ScheduleResend ();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LogPrint (eLogError, "SSU: resend window exceeds max size. Session terminated");
|
||||||
|
m_Session.Close ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ namespace transport
|
||||||
const int DECAY_INTERVAL = 20; // in seconds
|
const int DECAY_INTERVAL = 20; // in seconds
|
||||||
const int INCOMPLETE_MESSAGES_CLEANUP_TIMEOUT = 30; // in seconds
|
const int INCOMPLETE_MESSAGES_CLEANUP_TIMEOUT = 30; // in seconds
|
||||||
const unsigned int MAX_NUM_RECEIVED_MESSAGES = 1000; // how many msgID we store for duplicates check
|
const unsigned int MAX_NUM_RECEIVED_MESSAGES = 1000; // how many msgID we store for duplicates check
|
||||||
|
const int MAX_OUTGOING_WINDOW_SIZE = 200; // how many unacked message we can store
|
||||||
// data flags
|
// data flags
|
||||||
const uint8_t DATA_FLAG_EXTENDED_DATA_INCLUDED = 0x02;
|
const uint8_t DATA_FLAG_EXTENDED_DATA_INCLUDED = 0x02;
|
||||||
const uint8_t DATA_FLAG_WANT_REPLY = 0x04;
|
const uint8_t DATA_FLAG_WANT_REPLY = 0x04;
|
||||||
|
|
|
@ -338,6 +338,10 @@ if (WITH_BINARY)
|
||||||
set_target_properties("${PROJECT_NAME}" PROPERTIES LINK_FLAGS "-z relro -z now" )
|
set_target_properties("${PROJECT_NAME}" PROPERTIES LINK_FLAGS "-z relro -z now" )
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (WITH_UPNP)
|
||||||
|
target_link_libraries("${PROJECT_NAME}" "miniupnpc")
|
||||||
|
endif ()
|
||||||
|
|
||||||
# FindBoost pulls pthread for thread which is broken for static linking at least on Ubuntu 15.04
|
# FindBoost pulls pthread for thread which is broken for static linking at least on Ubuntu 15.04
|
||||||
list(GET Boost_LIBRARIES -1 LAST_Boost_LIBRARIES)
|
list(GET Boost_LIBRARIES -1 LAST_Boost_LIBRARIES)
|
||||||
if(${LAST_Boost_LIBRARIES} MATCHES ".*pthread.*")
|
if(${LAST_Boost_LIBRARIES} MATCHES ".*pthread.*")
|
||||||
|
|
1
qt/i2pd_qt/.gitignore
vendored
Normal file
1
qt/i2pd_qt/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
i2pd_qt.pro.user*
|
5
qt/i2pd_qt/i2pd.qrc
Normal file
5
qt/i2pd_qt/i2pd.qrc
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<!DOCTYPE RCC><RCC version="1.0">
|
||||||
|
<qresource prefix="/">
|
||||||
|
<file>images/icon.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
|
@ -151,7 +151,7 @@ DISTFILES += \
|
||||||
|
|
||||||
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
|
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
|
||||||
|
|
||||||
SOURCES += $$IFADDRS_PATH/ifaddrs.c ../../UPnP.cpp
|
SOURCES += $$IFADDRS_PATH/ifaddrs.c
|
||||||
HEADERS += $$IFADDRS_PATH/ifaddrs.h
|
HEADERS += $$IFADDRS_PATH/ifaddrs.h
|
||||||
|
|
||||||
equals(ANDROID_TARGET_ARCH, armeabi-v7a){
|
equals(ANDROID_TARGET_ARCH, armeabi-v7a){
|
||||||
|
@ -202,3 +202,13 @@ message("Using Linux settings")
|
||||||
LIBS += -lcrypto -lssl -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread -lminiupnpc
|
LIBS += -lcrypto -lssl -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread -lminiupnpc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
!android:!symbian:!maemo5:!simulator {
|
||||||
|
message("Build with a system tray icon")
|
||||||
|
# see also http://doc.qt.io/qt-4.8/qt-desktop-systray-systray-pro.html for example on wince*
|
||||||
|
#sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS i2pd_qt.pro resources images
|
||||||
|
RESOURCES = i2pd.qrc
|
||||||
|
QT += xml
|
||||||
|
#INSTALLS += sources
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
qt/i2pd_qt/images/icon.png
Normal file
BIN
qt/i2pd_qt/images/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 KiB |
|
@ -3,10 +3,17 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include "../../RouterContext.h"
|
#include "../../RouterContext.h"
|
||||||
|
#ifndef ANDROID
|
||||||
|
#include <QtDebug>
|
||||||
|
#endif
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent) :
|
MainWindow::MainWindow(QWidget *parent) :
|
||||||
QMainWindow(parent)/*,
|
QMainWindow(parent)/*,
|
||||||
ui(new Ui::MainWindow)*/
|
ui(new Ui::MainWindow)*/
|
||||||
|
#ifndef ANDROID
|
||||||
|
,
|
||||||
|
quitting(false)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
//ui->setupUi(this);
|
//ui->setupUi(this);
|
||||||
if (objectName().isEmpty())
|
if (objectName().isEmpty())
|
||||||
|
@ -41,18 +48,91 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||||
|
|
||||||
setCentralWidget(centralWidget);
|
setCentralWidget(centralWidget);
|
||||||
|
|
||||||
setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0));
|
setWindowTitle(QApplication::translate("MainWindow", "i2pd", 0));
|
||||||
quitButton->setText(QApplication::translate("MainWindow", "Quit", 0));
|
quitButton->setText(QApplication::translate("MainWindow", "Quit", 0));
|
||||||
gracefulQuitButton->setText(QApplication::translate("MainWindow", "Graceful Quit", 0));
|
gracefulQuitButton->setText(QApplication::translate("MainWindow", "Graceful Quit", 0));
|
||||||
|
|
||||||
|
#ifndef ANDROID
|
||||||
|
createActions();
|
||||||
|
createTrayIcon();
|
||||||
|
#endif
|
||||||
|
|
||||||
QObject::connect(quitButton, SIGNAL(released()), this, SLOT(handleQuitButton()));
|
QObject::connect(quitButton, SIGNAL(released()), this, SLOT(handleQuitButton()));
|
||||||
QObject::connect(gracefulQuitButton, SIGNAL(released()), this, SLOT(handleGracefulQuitButton()));
|
QObject::connect(gracefulQuitButton, SIGNAL(released()), this, SLOT(handleGracefulQuitButton()));
|
||||||
|
|
||||||
|
#ifndef ANDROID
|
||||||
|
QObject::connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
|
||||||
|
this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
|
||||||
|
|
||||||
|
setIcon();
|
||||||
|
trayIcon->show();
|
||||||
|
#endif
|
||||||
|
|
||||||
//QMetaObject::connectSlotsByName(this);
|
//QMetaObject::connectSlotsByName(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef ANDROID
|
||||||
|
void MainWindow::createActions() {
|
||||||
|
toggleWindowVisibleAction = new QAction(tr("&Toggle the window"), this);
|
||||||
|
connect(toggleWindowVisibleAction, SIGNAL(triggered()), this, SLOT(toggleVisibilitySlot()));
|
||||||
|
|
||||||
|
//quitAction = new QAction(tr("&Quit"), this);
|
||||||
|
//connect(quitAction, SIGNAL(triggered()), QApplication::instance(), SLOT(quit()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::toggleVisibilitySlot() {
|
||||||
|
setVisible(!isVisible());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::createTrayIcon() {
|
||||||
|
trayIconMenu = new QMenu(this);
|
||||||
|
trayIconMenu->addAction(toggleWindowVisibleAction);
|
||||||
|
//trayIconMenu->addSeparator();
|
||||||
|
//trayIconMenu->addAction(quitAction);
|
||||||
|
|
||||||
|
trayIcon = new QSystemTrayIcon(this);
|
||||||
|
trayIcon->setContextMenu(trayIconMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setIcon() {
|
||||||
|
QIcon icon(":/images/icon.png");
|
||||||
|
trayIcon->setIcon(icon);
|
||||||
|
setWindowIcon(icon);
|
||||||
|
|
||||||
|
trayIcon->setToolTip(QApplication::translate("MainWindow", "i2pd", 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) {
|
||||||
|
switch (reason) {
|
||||||
|
case QSystemTrayIcon::Trigger:
|
||||||
|
case QSystemTrayIcon::DoubleClick:
|
||||||
|
case QSystemTrayIcon::MiddleClick:
|
||||||
|
setVisible(!isVisible());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
qDebug() << "MainWindow::iconActivated(): unknown reason: " << reason << endl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::closeEvent(QCloseEvent *event) {
|
||||||
|
if(quitting){ QMainWindow::closeEvent(event); return; }
|
||||||
|
if (trayIcon->isVisible()) {
|
||||||
|
QMessageBox::information(this, tr("i2pd"),
|
||||||
|
tr("The program will keep running in the "
|
||||||
|
"system tray. To gracefully terminate the program, "
|
||||||
|
"choose <b>Graceful Quit</b> at the main i2pd window."));
|
||||||
|
hide();
|
||||||
|
event->ignore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void MainWindow::handleQuitButton() {
|
void MainWindow::handleQuitButton() {
|
||||||
qDebug("Quit pressed. Hiding the main window");
|
qDebug("Quit pressed. Hiding the main window");
|
||||||
|
#ifndef ANDROID
|
||||||
|
quitting=true;
|
||||||
|
#endif
|
||||||
close();
|
close();
|
||||||
QApplication::instance()->quit();
|
QApplication::instance()->quit();
|
||||||
}
|
}
|
||||||
|
@ -69,6 +149,9 @@ void MainWindow::handleGracefulQuitButton() {
|
||||||
|
|
||||||
void MainWindow::handleGracefulQuitTimerEvent() {
|
void MainWindow::handleGracefulQuitTimerEvent() {
|
||||||
qDebug("Hiding the main window");
|
qDebug("Hiding the main window");
|
||||||
|
#ifndef ANDROID
|
||||||
|
quitting=true;
|
||||||
|
#endif
|
||||||
close();
|
close();
|
||||||
qDebug("Performing quit");
|
qDebug("Performing quit");
|
||||||
QApplication::instance()->quit();
|
QApplication::instance()->quit();
|
||||||
|
|
|
@ -12,6 +12,11 @@
|
||||||
#include <QtWidgets/QPushButton>
|
#include <QtWidgets/QPushButton>
|
||||||
#include <QtWidgets/QVBoxLayout>
|
#include <QtWidgets/QVBoxLayout>
|
||||||
#include <QtWidgets/QWidget>
|
#include <QtWidgets/QWidget>
|
||||||
|
#ifndef ANDROID
|
||||||
|
#include <QSystemTrayIcon>
|
||||||
|
#include <QCloseEvent>
|
||||||
|
#include <QMenu>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
|
@ -25,17 +30,43 @@ public:
|
||||||
explicit MainWindow(QWidget *parent = 0);
|
explicit MainWindow(QWidget *parent = 0);
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
|
|
||||||
|
//#ifndef ANDROID
|
||||||
|
// void setVisible(bool visible);
|
||||||
|
//#endif
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleQuitButton();
|
void handleQuitButton();
|
||||||
void handleGracefulQuitButton();
|
void handleGracefulQuitButton();
|
||||||
void handleGracefulQuitTimerEvent();
|
void handleGracefulQuitTimerEvent();
|
||||||
|
#ifndef ANDROID
|
||||||
|
void setIcon();
|
||||||
|
void iconActivated(QSystemTrayIcon::ActivationReason reason);
|
||||||
|
void toggleVisibilitySlot();
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
#ifndef ANDROID
|
||||||
|
void createActions();
|
||||||
|
void createTrayIcon();
|
||||||
|
#endif
|
||||||
|
|
||||||
QWidget *centralWidget;
|
QWidget *centralWidget;
|
||||||
QWidget *verticalLayoutWidget;
|
QWidget *verticalLayoutWidget;
|
||||||
QVBoxLayout *verticalLayout1;
|
QVBoxLayout *verticalLayout1;
|
||||||
QPushButton *quitButton;
|
QPushButton *quitButton;
|
||||||
QPushButton *gracefulQuitButton;
|
QPushButton *gracefulQuitButton;
|
||||||
|
|
||||||
|
#ifndef ANDROID
|
||||||
|
bool quitting;
|
||||||
|
QAction *toggleWindowVisibleAction;
|
||||||
|
QSystemTrayIcon *trayIcon;
|
||||||
|
QMenu *trayIconMenu;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
protected:
|
||||||
|
#ifndef ANDROID
|
||||||
|
void closeEvent(QCloseEvent *event);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
Loading…
Add table
Reference in a new issue