diff --git a/src/network/connection.cpp b/src/network/connection.cpp index 21fb2bd44..e5bb70f04 100644 --- a/src/network/connection.cpp +++ b/src/network/connection.cpp @@ -3,6 +3,9 @@ #include #include +#include +#include + #include "servent.h" #define PROTOVER "2" // must match remote peer, or we can't talk. @@ -210,6 +213,15 @@ Connection::doSetup() m_statstimer->start(); m_statstimer_mark.start(); + m_sock->setSocketOption( QAbstractSocket::KeepAliveOption, 1 ); + int sockID = m_sock.data()->socketDescriptor(); + int idle = 30; + int intvl = 5; + int cnt = 3; + setsockopt( sockID, SOL_TCP, TCP_KEEPIDLE, &idle, sizeof( idle ) ); + setsockopt( sockID, SOL_TCP, TCP_KEEPINTVL, &intvl, sizeof( intvl ) ); + setsockopt( sockID, SOL_TCP, TCP_KEEPCNT, &cnt, sizeof( cnt ) ); + m_sock->moveToThread( thread() ); qsrand( QTime( 0, 0, 0 ).secsTo( QTime::currentTime() ) ); @@ -248,7 +260,7 @@ Connection::doSetup() void Connection::socketDisconnected() { - qDebug() << "SOCKET DISCONNECTED" << this->name() + qDebug() << "SOCKET DISCONNECTED" << this->name() << id() << "shutdown will happen after incoming queue empties." << "bytesavail:" << m_sock->bytesAvailable() << "bytesRecvd" << bytesReceived(); diff --git a/src/tomahawkapp.cpp b/src/tomahawkapp.cpp index d81b745fd..7f8cbe95e 100644 --- a/src/tomahawkapp.cpp +++ b/src/tomahawkapp.cpp @@ -270,6 +270,7 @@ TomahawkApp::registerMetaTypes() qRegisterMetaType< QList >("QList"); qRegisterMetaType< Connection* >("Connection*"); qRegisterMetaType< QAbstractSocket::SocketError >("QAbstractSocket::SocketError"); + qRegisterMetaType< QTcpSocket* >("QTcpSocket*"); qRegisterMetaType< QSharedPointer >("QSharedPointer"); qRegisterMetaType< QFileInfo >("QFileInfo"); qRegisterMetaType< QMap >("QMap"); @@ -289,11 +290,8 @@ TomahawkApp::registerMetaTypes() qRegisterMetaType< QMap< QString, Tomahawk::plentry_ptr > >("QMap< QString, Tomahawk::plentry_ptr >"); qRegisterMetaType< Tomahawk::PlaylistRevision >("Tomahawk::PlaylistRevision"); qRegisterMetaType< Tomahawk::QID >("Tomahawk::QID"); - qRegisterMetaType< QTcpSocket* >("QTcpSocket*"); - #ifndef TOMAHAWK_HEADLESS qRegisterMetaType< AudioErrorCode >("AudioErrorCode"); - #endif }