summaryrefslogtreecommitdiff
path: root/proxy.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-06-05 22:04:01 +0200
committerDavid Härdeman <david@hardeman.nu>2020-06-05 22:04:01 +0200
commit8e301216143cb96d39a941a9c5fcb90319ef53c7 (patch)
tree066ea8b408ff49e20e2be2303364a35ff1731d15 /proxy.c
parenta683051b05930d1dd2766b98494bbd124817a6dd (diff)
Add enough functionality to actually be able to proxy a connection
Diffstat (limited to 'proxy.c')
-rw-r--r--proxy.c7
1 files changed, 7 insertions, 0 deletions
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));