diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp index a1809d1..05b1a3c 100644 --- a/src/corelib/kernel/qeventdispatcher_win.cpp +++ b/src/corelib/kernel/qeventdispatcher_win.cpp @@ -479,6 +479,10 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA QSNDict *dict = sn_vec[type]; QSockNot *sn = dict ? dict->value(wp) : 0; + if (sn) + qDebug() << __FUNCTION__ << "WM_QT_SOCKETNOTIFIER" << sn->obj << type; + else + qDebug() << __FUNCTION__ << "WM_QT_SOCKETNOTIFIER 0" << type; if (sn) { QEvent event(QEvent::SockAct); QCoreApplication::sendEvent(sn->obj, &event); diff --git a/src/corelib/kernel/qsocketnotifier.cpp b/src/corelib/kernel/qsocketnotifier.cpp index 2f2dec8..64b64c9 100644 --- a/src/corelib/kernel/qsocketnotifier.cpp +++ b/src/corelib/kernel/qsocketnotifier.cpp @@ -48,6 +48,7 @@ #include "qobject_p.h" #include +#include QT_BEGIN_NAMESPACE diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 0027c4c..3cc6900 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -89,7 +89,9 @@ QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(const QString &host , networkProxy(QNetworkProxy::NoProxy) #endif { + channels = new QHttpNetworkConnectionChannel[channelCount]; + qDebug() << __FUNCTION__ << hostName << port; } QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(quint16 channelCount, const QString &hostName, quint16 port, bool encrypt) @@ -101,10 +103,10 @@ QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(quint16 channelCoun #endif { channels = new QHttpNetworkConnectionChannel[channelCount]; + qDebug() << __FUNCTION__ << hostName << port; } - QHttpNetworkConnectionPrivate::~QHttpNetworkConnectionPrivate() { for (int i = 0; i < channelCount; ++i) { @@ -297,6 +299,7 @@ void QHttpNetworkConnectionPrivate::emitReplyError(QAbstractSocket *socket, if (socket && reply) { // this error matters only to this reply reply->d_func()->errorString = errorDetail(errorCode, socket); + qDebug() << __FUNCTION__ << q << "ERROR #" << errorCode; emit reply->finishedWithError(errorCode, reply->d_func()->errorString); int i = indexOf(socket); // remove the corrupt data if any @@ -426,6 +429,7 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket isProxy ? QNetworkReply::ProxyAuthenticationRequiredError : QNetworkReply::AuthenticationRequiredError; + qDebug() << __FUNCTION__ << this << "ERROR #" << errorCode; reply->d_func()->errorString = errorDetail(errorCode, socket); emit reply->finishedWithError(errorCode, reply->d_func()->errorString); // ### at this point the reply could be deleted @@ -475,6 +479,10 @@ QHttpNetworkReply* QHttpNetworkConnectionPrivate::queueRequest(const QHttpNetwor // The reply component of the pair is created initially. QHttpNetworkReply *reply = new QHttpNetworkReply(request.url()); + reply->setObjectName(request.url().toString()); + qDebug() << "created" << reply << request.url(); + + reply->setRequest(request); reply->d_func()->connection = q; reply->d_func()->connectionChannel = &channels[0]; // will have the correct one set later @@ -527,6 +535,7 @@ bool QHttpNetworkConnectionPrivate::dequeueRequest(QAbstractSocket *socket) Q_ASSERT(socket); int i = indexOf(socket); + qDebug() << __FUNCTION__ << highPriorityQueue.size() << lowPriorityQueue.size(); if (!highPriorityQueue.isEmpty()) { // remove from queue before sendRequest! else we might pipeline the same request again @@ -1010,6 +1019,7 @@ void QHttpNetworkConnection::ignoreSslErrors(int channel) void QHttpNetworkConnection::ignoreSslErrors(const QList &errors, int channel) { + qDebug() << __FUNCTION__ << parent; Q_D(QHttpNetworkConnection); if (!d->encrypt) return; diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 978066b..d11a1ba 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -45,6 +45,7 @@ #include #include +#include #ifndef QT_NO_HTTP @@ -96,6 +97,9 @@ void QHttpNetworkConnectionChannel::init() socket = new QTcpSocket; #else socket = new QTcpSocket; + socket->setObjectName(objectName() + QLatin1String("_Socket")); + qDebug() << __FUNCTION__ << this << "created socket" << socket; + #endif #ifndef QT_NO_BEARERMANAGEMENT //push session down to socket @@ -127,6 +131,7 @@ void QHttpNetworkConnectionChannel::init() QObject::connect(socket, SIGNAL(disconnected()), this, SLOT(_q_disconnected()), Qt::QueuedConnection); + qDebug() << __FUNCTION__ << this << "connecting socket error" << socket; QObject::connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(_q_error(QAbstractSocket::SocketError)), Qt::QueuedConnection); @@ -153,6 +158,7 @@ void QHttpNetworkConnectionChannel::init() Qt::DirectConnection); } #endif + qDebug() << __FUNCTION__ << '<'; } @@ -521,6 +527,7 @@ void QHttpNetworkConnectionChannel::handleUnexpectedEOF() requeueCurrentlyPipelinedRequests(); close(); reply->d_func()->errorString = connection->d_func()->errorDetail(QNetworkReply::RemoteHostClosedError, socket); + qDebug() << __FUNCTION__ << this << "ERROR #" << QNetworkReply::RemoteHostClosedError; emit reply->finishedWithError(QNetworkReply::RemoteHostClosedError, reply->d_func()->errorString); QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); } else { @@ -852,6 +859,7 @@ void QHttpNetworkConnectionChannel::handleStatus() QNetworkReply::NetworkError errorCode = (statusCode == 407) ? QNetworkReply::ProxyAuthenticationRequiredError : QNetworkReply::AuthenticationRequiredError; + qDebug() << __FUNCTION__ << this << "ERROR #" << errorCode; reply->d_func()->errorString = connection->d_func()->errorDetail(errorCode, socket); emit reply->finishedWithError(errorCode, reply->d_func()->errorString); } @@ -1041,6 +1049,7 @@ void QHttpNetworkConnectionChannel::_q_connected() void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socketError) { + qDebug() << __FUNCTION__ << this << socketError << "SOCK" << socket << "REPL" << reply; if (!socket) return; QNetworkReply::NetworkError errorCode = QNetworkReply::UnknownNetworkError; @@ -1132,7 +1141,9 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket // Need to dequeu the request so that we can emit the error. if (!reply) connection->d_func()->dequeueRequest(socket); + qDebug() << __FUNCTION__ << reply << "after dequeueRequest"; if (reply) { + qDebug() << __FUNCTION__ << this << "ERROR #" << errorCode << QThread::currentThreadId(); reply->d_func()->errorString = errorString; emit reply->finishedWithError(errorCode, errorString); reply = 0; diff --git a/src/network/access/qhttpthreaddelegate.cpp b/src/network/access/qhttpthreaddelegate.cpp index 1f7265e..1a2d9c0 100644 --- a/src/network/access/qhttpthreaddelegate.cpp +++ b/src/network/access/qhttpthreaddelegate.cpp @@ -208,6 +208,9 @@ QHttpThreadDelegate::QHttpThreadDelegate(QObject *parent) : , httpReply(0) , synchronousRequestLoop(0) { + if (parent) + setObjectName(parent->objectName() + QLatin1String("_HttpThreadDelegate")); + qDebug() << __FUNCTION__ << this << parent; } // This is invoked as BlockingQueuedConnection from QNetworkAccessHttpBackend in the user thread @@ -239,9 +242,8 @@ void QHttpThreadDelegate::startRequestSynchronously() // This is invoked as QueuedConnection from QNetworkAccessHttpBackend in the user thread void QHttpThreadDelegate::startRequest() { -#ifdef QHTTPTHREADDELEGATE_DEBUG - qDebug() << "QHttpThreadDelegate::startRequest() thread=" << QThread::currentThreadId(); -#endif + qDebug() << "QHttpThreadDelegate::startRequest() thread=" << QThread::currentThreadId() + << httpRequest.url(); // Check QThreadStorage for the QNetworkAccessCache // If not there, create this connection cache if (!connections.hasLocalData()) { @@ -291,6 +293,7 @@ void QHttpThreadDelegate::startRequest() // Send the request to the connection httpReply = httpConnection->sendRequest(httpRequest); + qDebug() << __FUNCTION__ << this << httpConnection << httpReply; httpReply->setParent(this); // Connect the reply signals that we need to handle and then forward @@ -479,6 +482,7 @@ void QHttpThreadDelegate::finishedWithErrorSlot(QNetworkReply::NetworkError erro if (ssl) emit sslConfigurationChanged(httpReply->sslConfiguration()); #endif + qDebug() << __FUNCTION__ << this << "ERROR #" << errorCode; emit error(errorCode,detail); emit downloadFinished(); diff --git a/src/network/network.pro b/src/network/network.pro index 948922b..b87e854 100644 --- a/src/network/network.pro +++ b/src/network/network.pro @@ -7,7 +7,7 @@ DEFINES += QT_BUILD_NETWORK_LIB QT_NO_USING_NAMESPACE #DEFINES += QNETWORKDISKCACHE_DEBUG #DEFINES += QSSLSOCKET_DEBUG #DEFINES += QHOSTINFO_DEBUG -#DEFINES += QABSTRACTSOCKET_DEBUG QNATIVESOCKETENGINE_DEBUG +DEFINES += QABSTRACTSOCKET_DEBUG QNATIVESOCKETENGINE_DEBUG #DEFINES += QTCPSOCKETENGINE_DEBUG QTCPSOCKET_DEBUG QTCPSERVER_DEBUG QSSLSOCKET_DEBUG #DEFINES += QUDPSOCKET_DEBUG QUDPSERVER_DEBUG QT = core diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 3db544b..19cff37 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -762,6 +762,7 @@ bool QAbstractSocketPrivate::flush() #if defined (QABSTRACTSOCKET_DEBUG) qDebug() << "QAbstractSocketPrivate::flush() write error, aborting." << socketEngine->errorString(); #endif + qDebug() << __FUNCTION__ << q << "ERROR #" << socketError; emit q->error(socketError); // an unexpected error so close the socket. q->abort(); @@ -869,6 +870,7 @@ void QAbstractSocketPrivate::startConnectingByName(const QString &host) } state = QAbstractSocket::UnconnectedState; + qDebug() << __FUNCTION__ << q << "ERROR #" << socketError; emit q->error(socketError); emit q->stateChanged(state); } @@ -917,6 +919,7 @@ void QAbstractSocketPrivate::_q_startConnecting(const QHostInfo &hostInfo) socketError = QAbstractSocket::HostNotFoundError; q->setErrorString(QAbstractSocket::tr("Host not found")); emit q->stateChanged(state); + qDebug() << __FUNCTION__ << q << "ERROR #" << QAbstractSocket::HostNotFoundError; emit q->error(QAbstractSocket::HostNotFoundError); return; } @@ -950,6 +953,7 @@ void QAbstractSocketPrivate::_q_connectToNextAddress() { Q_Q(QAbstractSocket); do { + qDebug() << __FUNCTION__ << q << "LOOP" << addresses; // Check for more pending addresses if (addresses.isEmpty()) { #if defined(QABSTRACTSOCKET_DEBUG) @@ -975,6 +979,7 @@ void QAbstractSocketPrivate::_q_connectToNextAddress() // q->setErrorString(QAbstractSocket::tr("Connection refused")); } emit q->stateChanged(state); + qDebug() << __FUNCTION__ << q << "ERRROR #" << socketError; emit q->error(socketError); return; } @@ -982,6 +987,7 @@ void QAbstractSocketPrivate::_q_connectToNextAddress() // Pick the first host address candidate host = addresses.takeFirst(); #if defined(QABSTRACTSOCKET_DEBUG) + qDebug() << __FUNCTION__ << q ; qDebug("QAbstractSocketPrivate::_q_connectToNextAddress(), connecting to %s:%i, %d left to try", host.toString().toLatin1().constData(), port, addresses.count()); #endif @@ -1011,6 +1017,7 @@ void QAbstractSocketPrivate::_q_connectToNextAddress() if (socketEngine->connectToHost(host, port)) { //_q_testConnection(); fetchConnectionParameters(); + qDebug() << __FUNCTION__ << q << "SUCCESS"; return; } @@ -1109,6 +1116,7 @@ void QAbstractSocketPrivate::_q_abortConnectionAttempt() socketError = QAbstractSocket::SocketTimeoutError; q->setErrorString(QAbstractSocket::tr("Connection timed out")); emit q->stateChanged(state); + qDebug() << __FUNCTION__ << q << "ERROR #" << socketError; emit q->error(socketError); } else { _q_connectToNextAddress(); @@ -1169,6 +1177,7 @@ bool QAbstractSocketPrivate::readFromSocket() if (!socketEngine->isValid()) { socketError = socketEngine->error(); q->setErrorString(socketEngine->errorString()); + qDebug() << __FUNCTION__ << q << "ERROR #" << socketError; emit q->error(socketError); #if defined(QABSTRACTSOCKET_DEBUG) qDebug("QAbstractSocketPrivate::readFromSocket() read failed: %s", @@ -1380,6 +1389,7 @@ void QAbstractSocket::connectToHostImplementation(const QString &hostName, quint // failed to setup the proxy d->socketError = QAbstractSocket::UnsupportedSocketOperationError; setErrorString(QAbstractSocket::tr("Operation on socket is not supported")); + qDebug() << __FUNCTION__ << this << "ERROR #" << d->socketError; emit error(d->socketError); return; } @@ -2028,6 +2038,8 @@ bool QAbstractSocket::waitForDisconnected(int msecs) qDebug("QAbstractSocket::waitForReadyRead(%i) failed (%i, %s)", msecs, d->socketError, errorString().toLatin1().constData()); #endif + qDebug() << __FUNCTION__ << this << "ERROR #" << d->socketError; + qDebug() << __FUNCTION__ << this << "ERROR #" << d->socketError; emit error(d->socketError); if (d->socketError != SocketTimeoutError) close(); diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp index 566322a..38fd47d 100644 --- a/src/network/socket/qlocalsocket_win.cpp +++ b/src/network/socket/qlocalsocket_win.cpp @@ -142,6 +142,7 @@ void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) d->error = QLocalSocket::ServerNotFoundError; setErrorString(QLocalSocket::tr("%1: Invalid name").arg(QLatin1String("QLocalSocket::connectToServer"))); d->state = UnconnectedState; + qDebug() << __FUNCTION__ << this << "ERROR #" << d->error; emit error(d->error); emit stateChanged(d->state); return; diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp index 106932c..5d54b4e 100644 --- a/src/network/socket/qnativesocketengine.cpp +++ b/src/network/socket/qnativesocketengine.cpp @@ -318,6 +318,9 @@ bool QNativeSocketEnginePrivate::checkProxy(const QHostAddress &address) QNativeSocketEngine::QNativeSocketEngine(QObject *parent) : QAbstractSocketEngine(*new QNativeSocketEnginePrivate(), parent) { + if (parent) + setObjectName(parent->objectName() + QLatin1String("_NativeSocketEngine")); + qDebug() << __FUNCTION__ << this << parent; } /*! @@ -1217,6 +1220,8 @@ void QNativeSocketEngine::setReadNotificationEnabled(bool enable) d->readNotifier->setEnabled(enable); } else if (enable && d->threadData->eventDispatcher) { d->readNotifier = new QReadNotifier(d->socketDescriptor, this); + qDebug() << __FUNCTION__ << this; + d->readNotifier->setObjectName(objectName() + QLatin1String("_ReadNotifier")); d->readNotifier->setEnabled(true); } } @@ -1251,6 +1256,8 @@ void QNativeSocketEngine::setExceptionNotificationEnabled(bool enable) d->exceptNotifier->setEnabled(enable); } else if (enable && d->threadData->eventDispatcher) { d->exceptNotifier = new QExceptionNotifier(d->socketDescriptor, this); + qDebug() << __FUNCTION__ << this; + d->exceptNotifier->setObjectName(objectName() + QLatin1String("_ExceptNotifier")); d->exceptNotifier->setEnabled(true); } } diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp index 39b65c9..e9984ec 100644 --- a/src/network/socket/qnativesocketengine_win.cpp +++ b/src/network/socket/qnativesocketengine_win.cpp @@ -49,6 +49,7 @@ #include #include #include +#include //#define QNATIVESOCKETENGINE_DEBUG #if defined(QNATIVESOCKETENGINE_DEBUG) @@ -688,8 +689,10 @@ bool QNativeSocketEnginePrivate::nativeConnect(const QHostAddress &address, quin default: break; } + if (socketState != QAbstractSocket::ConnectedState) { #if defined (QNATIVESOCKETENGINE_DEBUG) + qDebug() << q_func() << __FUNCTION__ << "ERROR #" << socketError << QThread::currentThreadId(); qDebug("QNativeSocketEnginePrivate::nativeConnect(%s, %i) == false (%s)", address.toString().toLatin1().constData(), port, socketState == QAbstractSocket::ConnectingState