diff options
Diffstat (limited to 'src/network/socket')
-rw-r--r-- | src/network/socket/qabstractsocket.cpp | 8 | ||||
-rw-r--r-- | src/network/socket/qabstractsocket_p.h | 1 | ||||
-rw-r--r-- | src/network/socket/qnet_unix_p.h | 26 | ||||
-rw-r--r-- | src/network/socket/qtcpserver.cpp | 9 | ||||
-rw-r--r-- | src/network/socket/qtcpsocket.cpp | 9 | ||||
-rw-r--r-- | src/network/socket/qtcpsocket.h | 2 |
6 files changed, 55 insertions, 0 deletions
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index baecf27162..67dea74436 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -650,6 +650,8 @@ bool QAbstractSocketPrivate::initSocketLayer(QAbstractSocket::NetworkLayerProtoc return false; } + configureCreatedSocket(); + if (threadData->hasEventDispatcher()) socketEngine->setReceiver(this); @@ -661,6 +663,12 @@ bool QAbstractSocketPrivate::initSocketLayer(QAbstractSocket::NetworkLayerProtoc } /*! \internal +*/ +void QAbstractSocketPrivate::configureCreatedSocket() +{ +} + +/*! \internal Slot connected to the read socket notifier. This slot is called when new data is available for reading, or when the socket has diff --git a/src/network/socket/qabstractsocket_p.h b/src/network/socket/qabstractsocket_p.h index 63440b6416..1c04277f49 100644 --- a/src/network/socket/qabstractsocket_p.h +++ b/src/network/socket/qabstractsocket_p.h @@ -130,6 +130,7 @@ public: bool flush(); bool initSocketLayer(QAbstractSocket::NetworkLayerProtocol protocol); + virtual void configureCreatedSocket(); void startConnectingByName(const QString &host); void fetchConnectionParameters(); void setupSocketNotifiers(); diff --git a/src/network/socket/qnet_unix_p.h b/src/network/socket/qnet_unix_p.h index 979afb82ba..cd118afd63 100644 --- a/src/network/socket/qnet_unix_p.h +++ b/src/network/socket/qnet_unix_p.h @@ -193,6 +193,32 @@ static inline int qt_safe_sendto(int sockfd, const void *buf, size_t len, int fl return ret; } +static inline int qt_safe_recvmsg(int sockfd, struct msghdr *msg, int flags) +{ + int ret; + + EINTR_LOOP(ret, ::recvmsg(sockfd, msg, flags)); + return ret; +} + +// VxWorks' headers do not specify any const modifiers +static inline int qt_safe_sendmsg(int sockfd, const struct msghdr *msg, int flags) +{ +#ifdef MSG_NOSIGNAL + flags |= MSG_NOSIGNAL; +#else + qt_ignore_sigpipe(); +#endif + + int ret; +#ifdef Q_OS_VXWORKS + EINTR_LOOP(ret, ::sendmsg(sockfd, (struct msghdr *) msg, flags); +#else + EINTR_LOOP(ret, ::sendmsg(sockfd, msg, flags)); +#endif + return ret; +} + QT_END_NAMESPACE #endif // QNET_UNIX_P_H diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index 50cf812491..914c14877e 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -222,6 +222,9 @@ void QTcpServerPrivate::readNotification() QTcpServer::QTcpServer(QObject *parent) : QObject(*new QTcpServerPrivate, parent) { +#if defined(QTCPSERVER_DEBUG) + qDebug("QTcpServer::QTcpServer(%p)", parent); +#endif } /*! @@ -235,6 +238,9 @@ QTcpServer::QTcpServer(QObject *parent) */ QTcpServer::~QTcpServer() { +#if defined(QTCPSERVER_DEBUG) + qDebug("QTcpServer::~QTcpServer()"); +#endif close(); } @@ -243,6 +249,9 @@ QTcpServer::~QTcpServer() QTcpServer::QTcpServer(QTcpServerPrivate &dd, QObject *parent) : QObject(dd, parent) { +#if defined(QTCPSERVER_DEBUG) + qDebug("QTcpServer::QTcpServer(QTcpServerPrivate == %p, parent == %p)", &dd, parent); +#endif } /*! diff --git a/src/network/socket/qtcpsocket.cpp b/src/network/socket/qtcpsocket.cpp index b6072b2909..13865fbc9c 100644 --- a/src/network/socket/qtcpsocket.cpp +++ b/src/network/socket/qtcpsocket.cpp @@ -103,4 +103,13 @@ QTcpSocket::QTcpSocket(QTcpSocketPrivate &dd, QObject *parent) d_func()->isBuffered = true; } +/*! + \internal +*/ +QTcpSocket::QTcpSocket(QAbstractSocket::SocketType socketType, + QTcpSocketPrivate &dd, QObject *parent) + : QAbstractSocket(socketType, dd, parent) +{ +} + QT_END_NAMESPACE diff --git a/src/network/socket/qtcpsocket.h b/src/network/socket/qtcpsocket.h index 3449beeceb..bf5370c976 100644 --- a/src/network/socket/qtcpsocket.h +++ b/src/network/socket/qtcpsocket.h @@ -51,6 +51,8 @@ public: protected: QTcpSocket(QTcpSocketPrivate &dd, QObject *parent = 0); + QTcpSocket(QAbstractSocket::SocketType socketType, QTcpSocketPrivate &dd, + QObject *parent = 0); private: Q_DISABLE_COPY(QTcpSocket) |