X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/14e23b0e1e595ef97e15f90c74749e7345f6abd7..9e29fe51e5a320919044d878d6f812f206097136:/src/res.c diff --git a/src/res.c b/src/res.c index f0a253f..f61485e 100644 --- a/src/res.c +++ b/src/res.c @@ -7,7 +7,7 @@ * The authors takes no responsibility for any damage or loss * of property which results from the use of this software. * - * $Id: res.c 3227 2007-03-05 01:14:46Z jilles $ + * $Id: res.c 3301 2007-03-28 15:04:06Z jilles $ * from Hybrid Id: res.c 459 2006-02-12 22:21:37Z db $ * * July 1999 - Rewrote a bunch of stuff here. Change hostent builder code, @@ -29,11 +29,8 @@ #include "ircd_defs.h" #include "common.h" #include "ircd.h" -#include "commio.h" #include "res.h" #include "reslib.h" -#include "tools.h" -#include "event.h" #include "irc_string.h" #include "sprintf_irc.h" #include "numeric.h" @@ -70,7 +67,7 @@ typedef enum struct reslist { - dlink_node node; + rb_dlink_node node; int id; int sent; /* number of requests sent */ request_state state; /* State the resolver machine is in */ @@ -88,7 +85,7 @@ struct reslist }; static int res_fd; -static dlink_list request_list = { NULL, NULL, 0 }; +static rb_dlink_list request_list = { NULL, NULL, 0 }; static void rem_request(struct reslist *request); static struct reslist *make_request(struct DNSQuery *query); @@ -174,13 +171,13 @@ static int res_ourserver(const struct irc_sockaddr_storage *inp) */ static time_t timeout_query_list(time_t now) { - dlink_node *ptr; - dlink_node *next_ptr; + rb_dlink_node *ptr; + rb_dlink_node *next_ptr; struct reslist *request; time_t next_time = 0; time_t timeout = 0; - DLINK_FOREACH_SAFE(ptr, next_ptr, request_list.head) + RB_DLINK_FOREACH_SAFE(ptr, next_ptr, request_list.head) { request = ptr->data; timeout = request->sentat + request->timeout; @@ -215,7 +212,7 @@ static time_t timeout_query_list(time_t now) */ static void timeout_resolver(void *notused) { - timeout_query_list(CurrentTime); + timeout_query_list(rb_current_time()); } /* @@ -228,13 +225,13 @@ static void start_resolver(void) if (res_fd <= 0) /* there isn't any such thing as fd 0, that's just a myth. */ { - if ((res_fd = comm_socket(irc_nsaddr_list[0].ss_family, SOCK_DGRAM, 0, + if ((res_fd = rb_socket(irc_nsaddr_list[0].ss_family, SOCK_DGRAM, 0, "UDP resolver socket")) == -1) return; /* At the moment, the resolver FD data is global .. */ - comm_setselect(res_fd, FDLIST_NONE, COMM_SELECT_READ, res_readreply, NULL, 0); - eventAdd("timeout_resolver", timeout_resolver, NULL, 1); + rb_setselect(res_fd, FDLIST_NONE, COMM_SELECT_READ, res_readreply, NULL, 0); + rb_event_add("timeout_resolver", timeout_resolver, NULL, 1); } } @@ -244,7 +241,7 @@ static void start_resolver(void) void init_resolver(void) { #ifdef HAVE_SRAND48 - srand48(CurrentTime); + srand48(rb_current_time()); #endif start_resolver(); } @@ -254,7 +251,7 @@ void init_resolver(void) */ void restart_resolver(void) { - comm_close(res_fd); + rb_close(res_fd); res_fd = -1; eventDelete(timeout_resolver, NULL); /* -ddosen */ start_resolver(); @@ -289,9 +286,9 @@ void add_local_domain(char *hname, size_t size) */ static void rem_request(struct reslist *request) { - dlinkDelete(&request->node, &request_list); - MyFree(request->name); - MyFree(request); + rb_dlinkDelete(&request->node, &request_list); + rb_free(request->name); + rb_free(request); } /* @@ -299,16 +296,16 @@ static void rem_request(struct reslist *request) */ static struct reslist *make_request(struct DNSQuery *query) { - struct reslist *request = MyMalloc(sizeof(struct reslist)); + struct reslist *request = rb_malloc(sizeof(struct reslist)); - request->sentat = CurrentTime; + request->sentat = rb_current_time(); request->retries = 3; request->resend = 1; request->timeout = 4; /* start at 4 and exponential inc. */ request->query = query; request->state = REQ_IDLE; - dlinkAdd(request, &request->node, &request_list); + rb_dlinkAdd(request, &request->node, &request_list); return request; } @@ -319,11 +316,11 @@ static struct reslist *make_request(struct DNSQuery *query) */ void delete_resolver_queries(const struct DNSQuery *query) { - dlink_node *ptr; - dlink_node *next_ptr; + rb_dlink_node *ptr; + rb_dlink_node *next_ptr; struct reslist *request; - DLINK_FOREACH_SAFE(ptr, next_ptr, request_list.head) + RB_DLINK_FOREACH_SAFE(ptr, next_ptr, request_list.head) { if ((request = ptr->data) != NULL) { @@ -352,7 +349,7 @@ static int send_res_msg(const char *msg, int len, int rcount) if (max_queries == 0) max_queries = 1; - for (i = 0; i < max_queries; i++) + for (i = 0; sent < max_queries && i < irc_nscount; i++) { if (sendto(res_fd, msg, len, 0, (struct sockaddr *)&(irc_nsaddr_list[i]), @@ -368,10 +365,10 @@ static int send_res_msg(const char *msg, int len, int rcount) */ static struct reslist *find_id(int id) { - dlink_node *ptr; + rb_dlink_node *ptr; struct reslist *request; - DLINK_FOREACH(ptr, request_list.head) + RB_DLINK_FOREACH(ptr, request_list.head) { request = ptr->data; @@ -414,7 +411,7 @@ static void do_query_name(struct DNSQuery *query, const char *name, struct resli if (request == NULL) { request = make_request(query); - request->name = (char *)MyMalloc(strlen(host_name) + 1); + request->name = (char *)rb_malloc(strlen(host_name) + 1); strcpy(request->name, host_name); request->state = REQ_A; } @@ -436,7 +433,7 @@ static void do_query_number(struct DNSQuery *query, const struct irc_sockaddr_st { request = make_request(query); memcpy(&request->addr, addr, sizeof(struct irc_sockaddr_storage)); - request->name = (char *)MyMalloc(HOSTLEN + 1); + request->name = (char *)rb_malloc(HOSTLEN + 1); } if (addr->ss_family == AF_INET) @@ -444,7 +441,7 @@ static void do_query_number(struct DNSQuery *query, const struct irc_sockaddr_st struct sockaddr_in *v4 = (struct sockaddr_in *)addr; cp = (const unsigned char *)&v4->sin_addr.s_addr; - ircsprintf(request->queryname, "%u.%u.%u.%u.in-addr.arpa", (unsigned int)(cp[3]), + rb_sprintf(request->queryname, "%u.%u.%u.%u.in-addr.arpa", (unsigned int)(cp[3]), (unsigned int)(cp[2]), (unsigned int)(cp[1]), (unsigned int)(cp[0])); } #ifdef IPV6 @@ -745,7 +742,7 @@ static void res_readreply(int fd, void *data) /* Re-schedule a read *after* recvfrom, or we'll be registering * interest where it'll instantly be ready for read :-) -- adrian */ - comm_setselect(fd, FDLIST_NONE, COMM_SELECT_READ, res_readreply, NULL, 0); + rb_setselect(fd, FDLIST_NONE, COMM_SELECT_READ, res_readreply, NULL, 0); /* Better to cast the sizeof instead of rc */ if (rc <= (int)(sizeof(HEADER))) return; @@ -834,7 +831,7 @@ static void res_readreply(int fd, void *data) */ reply = make_dnsreply(request); (*request->query->callback) (request->query->ptr, reply); - MyFree(reply); + rb_free(reply); rem_request(request); } } @@ -851,7 +848,7 @@ static struct DNSReply *make_dnsreply(struct reslist *request) struct DNSReply *cp; s_assert(request != 0); - cp = (struct DNSReply *)MyMalloc(sizeof(struct DNSReply)); + cp = (struct DNSReply *)rb_malloc(sizeof(struct DNSReply)); cp->h_name = request->name; memcpy(&cp->addr, &request->addr, sizeof(cp->addr));