rktio: fix Windows network error reporting
Convert wide-character error message to UTF-8. Closes #2794
This commit is contained in:
parent
d14a4f75a1
commit
2a5df8ad2a
|
@ -141,7 +141,7 @@ const char *rktio_get_error_string(rktio_t *rktio, int kind, int errid)
|
|||
s = strerror(errid);
|
||||
#endif
|
||||
} else if (kind == RKTIO_ERROR_KIND_GAI)
|
||||
s = rktio_gai_strerror(errid);
|
||||
s = rktio_gai_strerror(rktio, errid); /* may use `last_err_str` */
|
||||
#ifdef RKTIO_SYSTEM_WINDOWS
|
||||
else if (kind == RKTIO_ERROR_KIND_WINDOWS) {
|
||||
wchar_t mbuf[256];
|
||||
|
|
|
@ -210,9 +210,7 @@ struct rktio_addrinfo_t {
|
|||
# define rktio_AI_PASSIVE AI_PASSIVE
|
||||
# define do_getaddrinfo(n, s, h, res) getaddrinfo(n, s, RKTIO_AS_ADDRINFO(h), RKTIO_AS_ADDRINFO_PTR(res))
|
||||
# define do_freeaddrinfo freeaddrinfo
|
||||
# ifdef RKTIO_SYSTEM_WINDOWS
|
||||
# define do_gai_strerror gai_strerrorA
|
||||
# else
|
||||
# ifndef RKTIO_SYSTEM_WINDOWS
|
||||
# define do_gai_strerror gai_strerror
|
||||
# endif
|
||||
#else
|
||||
|
@ -749,9 +747,18 @@ void rktio_addrinfo_free(rktio_t *rktio, rktio_addrinfo_t *a)
|
|||
do_freeaddrinfo(RKTIO_AS_ADDRINFO(a));
|
||||
}
|
||||
|
||||
const char *rktio_gai_strerror(int errnum)
|
||||
const char *rktio_gai_strerror(rktio_t *rktio, int errnum)
|
||||
{
|
||||
#ifdef RKTIO_SYSTEM_WINDOWS
|
||||
char *s;
|
||||
s = NARROW_PATH_copy(gai_strerrorW(errnum));
|
||||
if (rktio->last_err_str)
|
||||
free(rktio->last_err_str);
|
||||
rktio->last_err_str = s;
|
||||
return s;
|
||||
#else
|
||||
return do_gai_strerror(errnum);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*========================================================================*/
|
||||
|
|
|
@ -233,7 +233,7 @@ intptr_t rktio_socket_read(rktio_t *rktio, rktio_fd_t *rfd, char *buffer, intptr
|
|||
|
||||
void rktio_free_ghbn(rktio_t *rktio);
|
||||
|
||||
const char *rktio_gai_strerror(int errnum);
|
||||
const char *rktio_gai_strerror(rktio_t *rktio, int errnum);
|
||||
|
||||
/*========================================================================*/
|
||||
/* Processes */
|
||||
|
|
Loading…
Reference in New Issue
Block a user