diff options
author | David Härdeman <david@hardeman.nu> | 2020-07-04 12:01:46 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2020-07-04 12:01:46 +0200 |
commit | bf24a9ac317f55ffa85df60ddffd171abc347e65 (patch) | |
tree | 718aa0155cbbe9de1f316aa663f0a73072350ff1 /minecproxy | |
parent | 43830ce2bff25a9acca4268ffaa3a681ac3afec2 (diff) |
Fix splice implementation
Diffstat (limited to 'minecproxy')
-rw-r--r-- | minecproxy/server-proxy.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/minecproxy/server-proxy.c b/minecproxy/server-proxy.c index b8a8988..814b1a9 100644 --- a/minecproxy/server-proxy.c +++ b/minecproxy/server-proxy.c @@ -135,9 +135,9 @@ void proxy_delete(struct server_proxy *proxy) /* * These four functions provide the fallback read-write mode */ -static void proxy_client_read(struct uring_task *task, int res); +static void proxy_client_read_in(struct uring_task *task, int res); -static void proxy_client_written(struct uring_task *task, int res) +static void proxy_client_written_out(struct uring_task *task, int res) { struct server_proxy *proxy = container_of(task, struct server_proxy, clienttask); @@ -153,10 +153,10 @@ static void proxy_client_written(struct uring_task *task, int res) proxy->client_bytes += res; uring_task_set_fd(&proxy->clienttask, proxy->cfd); - uring_tbuf_read(task, proxy_client_read); + uring_tbuf_read(task, proxy_client_read_in); } -static void proxy_client_read(struct uring_task *task, int res) +static void proxy_client_read_in(struct uring_task *task, int res) { struct server_proxy *proxy = container_of(task, struct server_proxy, clienttask); @@ -171,12 +171,12 @@ static void proxy_client_read(struct uring_task *task, int res) } uring_task_set_fd(&proxy->clienttask, proxy->sfd); - uring_tbuf_write(task, proxy_client_written); + uring_tbuf_write(task, proxy_client_written_out); } -static void proxy_server_read(struct uring_task *task, int res); +static void proxy_server_read_in(struct uring_task *task, int res); -static void proxy_server_written(struct uring_task *task, int res) +static void proxy_server_written_out(struct uring_task *task, int res) { struct server_proxy *proxy = container_of(task, struct server_proxy, servertask); @@ -192,10 +192,10 @@ static void proxy_server_written(struct uring_task *task, int res) proxy->server_bytes += res; uring_task_set_fd(&proxy->servertask, proxy->sfd); - uring_tbuf_read(&proxy->servertask, proxy_server_read); + uring_tbuf_read(&proxy->servertask, proxy_server_read_in); } -static void proxy_server_read(struct uring_task *task, int res) +static void proxy_server_read_in(struct uring_task *task, int res) { struct server_proxy *proxy = container_of(task, struct server_proxy, servertask); @@ -210,7 +210,7 @@ static void proxy_server_read(struct uring_task *task, int res) } uring_task_set_fd(&proxy->servertask, proxy->cfd); - uring_tbuf_write(task, proxy_server_written); + uring_tbuf_write(task, proxy_server_written_out); } /* @@ -221,7 +221,7 @@ static void proxy_client_spliced_in(struct uring_task *task, int res); static void proxy_client_spliced_out(struct uring_task *task, int res) { struct server_proxy *proxy = - container_of(task, struct server_proxy, servertask); + container_of(task, struct server_proxy, clienttask); assert_return(task); assert_task_alive(DBG_PROXY, task); @@ -232,6 +232,7 @@ static void proxy_client_spliced_out(struct uring_task *task, int res) return; } + proxy->client_bytes += res; uring_splice(task, proxy->cfd, proxy->cpipe[PIPE_WR], proxy_client_spliced_in); } @@ -239,7 +240,7 @@ static void proxy_client_spliced_out(struct uring_task *task, int res) static void proxy_client_spliced_in(struct uring_task *task, int res) { struct server_proxy *proxy = - container_of(task, struct server_proxy, servertask); + container_of(task, struct server_proxy, clienttask); assert_return(task); assert_task_alive(DBG_PROXY, task); @@ -270,6 +271,7 @@ static void proxy_server_spliced_out(struct uring_task *task, int res) return; } + proxy->server_bytes += res; uring_splice(task, proxy->sfd, proxy->spipe[PIPE_WR], proxy_server_spliced_in); } @@ -326,8 +328,8 @@ static void proxy_connected_cb(struct connection *conn, bool connected) proxy->spipe[PIPE_WR], proxy_server_spliced_in); } else { debug(DBG_PROXY, "handling proxy connection with read-write"); - uring_tbuf_read(&proxy->clienttask, proxy_client_read); - uring_tbuf_read(&proxy->servertask, proxy_server_read); + uring_tbuf_read(&proxy->clienttask, proxy_client_read_in); + uring_tbuf_read(&proxy->servertask, proxy_server_read_in); } } |