Fix problems with cancelled HTTP requests "corrupting" future requests.

This commit is contained in:
Thulinma 2013-03-14 01:24:43 +01:00
parent e076496244
commit 4608278d6b

View file

@ -262,6 +262,7 @@ namespace Connector_HTTP {
tthread::lock_guard<tthread::mutex> guard(connconn[uid]->in_use); tthread::lock_guard<tthread::mutex> guard(connconn[uid]->in_use);
//if the server connection is dead, handle as timeout. //if the server connection is dead, handle as timeout.
if ( !connconn.count(uid) || !connconn[uid]->conn->connected()){ if ( !connconn.count(uid) || !connconn[uid]->conn->connected()){
connconn[uid]->conn->close();
return Handle_Timeout(H, conn); return Handle_Timeout(H, conn);
} }
//forward the original request //forward the original request
@ -290,6 +291,7 @@ namespace Connector_HTTP {
//keep trying unless the timeout triggers //keep trying unless the timeout triggers
if (timeout++ > 4000){ if (timeout++ > 4000){
std::cout << "[20s timeout triggered]" << std::endl; std::cout << "[20s timeout triggered]" << std::endl;
connconn[uid]->conn->close();
return Handle_Timeout(H, conn); return Handle_Timeout(H, conn);
}else{ }else{
Util::sleep(5); Util::sleep(5);
@ -298,6 +300,7 @@ namespace Connector_HTTP {
} }
if ( !connconn.count(uid) || !connconn[uid]->conn->connected() || !conn->connected()){ if ( !connconn.count(uid) || !connconn[uid]->conn->connected() || !conn->connected()){
//failure, disconnect and sent error to user //failure, disconnect and sent error to user
connconn[uid]->conn->close();
return Handle_Timeout(H, conn); return Handle_Timeout(H, conn);
}else{ }else{
long long int ret = Util::getMS(); long long int ret = Util::getMS();