Lines Matching refs:channel

62 ares_ssize_t ares__socket_recvfrom(ares_channel_t *channel, ares_socket_t s,
67 if (channel->sock_funcs && channel->sock_funcs->arecvfrom) {
68 return channel->sock_funcs->arecvfrom(s, data, data_len, flags, from,
69 from_len, channel->sock_func_cb_data);
80 ares_ssize_t ares__socket_recv(ares_channel_t *channel, ares_socket_t s,
83 if (channel->sock_funcs && channel->sock_funcs->arecvfrom) {
84 return channel->sock_funcs->arecvfrom(s, data, data_len, 0, 0, 0,
85 channel->sock_func_cb_data);
173 ares_channel_t *channel = server->channel;
176 if (channel->sock_funcs && channel->sock_funcs->asocket) {
190 if ((channel->socket_send_buffer_size > 0) &&
192 (void *)&channel->socket_send_buffer_size,
193 sizeof(channel->socket_send_buffer_size)) == -1) {
197 if ((channel->socket_receive_buffer_size > 0) &&
199 (void *)&channel->socket_receive_buffer_size,
200 sizeof(channel->socket_receive_buffer_size)) == -1) {
205 if (channel->local_dev_name[0] &&
206 setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, channel->local_dev_name,
207 sizeof(channel->local_dev_name))) {
213 if (server->addr.family == AF_INET && channel->local_ip4) {
216 local.sa4.sin_addr.s_addr = htonl(channel->local_ip4);
219 memcmp(channel->local_ip6, ares_in6addr_any._S6_un._S6_u8,
220 sizeof(channel->local_ip6)) != 0) {
224 memcpy(&local.sa6.sin6_addr, channel->local_ip6,
225 sizeof(channel->local_ip6));
240 ares_status_t ares__open_connection(ares_channel_t *channel,
290 s = ares__open_socket(channel, server->addr.family, type, 0);
297 ares__close_socket(channel, s);
310 if ((!channel->sock_funcs || !channel->sock_funcs->asocket) &&
313 ares__close_socket(channel, s);
319 if (channel->sock_config_cb) {
320 int err = channel->sock_config_cb(s, type, channel->sock_config_cb_data);
322 ares__close_socket(channel, s);
328 if (ares__connect_socket(channel, s, sa, salen) == -1) {
332 ares__close_socket(channel, s);
337 if (channel->sock_create_cb) {
338 int err = channel->sock_create_cb(s, type, channel->sock_create_cb_data);
340 ares__close_socket(channel, s);
347 ares__close_socket(channel, s);
356 ares__close_socket(channel, s);
370 ares__close_socket(channel, s);
378 if (!ares__htable_asvp_insert(channel->connnode_by_socket, s, node)) {
379 ares__close_socket(channel, s);
386 SOCK_STATE_CALLBACK(channel, s, 1, 0);
395 ares_socket_t ares__open_socket(ares_channel_t *channel, int af, int type,
398 if (channel->sock_funcs && channel->sock_funcs->asocket) {
399 return channel->sock_funcs->asocket(af, type, protocol,
400 channel->sock_func_cb_data);
406 int ares__connect_socket(ares_channel_t *channel, ares_socket_t sockfd,
409 if (channel->sock_funcs && channel->sock_funcs->aconnect) {
410 return channel->sock_funcs->aconnect(sockfd, addr, addrlen,
411 channel->sock_func_cb_data);
417 void ares__close_socket(ares_channel_t *channel, ares_socket_t s)
423 if (channel->sock_funcs && channel->sock_funcs->aclose) {
424 channel->sock_funcs->aclose(s, channel->sock_func_cb_data);
438 ares_ssize_t ares__socket_write(ares_channel_t *channel, ares_socket_t s,
441 if (channel->sock_funcs && channel->sock_funcs->asendv) {
445 return channel->sock_funcs->asendv(s, &vec, 1, channel->sock_func_cb_data);
450 void ares_set_socket_callback(ares_channel_t *channel,
453 if (channel == NULL) {
456 channel->sock_create_cb = cb;
457 channel->sock_create_cb_data = data;
460 void ares_set_socket_configure_callback(ares_channel_t *channel,
464 if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
467 channel->sock_config_cb = cb;
468 channel->sock_config_cb_data = data;
471 void ares_set_socket_functions(ares_channel_t *channel,
475 if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
478 channel->sock_funcs = funcs;
479 channel->sock_func_cb_data = data;