mirror of
https://github.com/openappsec/attachment.git
synced 2026-01-17 16:00:26 +03:00
Implemented Async Request Start, Request Header, Request Body, Request End in async manner.
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
#include "nano_attachment_common.h"
|
||||
#include "nano_initializer.h"
|
||||
#include "nano_attachment_io.h"
|
||||
#include "nano_attachment_sender_thread.h"
|
||||
|
||||
NanoCommunicationResult
|
||||
RegistrationCommSocketAsyncImpl(
|
||||
@@ -32,9 +34,33 @@ SendRequestFilterAsyncImpl(
|
||||
HttpRequestFilterData *start_data
|
||||
)
|
||||
{
|
||||
(void)attachment;
|
||||
(void)session_data_p;
|
||||
(void)start_data;
|
||||
NanoCommunicationResult res;
|
||||
|
||||
if (start_data == NULL) {
|
||||
return NANO_ERROR;
|
||||
}
|
||||
|
||||
if (start_data->meta_data != NULL) {
|
||||
res = SendMetadataAsyncImpl(attachment, session_data_p, start_data->meta_data);
|
||||
if (res != NANO_OK) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
if (start_data->req_headers != NULL) {
|
||||
res = SendRequestHeadersAsyncImpl(attachment, session_data_p, start_data->req_headers);
|
||||
if (res != NANO_OK) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
if (!start_data->contains_body) {
|
||||
res = SendRequestEndAsyncImpl(attachment, session_data_p);
|
||||
if (res != NANO_OK) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
return NANO_OK;
|
||||
}
|
||||
|
||||
@@ -45,10 +71,30 @@ SendMetadataAsyncImpl(
|
||||
HttpMetaData *metadata
|
||||
)
|
||||
{
|
||||
(void)attachment;
|
||||
(void)session_data_p;
|
||||
(void)metadata;
|
||||
return NANO_OK;
|
||||
HttpEventThreadCtx ctx;
|
||||
bool is_verdict_requested = false;
|
||||
|
||||
if (attachment == NULL || session_data_p == NULL || metadata == NULL) {
|
||||
return NANO_ERROR;
|
||||
}
|
||||
|
||||
ctx.attachment = attachment;
|
||||
ctx.data = NULL;
|
||||
ctx.session_data_p = session_data_p;
|
||||
ctx.res = NANO_OK;
|
||||
ctx.web_response_data = NULL;
|
||||
ctx.modifications = NULL;
|
||||
|
||||
nano_metadata_sender(
|
||||
attachment,
|
||||
metadata,
|
||||
&ctx,
|
||||
session_data_p->session_id,
|
||||
&session_data_p->remaining_messages_to_reply,
|
||||
is_verdict_requested
|
||||
);
|
||||
|
||||
return ctx.res;
|
||||
}
|
||||
|
||||
NanoCommunicationResult
|
||||
@@ -58,10 +104,31 @@ SendRequestHeadersAsyncImpl(
|
||||
HttpHeaders *headers
|
||||
)
|
||||
{
|
||||
(void)attachment;
|
||||
(void)session_data_p;
|
||||
(void)headers;
|
||||
return NANO_OK;
|
||||
HttpEventThreadCtx ctx;
|
||||
bool is_verdict_requested = false;
|
||||
|
||||
if (attachment == NULL || session_data_p == NULL || headers == NULL) {
|
||||
return NANO_ERROR;
|
||||
}
|
||||
|
||||
ctx.attachment = attachment;
|
||||
ctx.data = NULL;
|
||||
ctx.session_data_p = session_data_p;
|
||||
ctx.res = NANO_OK;
|
||||
ctx.web_response_data = NULL;
|
||||
ctx.modifications = NULL;
|
||||
|
||||
nano_header_sender(
|
||||
attachment,
|
||||
headers,
|
||||
&ctx,
|
||||
REQUEST_HEADER,
|
||||
session_data_p->session_id,
|
||||
&session_data_p->remaining_messages_to_reply,
|
||||
is_verdict_requested
|
||||
);
|
||||
|
||||
return ctx.res;
|
||||
}
|
||||
|
||||
NanoCommunicationResult
|
||||
@@ -84,10 +151,30 @@ SendRequestBodyAsyncImpl(
|
||||
NanoHttpBody *bodies
|
||||
)
|
||||
{
|
||||
(void)attachment;
|
||||
(void)session_data_p;
|
||||
(void)bodies;
|
||||
return NANO_OK;
|
||||
HttpEventThreadCtx ctx;
|
||||
|
||||
if (attachment == NULL || session_data_p == NULL || bodies == NULL) {
|
||||
return NANO_ERROR;
|
||||
}
|
||||
|
||||
ctx.attachment = attachment;
|
||||
ctx.data = NULL;
|
||||
ctx.session_data_p = session_data_p;
|
||||
ctx.res = NANO_OK;
|
||||
ctx.web_response_data = NULL;
|
||||
ctx.modifications = NULL;
|
||||
|
||||
nano_body_sender(
|
||||
attachment,
|
||||
bodies,
|
||||
&ctx,
|
||||
REQUEST_BODY,
|
||||
session_data_p->session_id,
|
||||
&session_data_p->remaining_messages_to_reply,
|
||||
false
|
||||
);
|
||||
|
||||
return ctx.res;
|
||||
}
|
||||
|
||||
NanoCommunicationResult
|
||||
@@ -109,9 +196,29 @@ SendRequestEndAsyncImpl(
|
||||
HttpSessionData *session_data_p
|
||||
)
|
||||
{
|
||||
(void)attachment;
|
||||
(void)session_data_p;
|
||||
return NANO_OK;
|
||||
HttpEventThreadCtx ctx;
|
||||
|
||||
if (attachment == NULL || session_data_p == NULL) {
|
||||
return NANO_ERROR;
|
||||
}
|
||||
|
||||
ctx.attachment = attachment;
|
||||
ctx.data = NULL;
|
||||
ctx.session_data_p = session_data_p;
|
||||
ctx.res = NANO_OK;
|
||||
ctx.web_response_data = NULL;
|
||||
ctx.modifications = NULL;
|
||||
|
||||
nano_end_transaction_sender(
|
||||
attachment,
|
||||
REQUEST_END,
|
||||
&ctx,
|
||||
session_data_p->session_id,
|
||||
&session_data_p->remaining_messages_to_reply,
|
||||
false
|
||||
);
|
||||
|
||||
return ctx.res;
|
||||
}
|
||||
|
||||
NanoCommunicationResult
|
||||
|
||||
Reference in New Issue
Block a user