summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfadhil riyanto <me@fadev.org>2024-10-08 16:31:12 +0700
committerfadhil riyanto <me@fadev.org>2024-10-08 16:31:12 +0700
commitc869546ad8688dbb43329bd19e06e6ed8ac1e754 (patch)
tree01886dc0edb40945327eae9b8dc1de27fb06bb8b
parentfb3bc9543450369f5020da27f2b6602a5c852494 (diff)
add socks5 err code
Signed-off-by: fadhil riyanto <me@fadev.org>
-rw-r--r--main2.c25
1 files changed, 24 insertions, 1 deletions
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);
}
}
}