diff options
author | zfl9 <zfl9.com@gmail.com> | 2020-03-05 15:48:34 +0800 |
---|---|---|
committer | zfl9 <zfl9.com@gmail.com> | 2020-03-05 15:48:34 +0800 |
commit | 66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f (patch) | |
tree | 2906ae5dcc1a3364015fd5c1f1bd5f36767b0b60 | |
parent | use libev instead of libuv (diff) | |
download | dns2tcp-66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f.tar.gz dns2tcp-66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f.tar.bz2 dns2tcp-66d6de074a9cafe9ce1da2fc2892f5dd1d1d715f.zip |
use libev instead of libuv
-rw-r--r-- | dnsudp2tcp.c | 14 | ||||
-rwxr-xr-x | 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) { Binary files differ |