Merge pull request #6697 from francois-berder-imgtec/awalwm2m

posix: sockets: Small fixes for listen and recvfrom functions
This commit is contained in:
Martine Lenders 2017-03-11 19:22:35 +01:00 committed by GitHub
commit 4a51d1b433

View File

@ -752,7 +752,7 @@ int listen(int socket, int backlog)
bf_unset(_sock_pool_used, _get_sock_idx(sock)); bf_unset(_sock_pool_used, _get_sock_idx(sock));
mutex_unlock(&_socket_pool_mutex); mutex_unlock(&_socket_pool_mutex);
} }
return -res; return res;
#else #else
(void)socket; (void)socket;
(void)backlog; (void)backlog;
@ -786,8 +786,7 @@ ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags,
#endif #endif
/* bind implicitly */ /* bind implicitly */
if ((res = _bind_connect(s, NULL, 0)) < 0) { if ((res = _bind_connect(s, NULL, 0)) < 0) {
errno = -res; return res;
return -1;
} }
} }
switch (s->type) { switch (s->type) {
@ -814,7 +813,7 @@ ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags,
#ifdef MODULE_SOCK_UDP #ifdef MODULE_SOCK_UDP
case SOCK_DGRAM: case SOCK_DGRAM:
/* TODO: apply configured timeout */ /* TODO: apply configured timeout */
if ((res = sock_udp_recv(&s->sock->udp, buffer, length, 0, if ((res = sock_udp_recv(&s->sock->udp, buffer, length, SOCK_NO_TIMEOUT,
&ep)) < 0) { &ep)) < 0) {
errno = -res; errno = -res;
res = -1; res = -1;
@ -826,7 +825,7 @@ ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags,
res = -1; res = -1;
break; break;
} }
if ((res == 0) && (address != NULL) && (address_len != 0)) { if ((res >= 0) && (address != NULL) && (address_len != 0)) {
switch (s->type) { switch (s->type) {
#ifdef MODULE_SOCK_TCP #ifdef MODULE_SOCK_TCP
case SOCK_STREAM: case SOCK_STREAM:
@ -873,8 +872,7 @@ ssize_t sendto(int socket, const void *buffer, size_t length, int flags,
#endif #endif
/* bind implicitly */ /* bind implicitly */
if ((res = _bind_connect(s, NULL, 0)) < 0) { if ((res = _bind_connect(s, NULL, 0)) < 0) {
errno = -res; return res;
return -1;
} }
} }
#if defined(MODULE_SOCK_IP) || defined(MODULE_SOCK_UDP) #if defined(MODULE_SOCK_IP) || defined(MODULE_SOCK_UDP)