From d1f890160617aa4c92fb534005050e339cd4d47e Mon Sep 17 00:00:00 2001 From: mom040267 Date: Wed, 4 Feb 2015 09:18:28 +0000 Subject: [PATCH] TOS fixed for Linux --- src/apps/relay/dtls_listener.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/apps/relay/dtls_listener.c b/src/apps/relay/dtls_listener.c index 0b5df85..2d591c4 100644 --- a/src/apps/relay/dtls_listener.c +++ b/src/apps/relay/dtls_listener.c @@ -638,14 +638,14 @@ static void udp_server_input_handler(evutil_socket_t fd, short what, void* arg) addr_set_any(&(server->sm.m.sm.nd.src_addr)); - int slen = server->slen0; ssize_t bsize = 0; - int flags = 0; + int flags = MSG_DONTWAIT; - do { - bsize = recvfrom(fd, ioa_network_buffer_data(elem), ioa_network_buffer_get_capacity_udp(), flags, (struct sockaddr*) &(server->sm.m.sm.nd.src_addr), (socklen_t*) &slen); - } while (bsize < 0 && (errno == EINTR)); + bsize = udp_recvfrom(fd, &(server->sm.m.sm.nd.src_addr), &(server->addr), + (s08bits*)ioa_network_buffer_data(elem), (int)ioa_network_buffer_get_capacity_udp(), + &(server->sm.m.sm.nd.recv_ttl), &(server->sm.m.sm.nd.recv_tos), + server->e->cmsg, flags, NULL); int conn_reset = is_connreset(); int to_block = would_block(); @@ -668,6 +668,7 @@ static void udp_server_input_handler(evutil_socket_t fd, short what, void* arg) ioa_addr orig_addr; int ttl = 0; int tos = 0; + int slen = server->slen0; udp_recvfrom(fd, &orig_addr, &(server->addr), buffer, (int) sizeof(buffer), &ttl, &tos, server->e->cmsg, eflags, &errcode);