aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar zfl9 <zfl9.com@gmail.com> 2020-03-07 11:01:22 +0800
committerGravatar zfl9 <zfl9.com@gmail.com> 2020-03-07 11:01:22 +0800
commita82311e6e902d9f63fe87d38bc5fb3be088bd5c5 (patch)
treefe03ef6a48253e5e34c07a2c807a7a8dd1432d21
parentuse libev instead of libuv (diff)
downloaddns2tcp-a82311e6e902d9f63fe87d38bc5fb3be088bd5c5.tar.gz
dns2tcp-a82311e6e902d9f63fe87d38bc5fb3be088bd5c5.tar.bz2
dns2tcp-a82311e6e902d9f63fe87d38bc5fb3be088bd5c5.zip
use libev instead of libuv
-rw-r--r--dnsudp2tcp.c26
-rwxr-xr-xtestbin77424 -> 77424 bytes
2 files changed, 16 insertions, 10 deletions
diff --git a/dnsudp2tcp.c b/dnsudp2tcp.c
index 8225db7..20aa5a9 100644
--- a/dnsudp2tcp.c
+++ b/dnsudp2tcp.c
@@ -171,6 +171,13 @@ static void build_sock_addr6(skaddr6_t *addr, const char *ipstr, portno_t portno
inet_pton(AF_INET6, ipstr, &addr->sin6_addr);
addr->sin6_port = htons(portno);
}
+static void build_sock_addr(unsigned ipfamily, void *addr, const char *ipstr, portno_t portno) {
+ if (ipfamily == AF_INET) {
+ build_sock_addr4(addr, ipstr, portno);
+ } else {
+ build_sock_addr6(addr, ipstr, portno);
+ }
+}
static void parse_sock_addr4(const skaddr4_t *addr, char *ipstr, portno_t *portno) {
inet_ntop(AF_INET, &addr->sin_addr, ipstr, IP4STRLEN);
@@ -209,11 +216,15 @@ static void parse_address_opt(char *ip_port_str, bool is_listen_addr) {
char *portstr = strchr(ip_port_str, '#');
if (!portstr) {
- printf("[parse_address_opt] %s port is not specified\n", opt_name);
+ printf("[parse_address_opt] %s port not provided\n", opt_name);
goto PRINT_HELP_AND_EXIT;
}
if (portstr == ip_port_str) {
- printf("[parse_address_opt] %s addr is not specified\n", opt_name);
+ printf("[parse_address_opt] %s addr not provided\n", opt_name);
+ goto PRINT_HELP_AND_EXIT;
+ }
+ if (portstr == ip_port_str + strlen(ip_port_str) - 1) {
+ printf("[parse_address_opt] %s port not provided\n", opt_name);
goto PRINT_HELP_AND_EXIT;
}
@@ -228,7 +239,7 @@ static void parse_address_opt(char *ip_port_str, bool is_listen_addr) {
goto PRINT_HELP_AND_EXIT;
}
- char *ipstr = ip_port_str;
+ const char *ipstr = ip_port_str;
if (strlen(ipstr) + 1 > IP6STRLEN) {
printf("[parse_address_opt] %s addr is invalid: %s\n", opt_name, ipstr);
goto PRINT_HELP_AND_EXIT;
@@ -239,19 +250,14 @@ static void parse_address_opt(char *ip_port_str, bool is_listen_addr) {
goto PRINT_HELP_AND_EXIT;
}
- void *skaddr_ptr = is_listen_addr ? &g_listen_skaddr : &g_remote_skaddr;
- if (ipfamily == AF_INET) {
- build_sock_addr4(skaddr_ptr, ipstr, portno);
- } else {
- build_sock_addr6(skaddr_ptr, ipstr, portno);
- }
-
if (is_listen_addr) {
strcpy(g_listen_ipstr, ipstr);
g_listen_portno = portno;
+ build_sock_addr(ipfamily, &g_listen_skaddr, ipstr, portno);
} else {
strcpy(g_remote_ipstr, ipstr);
g_remote_portno = portno;
+ build_sock_addr(ipfamily, &g_remote_skaddr, ipstr, portno);
}
return;
diff --git a/test b/test
index 3657881..826b543 100755
--- a/test
+++ b/test
Binary files differ