From c869546ad8688dbb43329bd19e06e6ed8ac1e754 Mon Sep 17 00:00:00 2001 From: fadhil riyanto Date: Tue, 8 Oct 2024 16:31:12 +0700 Subject: add socks5 err code Signed-off-by: fadhil riyanto --- main2.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/main2.c b/main2.c index 5d3ba02..9a49a56 100644 --- a/main2.c +++ b/main2.c @@ -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 == 101) { + 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); } } } -- cgit v1.2.3