diff options
author | Daniel Stenberg <daniel@haxx.se> | 2008-12-04 12:53:03 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2008-12-04 12:53:03 +0000 |
commit | e5b0533dabe4b67dc9851b86e2ca4d9846899bd2 (patch) | |
tree | 419097734f43f890c642217d0ab219d8e1b8c089 /ares/ares_process.c | |
parent | a2a315a6e850c9812e0beb51b9f84b5b4f9e8919 (diff) |
Gregor Jasny provided the patch that introduces ares_set_socket_callback(),
and I edited it to also get duped by ares_dup().
Diffstat (limited to 'ares/ares_process.c')
-rw-r--r-- | ares/ares_process.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ares/ares_process.c b/ares/ares_process.c index 58f072595..8c25b11da 100644 --- a/ares/ares_process.c +++ b/ares/ares_process.c @@ -929,6 +929,17 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server) } } + if (channel->sock_create_cb) + { + int err = channel->sock_create_cb(s, SOCK_STREAM, + channel->sock_create_cb_data); + if (err < 0) + { + closesocket(s); + return err; + } + } + SOCK_STATE_CALLBACK(channel, s, 1, 0); server->tcp_buffer_pos = 0; server->tcp_socket = s; @@ -969,6 +980,17 @@ static int open_udp_socket(ares_channel channel, struct server_state *server) } } + if (channel->sock_create_cb) + { + int err = channel->sock_create_cb(s, SOCK_DGRAM, + channel->sock_create_cb_data); + if (err < 0) + { + closesocket(s); + return err; + } + } + SOCK_STATE_CALLBACK(channel, s, 1, 0); server->udp_socket = s; |