From 8e301216143cb96d39a941a9c5fcb90319ef53c7 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Fri, 5 Jun 2020 22:04:01 +0200 Subject: Add enough functionality to actually be able to proxy a connection --- proxy.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'proxy.c') diff --git a/proxy.c b/proxy.c index 28760e4..e5a4eff 100644 --- a/proxy.c +++ b/proxy.c @@ -51,6 +51,7 @@ proxy_client_data_out(struct cfg *cfg, struct uring_task *task, int res) return; } + uring_task_set_fd(&proxy->clienttask, proxy->cfd); uring_read(cfg, task, proxy->clientbuf, sizeof(proxy->clientbuf), 0, proxy_client_data_in); } @@ -64,6 +65,7 @@ proxy_client_data_in(struct cfg *cfg, struct uring_task *task, int res) return; proxy->clientlen = res; + uring_task_set_fd(&proxy->clienttask, proxy->sfd); uring_write(cfg, task, proxy->clientbuf, res, proxy_client_data_out); } @@ -83,6 +85,7 @@ proxy_server_data_out(struct cfg *cfg, struct uring_task *task, int res) return; } + uring_task_set_fd(&proxy->servertask, proxy->sfd); uring_read(cfg, task, proxy->serverbuf, sizeof(proxy->serverbuf), 0, proxy_server_data_in); } @@ -96,6 +99,7 @@ proxy_server_data_in(struct cfg *cfg, struct uring_task *task, int res) return; proxy->serverlen = res; + uring_task_set_fd(&proxy->servertask, proxy->cfd); uring_write(cfg, task, proxy->serverbuf, res, proxy_server_data_out); } @@ -152,6 +156,7 @@ again: goto again; } + proxy->sfd = sfd; uring_task_set_fd(&proxy->servertask, sfd); uring_connect(cfg, &proxy->servertask, &proxy->server, proxy_server_connected); } @@ -167,6 +172,8 @@ proxy_new(struct cfg *cfg, struct server *scfg, struct sockaddr_in46 *client, in return NULL; } + proxy->sfd = -1; + proxy->cfd = fd; proxy->scfg = scfg; proxy->client = *client; sockaddr_to_str(&proxy->client, proxy->clientstr, sizeof(proxy->clientstr)); -- cgit v1.2.3