From 50e2cf4ccc2a38941a240aa288872a538d89b3f0 Mon Sep 17 00:00:00 2001 From: Quentin Date: Mon, 24 Feb 2020 19:46:30 +0100 Subject: [PATCH] Find alternative WIP --- src/faketor.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/faketor.c b/src/faketor.c index 984af53..c9d9fee 100644 --- a/src/faketor.c +++ b/src/faketor.c @@ -81,8 +81,15 @@ int faketor_socks5_server_failed(struct evt_core_ctx* ctx, struct evt_core_fdinf int faketor_ctos(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) { char buffer[1600]; ssize_t nread, nwrite; - size_t skip = strlen("socket:"); + size_t skip_socket = strlen("socket:"), skip_torctl = strlen("torctl:"); char url[512]; + struct evt_core_fdinfo *target, *source; + + // 0. find source + if (strstr(fdinfo->url, "socket:") != NULL) target = fdinfo; + else { + sprintf(url, "socket:%s", fdinfo->url); + } // 1. read some data nread = recv(fdinfo->fd, buffer, sizeof(buffer), MSG_PEEK); @@ -90,12 +97,12 @@ int faketor_ctos(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) { if (nread == -1) goto error; // 2. find target - sprintf(url, "torctl:%s:write", fdinfo->url + skip); + sprintf(url, "torctl:%s:write", fdinfo->url + skip_socket); printf("source url: %s, target url: %s", fdinfo->url, url); - struct evt_core_fdinfo *target = evt_core_get_from_url (ctx, url); + target = evt_core_get_from_url (ctx, url); // 3. write to target - nwrite = send(fdinfo->fd, buffer, nread, 0); + nwrite = send(target->fd, buffer, nread, 0); if (nwrite == -1 && errno == EAGAIN) return EVT_CORE_FD_EXHAUSTED; if (nwrite == -1) goto error; nread = recv(fdinfo->fd, buffer, nwrite, 0);