summaryrefslogtreecommitdiff
path: root/proxy.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-06-10 20:04:01 +0200
committerDavid Härdeman <david@hardeman.nu>2020-06-10 20:04:01 +0200
commit11e6254179cb78412f40d2a263bf4fb40dd7f2ff (patch)
treed641877095f16a1c6edb575c41c40b95e43b8004 /proxy.c
parent320f600cd980230b2b2e34c7256c9564af6afae9 (diff)
Improve memdebug, add basic proxy stats
Diffstat (limited to 'proxy.c')
-rw-r--r--proxy.c33
1 files changed, 29 insertions, 4 deletions
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);
}