diff options
author | fadhil riyanto <me@fadev.org> | 2024-10-08 16:31:12 +0700 |
---|---|---|
committer | fadhil riyanto <me@fadev.org> | 2024-10-08 16:31:12 +0700 |
commit | c869546ad8688dbb43329bd19e06e6ed8ac1e754 (patch) | |
tree | 01886dc0edb40945327eae9b8dc1de27fb06bb8b | |
parent | fb3bc9543450369f5020da27f2b6602a5c852494 (diff) |
add socks5 err code
Signed-off-by: fadhil riyanto <me@fadev.org>
-rw-r--r-- | main2.c | 25 |
1 files changed, 24 insertions, 1 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 == 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); } } } |