From 5f3ba2b9710e8f91e5ca99f009cf1233980eb934 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Mon, 23 Jan 2023 23:35:53 +0100 Subject: [PATCH] Add sock_init() --- src/lib/proxy.c | 5 +++-- src/lib/sock.c | 9 +++++++++ src/lib/sock.h | 2 ++ src/server.c | 5 +---- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/lib/proxy.c b/src/lib/proxy.c index 9162f09..c4b6815 100644 --- a/src/lib/proxy.c +++ b/src/lib/proxy.c @@ -315,13 +315,14 @@ int proxy_init(proxy_ctx_t **proxy_ptr, http_req *req, http_res *res, http_statu retry = 0; tries++; - proxy->proxy.socket = socket(AF_INET6, SOCK_STREAM, 0); - if (proxy->proxy.socket < 0) { + int fd; + if ((fd = socket(AF_INET6, SOCK_STREAM, 0)) == -1) { error("Unable to create socket"); res->status = http_get_status(500); ctx->origin = INTERNAL; return -1; } + sock_init(&proxy->proxy, fd, 0); if (sock_set_socket_timeout(&proxy->proxy, 1) != 0 || sock_set_timeout(&proxy->proxy, SERVER_TIMEOUT_INIT) != 0) goto proxy_timeout_err; diff --git a/src/lib/sock.c b/src/lib/sock.c index 2bd7417..1692672 100644 --- a/src/lib/sock.c +++ b/src/lib/sock.c @@ -60,6 +60,15 @@ const char *sock_error_str(unsigned long err) { } } +int sock_init(sock *s, int fd, int enc) { + s->socket = fd; + s->enc = enc; + s->ts_start = clock_micros(); + s->ts_last = s->ts_start; + s->timeout_us = -1; + return 0; +} + int sock_set_socket_timeout_micros(sock *s, long recv_micros, long send_micros) { struct timeval recv_to = {.tv_sec = recv_micros / 1000000, .tv_usec = recv_micros % 1000000}, send_to = {.tv_sec = send_micros / 1000000, .tv_usec = send_micros % 1000000}; diff --git a/src/lib/sock.h b/src/lib/sock.h index 4a273b3..38047e0 100644 --- a/src/lib/sock.h +++ b/src/lib/sock.h @@ -33,6 +33,8 @@ void sock_error(sock *s, int ret); const char *sock_error_str(unsigned long err); +int sock_init(sock *s, int fd, int enc); + int sock_set_socket_timeout_micros(sock *s, long recv_micros, long send_micros); int sock_set_socket_timeout(sock *s, double sec); diff --git a/src/server.c b/src/server.c index 8d066f0..4f2fb83 100644 --- a/src/server.c +++ b/src/server.c @@ -135,10 +135,7 @@ static void accept_cb(void *arg) { return; } - client->socket = client_fd; - client->enc = (i == 1); - client->ts_start = clock_micros(); - client->ts_last = client->ts_start; + sock_init(client, client_fd, (i == 1)); client_ctx->cnx_s = client->ts_start; client_ctx->cnx_e = -1, client_ctx->req_s = -1, client_ctx->req_e = -1, client_ctx->res_ts = -1;