In function evconnlistener_new_bind() after go to "err:", The
evutil_closesocket() would clear the error code( I found this under
Windows ). User can not use EVUTIL_SOCKET_ERROR() to get the
evconnlistener_new_bind()'s failing error.
I add a err_code variable to store and restore the last error code.
v2: rebased by azat to make the patch simpler
return listener;
err:
- evutil_closesocket(fd);
- return NULL;
+ {
+ int saved_errno = EVUTIL_SOCKET_ERROR();
+ evutil_closesocket(fd);
+ if (saved_errno)
+ EVUTIL_SET_SOCKET_ERROR(saved_errno);
+ return NULL;
+ }
}
void