ev_io recv_event,
send_event;
ev_timer timeout; /* timeout while requesting ips */
-#ifdef DEBUG_CARES
short int SourcePort;
-#endif
+
struct ares_options Options;
ares_channel Channel;
DNSQueryParts *Query;
#define CCID ((CitContext*)IO->CitContext)->cs_pid
-#define EVQ_syslog(LEVEL, FORMAT, ...) \
+#define EVQ_syslog(LEVEL, FORMAT, ...) \
EDBGLOG (LEVEL) syslog(LEVEL, "IOQ " FORMAT, __VA_ARGS__)
-#define EVQM_syslog(LEVEL, FORMAT) \
+#define EVQM_syslog(LEVEL, FORMAT) \
EDBGLOG (LEVEL) syslog(LEVEL, "IO " FORMAT)
-#define EV_syslog(LEVEL, FORMAT, ...) \
+#define EV_syslog(LEVEL, FORMAT, ...) \
EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d] " FORMAT, IO->ID, CCID, __VA_ARGS__)
-#define EVM_syslog(LEVEL, FORMAT) \
+#define EVM_syslog(LEVEL, FORMAT) \
EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d] " FORMAT, IO->ID, CCID)
-#define EVNC_syslog(LEVEL, FORMAT, ...) \
+#define EVNC_syslog(LEVEL, FORMAT, ...) \
EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld] " FORMAT, IO->ID, __VA_ARGS__)
#define EVNCM_syslog(LEVEL, FORMAT) EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]" FORMAT, IO->ID)
#define CDBGLOG() if (DebugCAres != 0)
+#define CEDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugCAres != 0))
#define EV_DNS_LOG_START(a) \
- CDBGLOG () {syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \
+ CDBGLOG () {syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %s %p FD %d", IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
EV_backtrace(IO);}
#define EV_DNS_LOG_STOP(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \
+ CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %s %p FD %d", IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
EV_backtrace(IO);}
#define EV_DNS_LOG_INIT(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %p FD %d", IO->ID, CCID, &IO->a, IO->a.fd); \
+ CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %s %p FD %d", IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
EV_backtrace(IO);}
#define EV_DNS_LOGT_START(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %p", IO->ID, CCID, &IO->a); \
+ CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %s %p", IO->ID, CCID, __FUNCTION__, &IO->a); \
EV_backtrace(IO);}
#define EV_DNS_LOGT_STOP(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %p", IO->ID, CCID, &IO->a); \
+ CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %s %p", IO->ID, CCID, __FUNCTION__, &IO->a); \
EV_backtrace(IO); }
#define EV_DNS_LOGT_INIT(a) \
CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %p", IO->ID, CCID, &IO->a); \
EV_backtrace(IO);}
+#define EV_DNS_syslog(LEVEL, FORMAT, ...) \
+ CEDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d] " FORMAT, IO->ID, CCID, __VA_ARGS__)
+
+#define EVM_DNS_syslog(LEVEL, FORMAT) \
+ CEDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d] " FORMAT, IO->ID, CCID)
void FreeAsyncIOContents(AsyncIO *IO);
struct hostent *hostent)
{
AsyncIO *IO = data;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
EV_DNS_LOGT_STOP(DNS.timeout);
-#endif
+
ev_timer_stop (event_base, &IO->DNS.timeout);
IO->DNS.Query->DNSStatus = status;
static void ParseAnswerA(AsyncIO *IO, unsigned char* abuf, int alen)
{
struct hostent* host = NULL;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
if (IO->DNS.Query->VParsedDNSReply != NULL)
IO->DNS.Query->DNSReplyFree(IO->DNS.Query->VParsedDNSReply);
static void ParseAnswerAAAA(AsyncIO *IO, unsigned char* abuf, int alen)
{
struct hostent* host = NULL;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
if (IO->DNS.Query->VParsedDNSReply != NULL)
IO->DNS.Query->DNSReplyFree(IO->DNS.Query->VParsedDNSReply);
{
struct hostent* host = NULL;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
if (IO->DNS.Query->VParsedDNSReply != NULL)
IO->DNS.Query->DNSReplyFree(IO->DNS.Query->VParsedDNSReply);
static void ParseAnswerMX(AsyncIO *IO, unsigned char* abuf, int alen)
{
struct ares_mx_reply *mx_out = NULL;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
if (IO->DNS.Query->VParsedDNSReply != NULL)
IO->DNS.Query->DNSReplyFree(IO->DNS.Query->VParsedDNSReply);
static void ParseAnswerNS(AsyncIO *IO, unsigned char* abuf, int alen)
{
struct hostent* host = NULL;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
if (IO->DNS.Query->VParsedDNSReply != NULL)
IO->DNS.Query->DNSReplyFree(IO->DNS.Query->VParsedDNSReply);
static void ParseAnswerSRV(AsyncIO *IO, unsigned char* abuf, int alen)
{
struct ares_srv_reply *srv_out = NULL;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
if (IO->DNS.Query->VParsedDNSReply != NULL)
IO->DNS.Query->DNSReplyFree(IO->DNS.Query->VParsedDNSReply);
static void ParseAnswerTXT(AsyncIO *IO, unsigned char* abuf, int alen)
{
struct ares_txt_reply *txt_out;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
if (IO->DNS.Query->VParsedDNSReply != NULL)
IO->DNS.Query->DNSReplyFree(IO->DNS.Query->VParsedDNSReply);
int alen)
{
AsyncIO *IO = arg;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
EV_DNS_LOGT_STOP(DNS.timeout);
-#endif
+
ev_timer_stop (event_base, &IO->DNS.timeout);
IO->DNS.Query->DNSStatus = status;
if (status == ARES_SUCCESS)
IO->DNS.Query->DNS_CB(arg, abuf, alen);
else {
- EV_syslog(LOG_DEBUG, "C-ARES: Failed by: %s error %s\n",
- __FUNCTION__,
- ares_strerror(status));
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: Failed by: %s error %s\n",
+ __FUNCTION__,
+ ares_strerror(status));
StrBufPlain(IO->ErrMsg, ares_strerror(status), -1);
IO->DNS.Query->DNSStatus = status;
}
void QueryCbDone(AsyncIO *IO)
{
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
EV_DNS_LOGT_STOP(DNS.timeout);
-#endif
ev_idle_stop(event_base, &IO->unwind_stack);
}
void DestructCAres(AsyncIO *IO)
{
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
EV_DNS_LOGT_STOP(DNS.timeout);
-#endif
+
EV_DNS_LOG_STOP(DNS.recv_event);
ev_io_stop(event_base, &IO->DNS.recv_event);
EV_DNS_LOG_STOP(DNS.send_event);
void InitC_ares_dns(AsyncIO *IO)
{
int optmask = 0;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s %p\n", __FUNCTION__, IO->DNS.Channel);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s %p\n", __FUNCTION__, IO->DNS.Channel);
if (IO->DNS.Channel == NULL) {
optmask |= ARES_OPT_SOCK_STATE_CB;
(NextTV->tv_usec != MaxTV.tv_usec))
{
fd_set readers, writers;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s Timeout!\n", __FUNCTION__);
-#endif
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s Timeout!\n", __FUNCTION__);
+
FD_ZERO(&readers);
FD_ZERO(&writers);
ares_fds(IO->DNS.Channel, &readers, &writers);
struct hostent *hostent)
{
AsyncIO *IO = (AsyncIO *) Ctx;
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+
IO->DNS.Query->DNSStatus = status;
IO->DNS.Query->VParsedDNSReply = hostent;
DNSQueryParts *QueryParts,
IO_CallBack PostDNS)
{
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
IO->DNS.SourcePort = 0;
-#endif
IO->DNS.Query = QueryParts;
IO->DNS.Query->PostDNS = PostDNS;
int length, family;
char address_b[sizeof(struct in6_addr)];
-#ifdef DEBUG_CARES
IO->DNS.SourcePort = 0;
-#endif
IO->DNS.Query = QueryParts;
IO->DNS.Query->PostDNS = PostDNS;
IO);
EV_DNS_LOGT_START(DNS.timeout);
ev_timer_start(event_base, &IO->DNS.timeout);
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s X1\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s X1\n", __FUNCTION__);
+
return 1;
default:
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %sX2\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %sX2\n", __FUNCTION__);
return 0;
}
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+
ares_query(IO->DNS.Channel, name, ns_c_in, Type, QueryCb, IO);
EV_DNS_LOGT_START(DNS.timeout);
ev_timer_start(event_base, &IO->DNS.timeout);
AsyncIO *IO = watcher->data;
IO->Now = ev_now(event_base);
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
ares_process_fd(IO->DNS.Channel,
ARES_SOCKET_BAD,
IO->Now = ev_now(event_base);
-#ifdef DEBUG_CARES
- EV_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
-#endif
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
ares_process_fd(IO->DNS.Channel,
IO->DNS.recv_event.fd,
{
AsyncIO *IO = data;
/* already inside of the event queue. */
-#ifdef DEBUG_CARES
-{
- struct sockaddr_in sin = {};
- socklen_t slen;
- slen = sizeof(sin);
- if ((IO->DNS.SourcePort == 0) &&
- (getsockname(sock, &sin, &slen) == 0))
+ if (DebugCAres)
{
- IO->DNS.SourcePort = ntohs(sin.sin_port);
+ struct sockaddr_in sin = {};
+ socklen_t slen;
+ slen = sizeof(sin);
+ if ((IO->DNS.SourcePort == 0) &&
+ (getsockname(sock, &sin, &slen) == 0))
+ {
+ IO->DNS.SourcePort = ntohs(sin.sin_port);
+ }
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s %d|%d Sock %d port %hu\n",
+ __FUNCTION__,
+ read,
+ write,
+ sock,
+ IO->DNS.SourcePort);
}
- EV_syslog(LOG_DEBUG, "C-ARES: %s %d|%d Sock %d port %hu\n",
- __FUNCTION__,
- read,
- write,
- sock,
- IO->DNS.SourcePort);
-}
-#endif
+
IO->Now = ev_now(event_base);
if (read) {