Commit e5b0533d authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Gregor Jasny provided the patch that introduces ares_set_socket_callback(),

and I edited it to also get duped by ares_dup().
parent a2a315a6
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
  Changelog for the c-ares project

* Dec 4 2008 (Daniel Stenberg)

  Gregor Jasny provided the patch that introduces ares_set_socket_callback(),
  and I edited it to also get duped by ares_dup().

* Dec 3 2008 (Daniel Stenberg)

  API changes:
+14 −7
Original line number Diff line number Diff line
This is what's new and changed in the c-ares 1.5.4 release:
This is what's new and changed in the c-ares 1.6.0 release:

Changed:

 o Added support for the glibc "rotate" resolv.conf option (or ARES_OPT_ROTATE)
 o Added ares_gethostbyname_file()
 o Added ares_dup()
 o Added ares_set_socket_callback()

Fixed:

 o improved configure detection of several functions
 o improved source code portability
 o adig supports a regular numerical dotted IP address for the -s option
 o handling of EINPROGRESS for UDP connects
 o supports the glibc "rotate" resolv.conf option (or ARES_OPT_ROTATE)
 o added the new function ares_gethostbyname_file()
 o bugfix in ares_parse_ptr_reply() which would cause a buffer to shrink
   instead of expand if a reply contained 8 or more records
 o ares_parse_ptr_reply()would cause a buffer to shrink instead of expand if a
   reply contained 8 or more records
 o buildconf works on OS X

Thanks go to these friendly people for their efforts and contributions:

 Yang Tse, Charles Hardin, Carlo Contavalli, Brad Spencer, Gerald Combs
 and obviously Daniel Stenberg
 Yang Tse, Charles Hardin, Carlo Contavalli, Brad Spencer, Gerald Combs,
 Gregor Jasny

Have fun!
+5 −0
Original line number Diff line number Diff line
@@ -229,6 +229,8 @@ typedef void (*ares_host_callback)(void *arg, int status, int timeouts,
                                   struct hostent *hostent);
typedef void (*ares_nameinfo_callback)(void *arg, int status, int timeouts,
                                       char *node, char *service);
typedef int  (*ares_sock_create_callback)(ares_socket_t socket_fd,
                                          int type, void *data);

int ares_init(ares_channel *channelptr);
int ares_init_options(ares_channel *channelptr, struct ares_options *options,
@@ -239,6 +241,9 @@ void ares_destroy_options(struct ares_options *options);
int ares_dup(ares_channel *dest, ares_channel src);
void ares_destroy(ares_channel channel);
void ares_cancel(ares_channel channel);
void ares_set_socket_callback(ares_channel channel,
                              ares_sock_create_callback callback,
                              void *user_data);
void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
               ares_callback callback, void *arg);
void ares_query(ares_channel channel, const char *name, int dnsclass,
+12 −1
Original line number Diff line number Diff line
@@ -159,6 +159,8 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
  channel->servers = NULL;
  channel->sock_state_cb = NULL;
  channel->sock_state_cb_data = NULL;
  channel->sock_create_cb = NULL;
  channel->sock_create_cb_data = NULL;

  channel->last_server = 0;
  channel->last_timeout_processed = (time_t)now.tv_sec;
@@ -283,8 +285,9 @@ int ares_dup(ares_channel *dest, ares_channel src)
    return rc;

  /* Now clone the options that ares_save_options() doesn't support. */
  (*dest)->sock_create_cb      = src->sock_create_cb;
  (*dest)->sock_create_cb_data = src->sock_create_cb_data;

  /* No such options available yet */

  return ARES_SUCCESS; /* everything went fine */

@@ -1551,3 +1554,11 @@ unsigned short ares__generate_new_id(rc4_key* key)
  ares__rc4(key, (unsigned char *)&r, sizeof(r));
  return r;
}

void ares_set_socket_callback(ares_channel channel,
                              ares_sock_create_callback cb,
                              void *data)
{
  channel->sock_create_cb = cb;
  channel->sock_create_cb_data = data;
}
+3 −0
Original line number Diff line number Diff line
@@ -296,6 +296,9 @@ struct ares_channeldata {

  ares_sock_state_cb sock_state_cb;
  void *sock_state_cb_data;

  ares_sock_create_callback sock_create_cb;
  void *sock_create_cb_data;
};

/* return true if now is exactly check time or later */
Loading