@ -203,6 +203,12 @@ Session::Session(QObject *parent)
@@ -203,6 +203,12 @@ Session::Session(QObject *parent)
configure ( ) ;
connect ( pref , SIGNAL ( changed ( ) ) , SLOT ( configure ( ) ) ) ;
// Network configuration monitor
connect ( & m_networkManager , SIGNAL ( onlineStateChanged ( bool ) ) , SLOT ( networkOnlineStateChanged ( bool ) ) ) ;
connect ( & m_networkManager , SIGNAL ( configurationAdded ( const QNetworkConfiguration & ) ) , SLOT ( networkConfigurationChange ( const QNetworkConfiguration & ) ) ) ;
connect ( & m_networkManager , SIGNAL ( configurationRemoved ( const QNetworkConfiguration & ) ) , SLOT ( networkConfigurationChange ( const QNetworkConfiguration & ) ) ) ;
connect ( & m_networkManager , SIGNAL ( configurationChanged ( const QNetworkConfiguration & ) ) , SLOT ( networkConfigurationChange ( const QNetworkConfiguration & ) ) ) ;
m_resumeDataTimer - > start ( ) ;
// initialize PortForwarder instance
@ -484,7 +490,7 @@ void Session::configure()
@@ -484,7 +490,7 @@ void Session::configure()
const unsigned short newListenPort = pref - > getSessionPort ( ) ;
if ( oldListenPort ! = newListenPort ) {
qDebug ( " Session port changes in program preferences: %d -> %d " , oldListenPort , newListenPort ) ;
setListeningPort ( newListenPort ) ;
setListeningPort ( ) ;
}
// * Save path
@ -1459,12 +1465,28 @@ void Session::setAppendExtension(bool append)
@@ -1459,12 +1465,28 @@ void Session::setAppendExtension(bool append)
}
}
void Session : : networkOnlineStateChanged ( const bool online )
{
Logger : : instance ( ) - > addMessage ( tr ( " System network status changed to %1 " , " e.g: System network status changed to ONLINE " ) . arg ( online ? tr ( " ONLINE " ) : tr ( " OFFLINE " ) ) , Log : : INFO ) ;
}
void Session : : networkConfigurationChange ( const QNetworkConfiguration & cfg )
{
const QString configuredInterfaceName = Preferences : : instance ( ) - > getNetworkInterface ( ) ;
const QString changedInterface = cfg . name ( ) ;
if ( configuredInterfaceName . isEmpty ( ) | | configuredInterfaceName = = changedInterface ) {
Logger : : instance ( ) - > addMessage ( tr ( " Network configuration of %1 has changed, refreshing session binding " , " e.g: Network configuration of tun0 has changed, refreshing session binding " ) . arg ( changedInterface ) , Log : : INFO ) ;
setListeningPort ( ) ;
}
}
// Set the ports range in which is chosen the port
// the BitTorrent session will listen to
void Session : : setListeningPort ( int port )
void Session : : setListeningPort ( )
{
qDebug ( ) < < Q_FUNC_INFO < < port ;
Preferences * const pref = Preferences : : instance ( ) ;
const unsigned short port = pref - > getSessionPort ( ) ;
qDebug ( ) < < Q_FUNC_INFO < < port ;
Logger * const logger = Logger : : instance ( ) ;
std : : pair < int , int > ports ( port , port ) ;
@ -1490,18 +1512,23 @@ void Session::setListeningPort(int port)
@@ -1490,18 +1512,23 @@ void Session::setListeningPort(int port)
return ;
}
QString ip ;
qDebug ( " This network interface has %d IP addresses " , network_iface . addressEntries ( ) . size ( ) ) ;
foreach ( const QNetworkAddressEntry & entry , network_iface . addressEntries ( ) ) {
if ( ( ! listen_ipv6 & & ( entry . ip ( ) . protocol ( ) = = QAbstractSocket : : IPv6Protocol ) )
| | ( listen_ipv6 & & ( entry . ip ( ) . protocol ( ) = = QAbstractSocket : : IPv4Protocol ) ) )
const QList < QNetworkAddressEntry > addresses = network_iface . addressEntries ( ) ;
qDebug ( " This network interface has %d IP addresses " , addresses . size ( ) ) ;
QHostAddress ip ;
QString ipString ;
QAbstractSocket : : NetworkLayerProtocol protocol ;
foreach ( const QNetworkAddressEntry & entry , addresses ) {
ip = entry . ip ( ) ;
ipString = ip . toString ( ) ;
protocol = ip . protocol ( ) ;
Q_ASSERT ( protocol = = QAbstractSocket : : IPv4Protocol | | protocol = = QAbstractSocket : : IPv6Protocol ) ;
if ( ( ! listen_ipv6 & & ( protocol = = QAbstractSocket : : IPv6Protocol ) )
| | ( listen_ipv6 & & ( protocol = = QAbstractSocket : : IPv4Protocol ) ) )
continue ;
qDebug ( " Trying to listen on IP %s (%s) " , qPrintable ( entry . ip ( ) . toString ( ) ) , qPrintable ( iface_name ) ) ;
m_nativeSession - > listen_on ( ports , ec , entry . ip ( ) . toString ( ) . toLatin1 ( ) . constData ( ) , libt : : session : : listen_no_system_port ) ;
qDebug ( " Trying to listen on IP %s (%s) " , qPrintable ( ipString ) , qPrintable ( iface_name ) ) ;
m_nativeSession - > listen_on ( ports , ec , ipString . toLatin1 ( ) . constData ( ) , libt : : session : : listen_no_system_port ) ;
if ( ! ec ) {
ip = entry . ip ( ) . toString ( ) ;
logger - > addMessage ( tr ( " qBittorrent is trying to listen on interface %1 port: %2 " , " e.g: qBittorrent is trying to listen on interface 192.168.0.1 port: TCP/6881 " ) . arg ( ip ) . arg ( QString : : number ( port ) ) , Log : : INFO ) ;
logger - > addMessage ( tr ( " qBittorrent is trying to listen on interface %1 port: %2 " , " e.g: qBittorrent is trying to listen on interface 192.168.0.1 port: TCP/6881 " ) . arg ( ipString ) . arg ( port ) , Log : : INFO ) ;
return ;
}
}