QxtHttpSessionManager: handle broken connections better

This commit is contained in:
Adam Higerd 2014-10-06 23:10:05 -07:00
parent 4b393e7318
commit 696423b689

View File

@ -562,11 +562,14 @@ void QxtHttpSessionManager::processEvents()
if (content) content->ignoreRemainingContent();
QHash<QPair<int,int>,QxtWebRequestEvent*>::iterator iPending =
qxt_d().pendingRequests.find(QPair<int,int>(sessionID, requestID));
if(iPending != qxt_d().pendingRequests.end()){
if(iPending != qxt_d().pendingRequests.end()) {
delete *iPending;
qxt_d().pendingRequests.erase(iPending);
}
// If no device is returned, the request was aborted before the request body was ready.
if(device)
{
QxtHttpSessionManagerPrivate::ConnectionState& state = qxt_d().connectionState[connector()->getRequestConnection(requestID)];
QIODevice* source;
header.setStatusLine(pe->status, pe->statusMessage, state.httpMajorVersion, state.httpMinorVersion);
@ -639,6 +642,7 @@ void QxtHttpSessionManager::processEvents()
sendNextBlock(requestID, source);
}
}
}
foreach(int id, removeIDs)
{
@ -723,6 +727,7 @@ void QxtHttpSessionManager::sendEmptyChunk(int requestID, QObject* dataSource)
void QxtHttpSessionManager::closeConnection(int requestID)
{
QIODevice* device = connector()->getRequestConnection(requestID);
if(!device) return;
QxtHttpSessionManagerPrivate::ConnectionState& state = qxt_d().connectionState[device];
state.finishedTransfer = true;
QTcpSocket* socket = qobject_cast<QTcpSocket*>(device);