From c1481865754f3aa6b9469dbb201108396cbc6c24 Mon Sep 17 00:00:00 2001 From: Monika Wenger Date: Sun, 24 Mar 2024 17:19:24 +0100 Subject: [PATCH] [HTTP] change start time and current time for timeout to monotonic --- src/com/HTTP/http_handler.cpp | 10 ++++------ src/com/HTTP/http_handler.h | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/com/HTTP/http_handler.cpp b/src/com/HTTP/http_handler.cpp index 18dbe5b0..d22fe9fd 100644 --- a/src/com/HTTP/http_handler.cpp +++ b/src/com/HTTP/http_handler.cpp @@ -109,7 +109,7 @@ forte::com_infra::EComResponse CHTTP_Handler::recvData(const void *paData, unsig CCriticalRegion criticalRegion(mAcceptedMutex); HTTPAcceptedSockets *accepted = new HTTPAcceptedSockets(); accepted->mSocket = newConnection; - accepted->mStartTime = func_NOW(); + accepted->mStartTime = func_NOW_MONOTONIC(); mAcceptedSockets.pushBack(accepted); getExtEvHandler().addComCallback(newConnection, this); resumeSelfsuspend(); @@ -250,7 +250,7 @@ bool CHTTP_Handler::sendClientData(forte::com_infra::CHttpComLayer *paLayer, con HTTPClientWaiting *toAdd = new HTTPClientWaiting(); toAdd->mLayer = paLayer; toAdd->mSocket = newSocket; - toAdd->mStartTime = func_NOW(); + toAdd->mStartTime = func_NOW_MONOTONIC(); startTimeoutThread(); mClientLayers.pushBack(toAdd); getExtEvHandler().addComCallback(newSocket, this); @@ -346,8 +346,7 @@ void CHTTP_Handler::checkClientLayers() { CSinglyLinkedList clientsToDelete; for(CSinglyLinkedList::Iterator iter = mClientLayers.begin(); iter != mClientLayers.end(); ++iter) { // wait until result is ready - CIEC_DATE_AND_TIME currentTime(func_NOW()); - if(currentTime.getMilliSeconds() - (*iter)->mStartTime.getMilliSeconds() > scmSendTimeout * 1000) { + if(func_NOW_MONOTONIC().getInMilliSeconds() > (*iter)->mStartTime.getInMilliSeconds() + scmSendTimeout * 1000) { DEVLOG_ERROR("[HTTP Handler]: Timeout at client %s:%u \n", (*iter)->mLayer->getHost().c_str(), (*iter)->mLayer->getPort()); removeAndCloseSocket((*iter)->mSocket); clientsToDelete.pushBack(*iter); @@ -372,8 +371,7 @@ void CHTTP_Handler::checkAcceptedSockets() { CSinglyLinkedList acceptedToDelete; for(CSinglyLinkedList::Iterator iter = mAcceptedSockets.begin(); iter != mAcceptedSockets.end(); ++iter) { // wait until result is ready - CIEC_DATE_AND_TIME currentTime(func_NOW()); - if(currentTime.getMilliSeconds() - (*iter)->mStartTime.getMilliSeconds() > scmAcceptedTimeout * 1000) { + if(func_NOW_MONOTONIC().getInMilliSeconds() > (*iter)->mStartTime.getInMilliSeconds() + scmAcceptedTimeout * 1000) { DEVLOG_ERROR("[HTTP Handler]: Timeout at accepted socket\n"); removeAndCloseSocket((*iter)->mSocket); acceptedToDelete.pushBack(*iter); diff --git a/src/com/HTTP/http_handler.h b/src/com/HTTP/http_handler.h index 529f26fb..f3785f84 100644 --- a/src/com/HTTP/http_handler.h +++ b/src/com/HTTP/http_handler.h @@ -111,12 +111,12 @@ class CHTTP_Handler : public CExternalEventHandler, public CThread, public forte struct HTTPClientWaiting { forte::com_infra::CHttpComLayer* mLayer; CIPComSocketHandler::TSocketDescriptor mSocket; - CIEC_DATE_AND_TIME mStartTime; + CIEC_TIME mStartTime; }; struct HTTPAcceptedSockets { CIPComSocketHandler::TSocketDescriptor mSocket; - CIEC_DATE_AND_TIME mStartTime; + CIEC_TIME mStartTime; }; CSinglyLinkedList mServerLayers;