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);
|
s = strerror(errid);
|
||||||
#endif
|
#endif
|
||||||
} else if (kind == RKTIO_ERROR_KIND_GAI)
|
} 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
|
#ifdef RKTIO_SYSTEM_WINDOWS
|
||||||
else if (kind == RKTIO_ERROR_KIND_WINDOWS) {
|
else if (kind == RKTIO_ERROR_KIND_WINDOWS) {
|
||||||
wchar_t mbuf[256];
|
wchar_t mbuf[256];
|
||||||
|
|
|
@ -210,9 +210,7 @@ struct rktio_addrinfo_t {
|
||||||
# define rktio_AI_PASSIVE AI_PASSIVE
|
# 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_getaddrinfo(n, s, h, res) getaddrinfo(n, s, RKTIO_AS_ADDRINFO(h), RKTIO_AS_ADDRINFO_PTR(res))
|
||||||
# define do_freeaddrinfo freeaddrinfo
|
# define do_freeaddrinfo freeaddrinfo
|
||||||
# ifdef RKTIO_SYSTEM_WINDOWS
|
# ifndef RKTIO_SYSTEM_WINDOWS
|
||||||
# define do_gai_strerror gai_strerrorA
|
|
||||||
# else
|
|
||||||
# define do_gai_strerror gai_strerror
|
# define do_gai_strerror gai_strerror
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
|
@ -749,9 +747,18 @@ void rktio_addrinfo_free(rktio_t *rktio, rktio_addrinfo_t *a)
|
||||||
do_freeaddrinfo(RKTIO_AS_ADDRINFO(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);
|
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);
|
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 */
|
/* Processes */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user