On Thu, Jan 31, 2013 at 10:38 PM, Steve Freegard <[email protected]> wrote: > Hi Ben, > > > On Thursday, 31 January 2013 19:10:21 UTC, Ben Noordhuis wrote: >> >> >> Not sure, it seems to work for me: >> >> $ out/Release/node tmp/dns-econn.js >> { [Error: queryA ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', >> syscall: 'queryA' } >> >> The error code is ENOTFOUND for backwards compatibility but >> essentially means NXDOMAIN (which is what dig returns for that >> domain). >> >> Maybe run strace on the script to see what it's doing. > > > > Can you try again with that hostname (servfail.test.snert.net) as this was > only returning SERVFAIL for my IP at the time, we've since managed to break > it properly for everyone ;-) > > strace shows that packets are responded to and being as this is UDP - > there's no connections being refused or any truncated data causing a TCP > lookup: > > 0.000218 connect(7, {sa_family=AF_INET, sin_port=htons(53), > sin_addr=inet_addr("127.0.0.1")}, 16) = 0 > 0.000222 send(7, > "Nx\1\0\0\1\0\0\0\0\0\0\10servfail\4test\5snert\3net\0\0\1\0\1", 41, > MSG_NOSIGNAL) = 41 > 0.000416 futex(0xb770046c, FUTEX_WAKE_PRIVATE, 1) = 1 > 0.000264 epoll_ctl(3, EPOLL_CTL_ADD, 4, {EPOLLIN, {u32=4, > u64=4294967300}}) = 0 > 0.000147 epoll_ctl(3, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=5, > u64=4294967301}}) = 0 > 0.000141 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN, {u32=7, > u64=4294967303}}) = 0 > 0.000168 epoll_wait(3, {{EPOLLIN, {u32=7, u64=4294967303}}}, 64, 0) = 1 > 0.000207 clock_gettime(CLOCK_MONOTONIC, {18616500, 71519938}) = 0 > 0.000183 recvfrom(7, > "Nx\201\202\0\1\0\0\0\0\0\0\10servfail\4test\5snert\3net\0\0\1\0\1", 513, 0, > {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, > [16]) = 41 > 0.000466 send(7, > "Nx\1\0\0\1\0\0\0\0\0\0\10servfail\4test\5snert\3net\0\0\1\0\1", 41, > MSG_NOSIGNAL) = 41 > 0.000445 recvfrom(7, > "Nx\201\202\0\1\0\0\0\0\0\0\10servfail\4test\5snert\3net\0\0\1\0\1", 513, 0, > {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, > [16]) = 41 > 0.000506 send(7, > "Nx\1\0\0\1\0\0\0\0\0\0\10servfail\4test\5snert\3net\0\0\1\0\1", 41, > MSG_NOSIGNAL) = 41 > 0.000860 recvfrom(7, 0xbf837b9f, 513, 0, 0xbf837da0, 0xbf837dbc) = -1 > EAGAIN (Resource temporarily unavailable) > 0.000129 clock_gettime(CLOCK_MONOTONIC, {18616500, 74108425}) = 0 > 0.000133 epoll_wait(3, {{EPOLLIN, {u32=7, u64=4294967303}}}, 64, 953) = > 1 > 0.107171 clock_gettime(CLOCK_MONOTONIC, {18616500, 181412884}) = 0 > 0.000165 recvfrom(7, > "Nx\201\202\0\1\0\0\0\0\0\0\10servfail\4test\5snert\3net\0\0\1\0\1", 513, 0, > {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, > [16]) = 41 > 0.000449 send(7, > "Nx\1\0\0\1\0\0\0\0\0\0\10servfail\4test\5snert\3net\0\0\1\0\1", 41, > MSG_NOSIGNAL) = 41 > 0.000431 recvfrom(7, > "Nx\201\202\0\1\0\0\0\0\0\0\10servfail\4test\5snert\3net\0\0\1\0\1", 513, 0, > {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, > [16]) = 41 > 0.000532 futex(0xb770046c, FUTEX_WAKE_PRIVATE, 1) = 1 > 0.001138 ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig > icanon echo ...}) = 0 > 0.001087 futex(0xb770046c, FUTEX_WAKE_PRIVATE, 1) = 1 > 0.000390 ioctl(1, TIOCGWINSZ, {ws_row=32, ws_col=132, ws_xpixel=0, > ws_ypixel=0}) = 0 > 0.000336 rt_sigaction(SIGWINCH, {0x82003a0, ~[RTMIN RT_1], SA_RESTART}, > NULL, 8) = 0 > 0.000515 futex(0xb770046c, FUTEX_WAKE_PRIVATE, 1) = 1 > 0.001139 futex(0xb770046c, FUTEX_WAKE_PRIVATE, 1) = 1 > 0.000914 write(1, "{ [Error: queryA ECONNREFUSED]\n code: > 'ECONNREFUSED',\n errno: 'ECONNREFUSED',\n syscall: 'queryA' }\n", 102{ > [Error: queryA ECONNREFUSED] > code: 'ECONNREFUSED', > errno: 'ECONNREFUSED', > syscall: 'queryA' } > ) = 102 > > > Regards, > Steve.
Right, I can reproduce it now. It seems to be a c-ares quirk (the DNS resolver library we use). If a server replies with SERVFAIL, c-ares retries the query up to four times, then gives up with an ARES_ECONNREFUSED error. I don't think there is much we can do about that. Maybe you can bring it up on the c-ares mailing list. -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
