Update workers

This commit is contained in:
2022-12-29 21:47:42 +01:00
parent 7a2acb0e66
commit 5d27cf0398
2 changed files with 17 additions and 7 deletions

View File

@ -22,7 +22,7 @@
#include <openssl/err.h> #include <openssl/err.h>
#include <arpa/inet.h> #include <arpa/inet.h>
static void responder(client_ctx_t *ctx); static int responder(client_ctx_t *ctx);
void responder_func(client_ctx_t *ctx) { void responder_func(client_ctx_t *ctx) {
logger_set_prefix("[%s%*s%s]%s", BLD_STR, INET6_ADDRSTRLEN, ctx->req_host, CLR_STR, ctx->log_prefix); logger_set_prefix("[%s%*s%s]%s", BLD_STR, INET6_ADDRSTRLEN, ctx->req_host, CLR_STR, ctx->log_prefix);
@ -35,7 +35,7 @@ void responder_func(client_ctx_t *ctx) {
} }
} }
static void responder(client_ctx_t *ctx) { static int responder(client_ctx_t *ctx) {
sock *client = &ctx->socket; sock *client = &ctx->socket;
long ret = 0; long ret = 0;
@ -223,4 +223,6 @@ static void responder(client_ctx_t *ctx) {
} }
http_free_req(req); http_free_req(req);
http_free_res(res); http_free_res(res);
return 0;
} }

View File

@ -19,7 +19,17 @@
#include <openssl/ssl.h> #include <openssl/ssl.h>
#include <openssl/err.h> #include <openssl/err.h>
static int tcp_acceptor(client_ctx_t *ctx);
void tcp_acceptor_func(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);
} else {
tcp_close(ctx);
}
}
static int tcp_acceptor(client_ctx_t *ctx) {
struct sockaddr_in6 server_addr; struct sockaddr_in6 server_addr;
inet_ntop(ctx->socket.addr.ipv6.sin6_family, &ctx->socket.addr.ipv6.sin6_addr, ctx->_c_addr, sizeof(ctx->_c_addr)); inet_ntop(ctx->socket.addr.ipv6.sin6_family, &ctx->socket.addr.ipv6.sin6_addr, ctx->_c_addr, sizeof(ctx->_c_addr));
@ -86,8 +96,7 @@ void tcp_acceptor_func(client_ctx_t *ctx) {
setsockopt(client->socket, SOL_SOCKET, SO_SNDTIMEO, &client_timeout, sizeof(client_timeout)) == -1) setsockopt(client->socket, SOL_SOCKET, SO_SNDTIMEO, &client_timeout, sizeof(client_timeout)) == -1)
{ {
error("Unable to set timeout for socket"); error("Unable to set timeout for socket");
tcp_close(ctx); return -1;
return;
} }
if (client->enc) { if (client->enc) {
@ -101,8 +110,7 @@ void tcp_acceptor_func(client_ctx_t *ctx) {
client->_ssl_error = ERR_get_error(); client->_ssl_error = ERR_get_error();
if (ret <= 0) { if (ret <= 0) {
info("Unable to perform handshake: %s", sock_strerror(client)); info("Unable to perform handshake: %s", sock_strerror(client));
tcp_close(ctx); return - 1;
return;
} }
} }
@ -110,5 +118,5 @@ void tcp_acceptor_func(client_ctx_t *ctx) {
ctx->s_keep_alive = 1; ctx->s_keep_alive = 1;
ctx->c_keep_alive = 1; ctx->c_keep_alive = 1;
async(ctx->socket.socket, POLLIN, 0, (void (*)(void *)) handle_request, ctx, (void (*)(void *)) tcp_close, ctx); return 0;
} }