From 66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f Mon Sep 17 00:00:00 2001 From: zfl9 Date: Thu, 5 Mar 2020 15:48:34 +0800 Subject: use libev instead of libuv --- dnsudp2tcp.c | 14 +++++++++++--- test | Bin 76040 -> 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 Binary files a/test and b/test differ -- cgit v1.2.3