Actually using async
This commit is contained in:
		@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user