Actually using async

This commit is contained in:
2022-12-31 02:00:01 +01:00
parent 1547805e4c
commit 816c8c0bfc
3 changed files with 9 additions and 12 deletions

View File

@ -73,20 +73,15 @@ static int request_handler(client_ctx_t *ctx) {
ctx->req_s = clock_micros();
// FIXME async poll
ret = sock_poll_read(&client, NULL, NULL, 1, NULL, NULL, CLIENT_TIMEOUT * 1000);
http_add_header_field(&res->hdr, "Date", http_get_date(buf0, sizeof(buf0)));
http_add_header_field(&res->hdr, "Server", SERVER_STR);
if (ret <= 0) {
/*if (ret <= 0) {
if (errno != 0) return 0;
ctx->c_keep_alive = 0;
res->status = http_get_status(408);
return 0;
}
ctx->req_s = clock_micros();
}*/
http_req *req = &ctx->req;
ret = http_receive_request(client, req);

View File

@ -7,9 +7,7 @@
*/
#include "func.h"
#include "../async.h"
#include "../logger.h"
#include "../lib/mpmc.h"
#include "../lib/utils.h"
#include "../lib/geoip.h"
#include "../workers.h"
@ -24,7 +22,7 @@ static int tcp_acceptor(client_ctx_t *ctx);
void tcp_acceptor_func(client_ctx_t *ctx) {
if (tcp_acceptor(ctx) == 0) {
async(ctx->socket.socket, POLLIN, 0, (void (*)(void *)) handle_request, ctx, (void (*)(void *)) tcp_close, ctx);
handle_request(ctx);
} else {
tcp_close(ctx);
}

View File

@ -10,6 +10,7 @@
#include "lib/mpmc.h"
#include "worker/func.h"
#include "async.h"
static mpmc_t tcp_acceptor_ctx, tcp_closer_ctx, request_handler_ctx,
local_handler_ctx, fastcgi_handler_cxt, proxy_handler_ctx;
@ -50,10 +51,14 @@ int tcp_close(client_ctx_t *ctx) {
return mpmc_queue(&tcp_closer_ctx, ctx);
}
int handle_request(client_ctx_t *ctx) {
static int handle_request_cb(client_ctx_t *ctx) {
return mpmc_queue(&request_handler_ctx, ctx);
}
int handle_request(client_ctx_t *ctx) {
return async(ctx->socket.socket, POLLIN, 0, (void (*)(void *)) handle_request_cb, ctx, (void (*)(void *)) tcp_close, ctx);
}
int local_handle(client_ctx_t *ctx) {
return mpmc_queue(&local_handler_ctx, ctx);
}
@ -65,4 +70,3 @@ int fastcgi_handle(client_ctx_t *ctx) {
int proxy_handle(client_ctx_t *ctx) {
return mpmc_queue(&proxy_handler_ctx, ctx);
}