In lwip/api/sockets.c, “set_errno(err)” probably not running properly
Posted: Mon Nov 06, 2017 4:01 am
In components/lwip/api/sockets.c, line 437:
When "err" is 0, “set_errno(err)” probably not running properly.
So the value of "errno" is still the last value.
For example in components/lwip/api/sockets.c, line 1504:
Code: Select all
#if LWIP_SOCKET_SET_ERRNO
#ifndef set_errno
#define set_errno(err) do { if (err) { errno = (err); } } while(0)
#endif
#else /* LWIP_SOCKET_SET_ERRNO */
#define set_errno(err)
#endif /* LWIP_SOCKET_SET_ERRNO */
So the value of "errno" is still the last value.
For example in components/lwip/api/sockets.c, line 1504:
Code: Select all
if (i == -1) {
LWIP_DEBUGF(SOCKETS_DEBUG, ("-1 / ENFILE (could not allocate socket)\n"));
netconn_delete(conn);
set_errno(ENFILE);
return -1;
}
conn->socket = i;
LWIP_DEBUGF(SOCKETS_DEBUG, ("%d\n", i));
set_errno(0);
return i;