diff --git a/src/network/http_message.cpp b/src/network/http_message.cpp index 7ba0556..ceafe05 100644 --- a/src/network/http_message.cpp +++ b/src/network/http_message.cpp @@ -1,4 +1,5 @@ #include "network/http_message.hpp" +#include "network/http_response.hpp" #include "network/message_result.hpp" #include "utils/data_vector.hpp" #include "utils/timer.hpp" @@ -98,8 +99,13 @@ MessageState HTTPMessage::execute(IOUringSocket& socket) socket.disconnect(request->fd, originalMessage->hostname, originalMessage->port, &tcpSettings, static_cast(sendBufferOffset + receiveBufferOffset)); originalMessage->result.size = info->length; originalMessage->result.offset = info->headerLength; - state = MessageState::Finished; - return MessageState::Finished; + if (info->response.code == HttpResponse::Code::OK_200) { + state = MessageState::Finished; + } else { + originalMessage->result.failureCode |= static_cast(MessageFailureCode::HTTP); + state = MessageState::Aborted; + } + return state; } } catch (exception&) { originalMessage->result.failureCode |= static_cast(MessageFailureCode::HTTP); diff --git a/src/network/https_message.cpp b/src/network/https_message.cpp index 5f3e085..e9d1e66 100644 --- a/src/network/https_message.cpp +++ b/src/network/https_message.cpp @@ -104,6 +104,12 @@ MessageState HTTPSMessage::execute(IOUringSocket& socket) if (HttpHelper::finished(receive.data(), static_cast(receiveBufferOffset), info)) { originalMessage->result.size = info->length; originalMessage->result.offset = info->headerLength; + if (info->response.code == HttpResponse::Code::OK_200) { + state = MessageState::TLSShutdown; + } else { + originalMessage->result.failureCode |= static_cast(MessageFailureCode::HTTP); + reset(socket, true); + } state = MessageState::TLSShutdown; return execute(socket); } else {