aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar zfl9 <zfl9.com@gmail.com> 2020-03-05 15:48:34 +0800
committerGravatar zfl9 <zfl9.com@gmail.com> 2020-03-05 15:48:34 +0800
commit66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f (patch)
tree2906ae5dcc1a3364015fd5c1f1bd5f36767b0b60
parentuse libev instead of libuv (diff)
downloaddns2tcp-66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f.tar.gz
dns2tcp-66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f.tar.bz2
dns2tcp-66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f.zip
use libev instead of libuv
-rw-r--r--dnsudp2tcp.c14
-rwxr-xr-xtestbin76040 -> 76184 bytes
2 files changed, 11 insertions, 3 deletions
diff --git a/dnsudp2tcp.c b/dnsudp2tcp.c
index f5aecae..d56c9e7 100644
--- a/dnsudp2tcp.c
+++ b/dnsudp2tcp.c
@@ -66,8 +66,8 @@ typedef struct sockaddr_in6 skaddr6_t;
typedef struct {
evio_t watcher;
- void *buffer;
- uint16_t nrecv;
+ uint8_t buffer[2 + UDPDGRAM_MAXSIZ]; /* msglen(16bit) + msgbuf */
+ uint16_t nrcvsnd;
skaddr6_t srcaddr;
} tcpwatcher_t;
@@ -89,6 +89,7 @@ static skaddr6_t g_listen_skaddr = {0};
static char g_remote_ipstr[IP6STRLEN] = {0};
static portno_t g_remote_portno = 0;
static skaddr6_t g_remote_skaddr = {0};
+static char g_ipstr_buf[IP6STRLEN] = {0};
static void udp_recvmsg_cb(evloop_t *evloop, evio_t *watcher, int events);
static void tcp_connect_cb(evloop_t *evloop, evio_t *watcher, int events);
@@ -372,7 +373,14 @@ int main(int argc, char *argv[]) {
}
static void udp_recvmsg_cb(evloop_t *evloop, evio_t *watcher, int events) {
- // TODO
+ tcpwatcher_t *tcpw = malloc(sizeof(*tcpw));
+ ssize_t nrecv = recvfrom(watcher->fd, tcpw->buffer, UDPDGRAM_MAXSIZ, 0, (void *)&tcpw->srcaddr, &(socklen_t){sizeof(tcpw->srcaddr)});
+ if (nrecv < 0) {
+ LOGERR("[udp_recvmsg_cb] recvfrom(%s#%hu) failed: (%d) %s", g_listen_ipstr, g_listen_portno, errno, strerror(errno));
+ free(tcpw);
+ return;
+ }
+ tcpw->nrcvsnd = 0;
}
static void tcp_connect_cb(evloop_t *evloop, evio_t *watcher, int events) {
diff --git a/test b/test
index 0c4ea00..dfb3107 100755
--- a/test
+++ b/test
Binary files differ