summaryrefslogtreecommitdiff
path: root/ares_process.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2008-12-04 12:53:03 +0000
committerDaniel Stenberg <daniel@haxx.se>2008-12-04 12:53:03 +0000
commitf61fa37f40158cca871fdce5d4a546e8ba3f482a (patch)
tree7e2833594e756504e67e0123c4a479a9d7bb05bd /ares_process.c
parent20e7876430a4bd75f469602d34dcd6c315d0cc0f (diff)
downloadc-ares-f61fa37f40158cca871fdce5d4a546e8ba3f482a.tar.gz
c-ares-f61fa37f40158cca871fdce5d4a546e8ba3f482a.tar.bz2
c-ares-f61fa37f40158cca871fdce5d4a546e8ba3f482a.zip
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_process.c')
-rw-r--r--ares_process.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/ares_process.c b/ares_process.c
index 58f0725..8c25b11 100644
--- a/ares_process.c
+++ b/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;