From 11e6254179cb78412f40d2a263bf4fb40dd7f2ff Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Wed, 10 Jun 2020 20:04:01 +0200 Subject: Improve memdebug, add basic proxy stats --- proxy.c | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'proxy.c') diff --git a/proxy.c b/proxy.c index 6699c39..c61ad9c 100644 --- a/proxy.c +++ b/proxy.c @@ -35,6 +35,19 @@ proxy_server_free(struct uring_task *task) */ } +void +proxy_delete(struct cfg *cfg, struct server_proxy *proxy) +{ + char cts[] = "13kB"; + char stc[] = "28kB"; + char duration[] = "00:12:23"; + + fprintf(stderr, "%s: would delete proxy 0x%p\n", __func__, proxy); + + fprintf(stderr, "%s: proxy connection %s -> %s closed (CtS: %s, StC: %s), duration %s\n", + proxy->scfg->name, proxy->clientstr, proxy->serverstr, cts, stc, duration); +} + static void proxy_client_data_in(struct cfg *cfg, struct uring_task *task, int res); static void @@ -43,9 +56,12 @@ proxy_client_data_out(struct cfg *cfg, struct uring_task *task, int res) struct server_proxy *proxy = container_of(task, struct server_proxy, clienttask); fprintf(stderr, "%s: result was %i\n", __func__, res); - if (res <= 0) + if (res <= 0) { + proxy_delete(cfg, proxy); return; + } + proxy->client_bytes += res; uring_task_set_fd(&proxy->clienttask, proxy->cfd); uring_tbuf_read(cfg, task, proxy_client_data_in); } @@ -56,8 +72,10 @@ proxy_client_data_in(struct cfg *cfg, struct uring_task *task, int res) struct server_proxy *proxy = container_of(task, struct server_proxy, clienttask); fprintf(stderr, "%s: result was %i\n", __func__, res); - if (res <= 0) + if (res <= 0) { + proxy_delete(cfg, proxy); return; + } uring_task_set_fd(&proxy->clienttask, proxy->sfd); uring_tbuf_write(cfg, task, proxy_client_data_out); @@ -71,9 +89,12 @@ proxy_server_data_out(struct cfg *cfg, struct uring_task *task, int res) struct server_proxy *proxy = container_of(task, struct server_proxy, servertask); fprintf(stderr, "%s: result was %i\n", __func__, res); - if (res <= 0) + if (res <= 0) { + proxy_delete(cfg, proxy); return; + } + proxy->server_bytes += res; uring_task_set_fd(&proxy->servertask, proxy->sfd); uring_tbuf_read(cfg, &proxy->servertask, proxy_server_data_in); } @@ -84,8 +105,10 @@ proxy_server_data_in(struct cfg *cfg, struct uring_task *task, int res) struct server_proxy *proxy = container_of(task, struct server_proxy, servertask); fprintf(stderr, "%s: result was %i\n", __func__, res); - if (res <= 0) + if (res <= 0) { + proxy_delete(cfg, proxy); return; + } uring_task_set_fd(&proxy->servertask, proxy->cfd); uring_tbuf_write(cfg, task, proxy_server_data_out); @@ -106,6 +129,8 @@ proxy_server_connected(struct cfg *cfg, struct uring_task *task, int res) return; } + fprintf(stderr, "%s: proxy connection %s -> %s opened\n", + proxy->scfg->name, proxy->clientstr, proxy->serverstr); uring_tbuf_read(cfg, &proxy->clienttask, proxy_client_data_in); uring_tbuf_read(cfg, &proxy->servertask, proxy_server_data_in); } -- cgit v1.2.3