diff options
author | fadhil riyanto <me@fadev.org> | 2024-10-08 19:18:49 +0700 |
---|---|---|
committer | fadhil riyanto <me@fadev.org> | 2024-10-08 19:18:49 +0700 |
commit | cbbaf6283ecb185d91192a2eadb0dc8e2ffc6048 (patch) | |
tree | a3f5ed1f47312923bbc6a24a5e89861d5a9c2197 | |
parent | 8872aa62ae025f607d2959ef9884afb38a625f62 (diff) | |
parent | b7eccb556bee7d172fb1426ab51e36e441242835 (diff) |
Merge branch 'master' into ipv6
Signed-off-by: fadhil riyanto <me@fadev.org>
-rw-r--r-- | main2.c | 25 | ||||
-rw-r--r-- | test/connect.c | 4 |
2 files changed, 26 insertions, 3 deletions
@@ -617,6 +617,19 @@ static int start_unpack_packet(int fd, void* reserved, struct socks5_session *so return 1; } +/* + o X'00' succeeded + o X'01' general SOCKS server failure + o X'02' connection not allowed by ruleset + o X'03' Network unreachable + o X'04' Host unreachable + o X'05' Connection refused + o X'06' TTL expired + o X'07' Command not supported + o X'08' Address type not supported + o X'09' to X'FF' unassigned +*/ + static int create_server2server_conn(int *fdptr, int atyp, u_int8_t *addr, u_int16_t port) { int ret = 0; @@ -642,8 +655,15 @@ static int create_server2server_conn(int *fdptr, int atyp, u_int8_t *addr, u_int ret = connect(tcpfd, (struct sockaddr*)&serv_addr, len); if (ret == -1) { + ret = errno; + perror("connect()"); - return -1; + log_error("errno: %d", ret); + + if (ret == 111) { + return 3; + } + // return -1; } *fdptr = tcpfd; @@ -1061,6 +1081,9 @@ static int start_unpack_packet_no_epl(int fd, void* reserved, struct socks5_sess close(fd); return 0; } + } else { + socks5_send_connstate(fd, 3, next_req->atyp, next_req->dest, + next_req->port); } } else if (buf[3] == 4) { log_info("ipv6 conn requested"); diff --git a/test/connect.c b/test/connect.c index 5b2ddf3..94fcd07 100644 --- a/test/connect.c +++ b/test/connect.c @@ -14,8 +14,8 @@ int main(int argc, char *argv) struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(struct sockaddr_in)); - serv_addr.sin_addr.s_addr = inet_addr("93.184.215.14"); - serv_addr.sin_port = htons(443); + serv_addr.sin_addr.s_addr = inet_addr("192.168.2.2"); + serv_addr.sin_port = htons(3080); serv_addr.sin_family = AF_INET; socklen_t len = sizeof(struct sockaddr_in); |