summaryrefslogtreecommitdiff
path: root/proxy.c
diff options
context:
space:
mode:
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);
}