mirror of
https://frontier.innolan.net/rainlance/c-ares.git
synced 2025-11-23 23:34:16 +00:00
Fix UDP and TCP port byte order in saved options.
The UDP and TCP port are stored in network byte order in the ares_channeldata, but are passed in to ares_init_options() in host byte order. Thus we must return them from ares_save_options() in host byte order too, or a duplicated channel will convert them again, leading to a nonfunctional channel and a mysterious connection refused error from ares_gethostbyname(). This breaks ares_dup(), thus the curl easy API when c-ares is used by curl, and thus all the curl easy API's users.
This commit is contained in:
committed by
Daniel Stenberg
parent
7ec5e8e656
commit
9bd38a4a6e
@ -355,8 +355,8 @@ int ares_save_options(ares_channel channel, struct ares_options *options,
|
||||
options->timeout = channel->timeout;
|
||||
options->tries = channel->tries;
|
||||
options->ndots = channel->ndots;
|
||||
options->udp_port = (unsigned short)channel->udp_port;
|
||||
options->tcp_port = (unsigned short)channel->tcp_port;
|
||||
options->udp_port = (unsigned short)ntohs(channel->udp_port);
|
||||
options->tcp_port = (unsigned short)ntohs(channel->tcp_port);
|
||||
options->sock_state_cb = channel->sock_state_cb;
|
||||
options->sock_state_cb_data = channel->sock_state_cb_data;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user