Cygwin: connection is not refused #565

Open
opened 2026-10-05 04:30:12 +02:00 by adam · 3 comments
Owner

Precondition: the port where ZNC is trying to connect to, is closed, so connection should be refused.

[2015-09-03 22:55:02.354104] TDNS: IRC::a::freenode, connecting to [10.100.200.2] using bindhost []
[2015-09-03 22:55:03.235521] IRC::a::freenode == Connected()
[2015-09-03 22:55:03.235521] (a/freenode) ZNC -> IRC [CAP LS]
[2015-09-03 22:55:03.235521] (a/freenode) ZNC -> IRC [NICK a]
[2015-09-03 22:55:03.235521] (a/freenode) ZNC -> IRC [USER a "a" "a" :Got ZNC?]
[2015-09-03 22:57:03.928596] IRC::a::freenode == Timeout()
[2015-09-03 22:57:03.928596] IRC::a::freenode == Disconnected()

It happens for both IPv6 and IPv4, I also tried to compile with --disable-ipv6, the result is the same.
Commit 0211b34a09
strace follows:

[2015-09-03 23:01:37.932167] TDNS: IRC::a::freenode, connecting to [10.100.200.2] using bindhost []
17531 15039618 [main] znc 1688 write: 100 = write(1, 0x600056BB0, 100)
 4728 15044346 [main] znc 1688 close: close(7)
  220 15044566 [main] znc 1688 fhandler_base::close: closing '/dev/urandom' handle 0x30C
  321 15044887 [main] znc 1688 close: 0 = close(7)
 4473 15049360 [main] znc 1688 cygwin_socket: socket (2, 1 (flags 0x0), 6)
  301 15049661 [main] znc 1688 build_fh_pc: fh 0x18032B718, dev 001E0024
  274 15049935 [main] znc 1688 fhandler_base::set_flags: flags 0x10002, supplied_bin 0x0
  221 15050156 [main] znc 1688 fhandler_base::set_flags: O_TEXT/O_BINARY set in flags 0x10000
  296 15050452 [main] znc 1688 fhandler_base::set_flags: filemode set to binary
  284 15050736 [main] znc 1688 fdsock: fd 7, name '', soc 0x310
  304 15051040 [main] znc 1688 cygwin_socket: 7 = socket(2, 1 (flags 0x0), 6)
  293 15051333 [main] znc 1688 fcntl64: fcntl(7, 1, ...)
  307 15051640 [main] znc 1688 fcntl64: 0 = fcntl(7, 1, 0x0)
  323 15051963 [main] znc 1688 fcntl64: fcntl(7, 2, ...)
  293 15052256 [main] znc 1688 fhandler_base::set_close_on_exec: set close_on_exec for  to 1
  255 15052511 [main] znc 1688 fcntl64: 0 = fcntl(7, 2, 0x1)
  249 15052760 [main] znc 1688 fcntl64: fcntl(7, 3, ...)
  238 15052998 [main] znc 1688 fhandler_base::fcntl: GETFL: 0x10002
  270 15053268 [main] znc 1688 fcntl64: 65538 = fcntl(7, 3, 0x0)
  306 15053574 [main] znc 1688 fcntl64: fcntl(7, 4, ...)
  322 15053896 [main] znc 1688 fhandler_socket::ioctl: socket is now nonblocking
  312 15054208 [main] znc 1688 fhandler_socket::ioctl: 0 = ioctl_socket(8004667E, 0x22BFDC)
  310 15054518 [main] znc 1688 fhandler_base::set_flags: flags 0x14002, supplied_bin 0x0
  259 15054777 [main] znc 1688 fhandler_base::set_flags: O_TEXT/O_BINARY set in flags 0x10000
  409 15055186 [main] znc 1688 fhandler_base::set_flags: filemode set to binary
  215 15055401 [main] znc 1688 fcntl64: 0 = fcntl(7, 4, 0x14002)
--- Process 1688 thread 2844 created
  789 15056190 [main] znc 1688 __set_errno: void __set_winsock_errno(const char*, int):235 setting errno 119
  360 15056550 [main] znc 1688 __set_winsock_errno: connect:1230 - winsock error 10036 -> errno 119
  187 15056737 [main] znc 1688 cygwin_connect: -1 = connect(7, 0x600078E2C, 16), errno 119
 1547 15058284 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
  346 15058630 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100
  619 15059249 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3
  661 15059910 [main] znc 1688 dtable::select_read:  fd 6
  342 15060252 [main] znc 1688 dtable::select_read:  fd 7
  361 15060613 [main] znc 1688 dtable::select_write:  fd 7
  214 15060827 [main] znc 1688 select: sel.always_ready 0
  541 15061368 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58
 1409 15062777 [main] znc 1688 select_stuff::wait: m 4, ms 100
 7987 15070764 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295
  922 15071686 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  269 15071955 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
109245 15181200 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4.  verifying
  307 15181507 [main] znc 1688 select_stuff::wait: timed out
  371 15181878 [main] znc 1688 select_stuff::wait: returning 1
  217 15182095 [main] znc 1688 select: res 1
  266 15182361 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  190 15182551 [main] znc 1688 socket_cleanup: si 0x600078AC0 si->thread 0x1801F68D8
13769 15196320 [socksel] znc 1688 thread_socket: leaving thread_socket
  796 15197116 [main] znc 1688 socket_cleanup: returning
  345 15197461 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0
14320 15211781 [main] znc 1688 select_stuff::destroy: deleting select records
 1037 15212818 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  181 15212999 [main] znc 1688 select_stuff::destroy: deleting select records
  169 15213168 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
 2174 15215342 [main] znc 1688 time: 1441317698 = time(0x0)
  811 15216153 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
  142 15216295 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100
  426 15216721 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3
  257 15216978 [main] znc 1688 dtable::select_read:  fd 6
  397 15217375 [main] znc 1688 dtable::select_read:  fd 7
  169 15217544 [main] znc 1688 dtable::select_write:  fd 7
  226 15217770 [main] znc 1688 select: sel.always_ready 0
  553 15218323 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58
  807 15219130 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295
  381 15219511 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  330 15219841 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  964 15220805 [main] znc 1688 select_stuff::wait: m 4, ms 100
99883 15320688 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4.  verifying
  429 15321117 [main] znc 1688 select_stuff::wait: timed out
 1142 15322259 [main] znc 1688 select_stuff::wait: returning 1
  411 15322670 [main] znc 1688 select: res 1
  240 15322910 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  351 15323261 [main] znc 1688 socket_cleanup: si 0x60008E4D0 si->thread 0x1801F68D8
  192 15323453 [socksel] znc 1688 thread_socket: leaving thread_socket
  862 15324315 [main] znc 1688 socket_cleanup: returning
  259 15324574 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0
12076 15336650 [main] znc 1688 select_stuff::destroy: deleting select records
 1131 15337781 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  253 15338034 [main] znc 1688 select_stuff::destroy: deleting select records
  351 15338385 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
 2338 15340723 [main] znc 1688 time: 1441317698 = time(0x0)
 1295 15342018 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
  243 15342261 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100
 1186 15343447 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3
  543 15343990 [main] znc 1688 dtable::select_read:  fd 6
  410 15344400 [main] znc 1688 dtable::select_read:  fd 7
  287 15344687 [main] znc 1688 dtable::select_write:  fd 7
  247 15344934 [main] znc 1688 select: sel.always_ready 0
  414 15345348 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58
  800 15346148 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295
  588 15346736 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  212 15346948 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
 3769 15350717 [main] znc 1688 select_stuff::wait: m 4, ms 100
94898 15445615 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4.  verifying
  204 15445819 [main] znc 1688 select_stuff::wait: timed out
  212 15446031 [main] znc 1688 select_stuff::wait: returning 1
  261 15446292 [main] znc 1688 select: res 1
  248 15446540 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  274 15446814 [main] znc 1688 socket_cleanup: si 0x600078AC0 si->thread 0x1801F68D8
  204 15447018 [socksel] znc 1688 thread_socket: leaving thread_socket
 1356 15448374 [main] znc 1688 socket_cleanup: returning
  233 15448607 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0
12956 15461563 [main] znc 1688 select_stuff::destroy: deleting select records
  867 15462430 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  232 15462662 [main] znc 1688 select_stuff::destroy: deleting select records
  195 15462857 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
 2089 15464946 [main] znc 1688 time: 1441317698 = time(0x0)
  515 15465461 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
  245 15465706 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100
  418 15466124 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3
  295 15466419 [main] znc 1688 dtable::select_read:  fd 6
  315 15466734 [main] znc 1688 dtable::select_read:  fd 7
  147 15466881 [main] znc 1688 dtable::select_write:  fd 7
  184 15467065 [main] znc 1688 select: sel.always_ready 0
  362 15467427 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58
10677 15478104 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295
  390 15478494 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  417 15478911 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
 1398 15480309 [main] znc 1688 select_stuff::wait: m 4, ms 100
106019 15586328 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4.  verifying
  283 15586611 [main] znc 1688 select_stuff::wait: timed out
  606 15587217 [main] znc 1688 select_stuff::wait: returning 1
  425 15587642 [main] znc 1688 select: res 1
  217 15587859 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  158 15588017 [main] znc 1688 socket_cleanup: si 0x60008E4D0 si->thread 0x1801F68D8
14469 15602486 [socksel] znc 1688 thread_socket: leaving thread_socket
  751 15603237 [main] znc 1688 socket_cleanup: returning
  351 15603588 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0
14467 15618055 [main] znc 1688 select_stuff::destroy: deleting select records
  925 15618980 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  226 15619206 [main] znc 1688 select_stuff::destroy: deleting select records
  258 15619464 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
 8791 15628255 [main] znc 1688 time: 1441317698 = time(0x0)
  610 15628865 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
  166 15629031 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100
  378 15629409 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3
  441 15629850 [main] znc 1688 dtable::select_read:  fd 6
  273 15630123 [main] znc 1688 dtable::select_read:  fd 7
 4559 15634682 [main] znc 1688 dtable::select_write:  fd 7
  213 15634895 [main] znc 1688 select: sel.always_ready 0
  269 15635164 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58
  296 15635460 [main] znc 1688 select_stuff::wait: m 4, ms 100
   64 15635524 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295
  102 15635626 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
   57 15635683 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
106824 15742507 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4.  verifying
  188 15742695 [main] znc 1688 select_stuff::wait: timed out
  194 15742889 [main] znc 1688 select_stuff::wait: returning 1
  213 15743102 [main] znc 1688 select: res 1
  155 15743257 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  155 15743412 [main] znc 1688 socket_cleanup: si 0x600078AC0 si->thread 0x1801F68D8
  381 15743793 [socksel] znc 1688 thread_socket: leaving thread_socket
  412 15744205 [main] znc 1688 socket_cleanup: returning
  244 15744449 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0
14220 15758669 [main] znc 1688 select_stuff::destroy: deleting select records
  963 15759632 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  489 15760121 [main] znc 1688 select_stuff::destroy: deleting select records
13966 15774087 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
 4252 15778339 [main] znc 1688 time: 1441317698 = time(0x0)
 2569 15780908 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
  657 15781565 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100
  594 15782159 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3
  304 15782463 [main] znc 1688 dtable::select_read:  fd 6
  474 15782937 [main] znc 1688 dtable::select_read:  fd 7
  228 15783165 [main] znc 1688 dtable::select_write:  fd 7
  161 15783326 [main] znc 1688 select: sel.always_ready 0
  273 15783599 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58
  628 15784227 [main] znc 1688 select_stuff::wait: m 4, ms 100
  157 15784384 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295
 1198 15785582 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  149 15785731 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
97388 15883119 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4.  verifying
  581 15883700 [main] znc 1688 select_stuff::wait: timed out
  414 15884114 [main] znc 1688 select_stuff::wait: returning 1
  363 15884477 [main] znc 1688 select: res 1
  360 15884837 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  332 15885169 [main] znc 1688 socket_cleanup: si 0x60008E4D0 si->thread 0x1801F68D8
  287 15885456 [socksel] znc 1688 thread_socket: leaving thread_socket
 1058 15886514 [main] znc 1688 socket_cleanup: returning
  354 15886868 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0
12729 15899597 [main] znc 1688 select_stuff::destroy: deleting select records
 1288 15900885 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  334 15901219 [main] znc 1688 select_stuff::destroy: deleting select records
  297 15901516 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
 3263 15904779 [main] znc 1688 time: 1441317698 = time(0x0)
 1020 15905799 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
  225 15906024 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100
  608 15906632 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3
  466 15907098 [main] znc 1688 dtable::select_read:  fd 6
  455 15907553 [main] znc 1688 dtable::select_read:  fd 7
  581 15908134 [main] znc 1688 dtable::select_write:  fd 7
  262 15908396 [main] znc 1688 select: sel.always_ready 0
  428 15908824 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58
  522 15909346 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295
  225 15909571 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  403 15909974 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
 1175 15911149 [main] znc 1688 select_stuff::wait: m 4, ms 100
97126 16008275 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4.  verifying
  481 16008756 [main] znc 1688 select_stuff::wait: timed out
  309 16009065 [main] znc 1688 select_stuff::wait: returning 1
  282 16009347 [main] znc 1688 select: res 1
  268 16009615 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  212 16009827 [main] znc 1688 socket_cleanup: si 0x600078AC0 si->thread 0x1801F68D8
  280 16010107 [socksel] znc 1688 thread_socket: leaving thread_socket
  849 16010956 [main] znc 1688 socket_cleanup: returning
  245 16011201 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0
13159 16024360 [main] znc 1688 select_stuff::destroy: deleting select records
  649 16025009 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  231 16025240 [main] znc 1688 select_stuff::destroy: deleting select records
  330 16025570 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
 6244 16031814 [main] znc 1688 time: 1441317698 = time(0x0)
 1033 16032847 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
  332 16033179 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 871000, ms 871
  702 16033881 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3
  321 16034202 [main] znc 1688 dtable::select_read:  fd 6
  329 16034531 [main] znc 1688 dtable::select_read:  fd 7
  361 16034892 [main] znc 1688 dtable::select_write:  fd 7
  419 16035311 [main] znc 1688 select: sel.always_ready 0
  493 16035804 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58
 1056 16036860 [main] znc 1688 select_stuff::wait: m 4, ms 871
  211 16037071 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295
  824 16037895 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  257 16038152 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
17348 16055500 [socksel] znc 1688 peek_socket: read_ready: 1, write_ready: 1, except_ready: 0
  243 16055743 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  373 16056116 [socksel] znc 1688 thread_socket: leaving thread_socket
  247 16056363 [main] znc 1688 select_stuff::wait: wait_ret 2, m = 4.  verifying
  291 16056654 [main] znc 1688 select_stuff::wait: gotone 1
  323 16056977 [main] znc 1688 select_stuff::wait: returning 0
  348 16057325 [main] znc 1688 select: res 0
  375 16057700 [main] znc 1688 peek_socket: read_ready: 1, write_ready: 1, except_ready: 0
  335 16058035 [main] znc 1688 set_bits: me 0x600079BD0, testing fd 7 ()
  208 16058243 [main] znc 1688 set_bits: ready 2
  275 16058518 [main] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0
  355 16058873 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  276 16059149 [main] znc 1688 socket_cleanup: si 0x60008E4D0 si->thread 0x1801F68D8
  857 16060006 [main] znc 1688 socket_cleanup: returning
  231 16060237 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0
18086 16078323 [main] znc 1688 select_stuff::destroy: deleting select records
  916 16079239 [main] znc 1688 select_stuff::cleanup: calling cleanup routines
  219 16079458 [main] znc 1688 select_stuff::destroy: deleting select records
  243 16079701 [main] znc 1688 cygwin_select: 2 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90)
 1054 16080755 [main] znc 1688 read: read(7, 0x60008E4D0, 4096) nonblocking
   87 16080842 [main] znc 1688 __set_errno: void __set_winsock_errno(const char*, int):235 setting errno 11
   85 16080927 [main] znc 1688 __set_winsock_errno: recv_internal:1601 - winsock error 10035 -> errno 11
  126 16081053 [main] znc 1688 read: -1 = read(7, 0x60008E4D0, -1), errno 11
[2015-09-03 23:01:39.026042] IRC::a::freenode == Connected()
14552 16095605 [main] znc 1688 write: 61 = write(1, 0x600056BB0, 61)
[2015-09-03 23:01:39.042128] (a/freenode) ZNC -> IRC [CAP LS]

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26430944-cygwin-connection-is-not-refused?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github).
Precondition: the port where ZNC is trying to connect to, is closed, so connection should be refused. ``` [2015-09-03 22:55:02.354104] TDNS: IRC::a::freenode, connecting to [10.100.200.2] using bindhost [] [2015-09-03 22:55:03.235521] IRC::a::freenode == Connected() [2015-09-03 22:55:03.235521] (a/freenode) ZNC -> IRC [CAP LS] [2015-09-03 22:55:03.235521] (a/freenode) ZNC -> IRC [NICK a] [2015-09-03 22:55:03.235521] (a/freenode) ZNC -> IRC [USER a "a" "a" :Got ZNC?] [2015-09-03 22:57:03.928596] IRC::a::freenode == Timeout() [2015-09-03 22:57:03.928596] IRC::a::freenode == Disconnected() ``` It happens for both IPv6 and IPv4, I also tried to compile with --disable-ipv6, the result is the same. Commit 0211b34a099300d8f871567512eef8af7cebb5e6 strace follows: ``` [2015-09-03 23:01:37.932167] TDNS: IRC::a::freenode, connecting to [10.100.200.2] using bindhost [] 17531 15039618 [main] znc 1688 write: 100 = write(1, 0x600056BB0, 100) 4728 15044346 [main] znc 1688 close: close(7) 220 15044566 [main] znc 1688 fhandler_base::close: closing '/dev/urandom' handle 0x30C 321 15044887 [main] znc 1688 close: 0 = close(7) 4473 15049360 [main] znc 1688 cygwin_socket: socket (2, 1 (flags 0x0), 6) 301 15049661 [main] znc 1688 build_fh_pc: fh 0x18032B718, dev 001E0024 274 15049935 [main] znc 1688 fhandler_base::set_flags: flags 0x10002, supplied_bin 0x0 221 15050156 [main] znc 1688 fhandler_base::set_flags: O_TEXT/O_BINARY set in flags 0x10000 296 15050452 [main] znc 1688 fhandler_base::set_flags: filemode set to binary 284 15050736 [main] znc 1688 fdsock: fd 7, name '', soc 0x310 304 15051040 [main] znc 1688 cygwin_socket: 7 = socket(2, 1 (flags 0x0), 6) 293 15051333 [main] znc 1688 fcntl64: fcntl(7, 1, ...) 307 15051640 [main] znc 1688 fcntl64: 0 = fcntl(7, 1, 0x0) 323 15051963 [main] znc 1688 fcntl64: fcntl(7, 2, ...) 293 15052256 [main] znc 1688 fhandler_base::set_close_on_exec: set close_on_exec for to 1 255 15052511 [main] znc 1688 fcntl64: 0 = fcntl(7, 2, 0x1) 249 15052760 [main] znc 1688 fcntl64: fcntl(7, 3, ...) 238 15052998 [main] znc 1688 fhandler_base::fcntl: GETFL: 0x10002 270 15053268 [main] znc 1688 fcntl64: 65538 = fcntl(7, 3, 0x0) 306 15053574 [main] znc 1688 fcntl64: fcntl(7, 4, ...) 322 15053896 [main] znc 1688 fhandler_socket::ioctl: socket is now nonblocking 312 15054208 [main] znc 1688 fhandler_socket::ioctl: 0 = ioctl_socket(8004667E, 0x22BFDC) 310 15054518 [main] znc 1688 fhandler_base::set_flags: flags 0x14002, supplied_bin 0x0 259 15054777 [main] znc 1688 fhandler_base::set_flags: O_TEXT/O_BINARY set in flags 0x10000 409 15055186 [main] znc 1688 fhandler_base::set_flags: filemode set to binary 215 15055401 [main] znc 1688 fcntl64: 0 = fcntl(7, 4, 0x14002) --- Process 1688 thread 2844 created 789 15056190 [main] znc 1688 __set_errno: void __set_winsock_errno(const char*, int):235 setting errno 119 360 15056550 [main] znc 1688 __set_winsock_errno: connect:1230 - winsock error 10036 -> errno 119 187 15056737 [main] znc 1688 cygwin_connect: -1 = connect(7, 0x600078E2C, 16), errno 119 1547 15058284 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 346 15058630 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100 619 15059249 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3 661 15059910 [main] znc 1688 dtable::select_read: fd 6 342 15060252 [main] znc 1688 dtable::select_read: fd 7 361 15060613 [main] znc 1688 dtable::select_write: fd 7 214 15060827 [main] znc 1688 select: sel.always_ready 0 541 15061368 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58 1409 15062777 [main] znc 1688 select_stuff::wait: m 4, ms 100 7987 15070764 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295 922 15071686 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 269 15071955 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 109245 15181200 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4. verifying 307 15181507 [main] znc 1688 select_stuff::wait: timed out 371 15181878 [main] znc 1688 select_stuff::wait: returning 1 217 15182095 [main] znc 1688 select: res 1 266 15182361 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 190 15182551 [main] znc 1688 socket_cleanup: si 0x600078AC0 si->thread 0x1801F68D8 13769 15196320 [socksel] znc 1688 thread_socket: leaving thread_socket 796 15197116 [main] znc 1688 socket_cleanup: returning 345 15197461 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0 14320 15211781 [main] znc 1688 select_stuff::destroy: deleting select records 1037 15212818 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 181 15212999 [main] znc 1688 select_stuff::destroy: deleting select records 169 15213168 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 2174 15215342 [main] znc 1688 time: 1441317698 = time(0x0) 811 15216153 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 142 15216295 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100 426 15216721 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3 257 15216978 [main] znc 1688 dtable::select_read: fd 6 397 15217375 [main] znc 1688 dtable::select_read: fd 7 169 15217544 [main] znc 1688 dtable::select_write: fd 7 226 15217770 [main] znc 1688 select: sel.always_ready 0 553 15218323 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58 807 15219130 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295 381 15219511 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 330 15219841 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 964 15220805 [main] znc 1688 select_stuff::wait: m 4, ms 100 99883 15320688 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4. verifying 429 15321117 [main] znc 1688 select_stuff::wait: timed out 1142 15322259 [main] znc 1688 select_stuff::wait: returning 1 411 15322670 [main] znc 1688 select: res 1 240 15322910 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 351 15323261 [main] znc 1688 socket_cleanup: si 0x60008E4D0 si->thread 0x1801F68D8 192 15323453 [socksel] znc 1688 thread_socket: leaving thread_socket 862 15324315 [main] znc 1688 socket_cleanup: returning 259 15324574 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0 12076 15336650 [main] znc 1688 select_stuff::destroy: deleting select records 1131 15337781 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 253 15338034 [main] znc 1688 select_stuff::destroy: deleting select records 351 15338385 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 2338 15340723 [main] znc 1688 time: 1441317698 = time(0x0) 1295 15342018 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 243 15342261 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100 1186 15343447 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3 543 15343990 [main] znc 1688 dtable::select_read: fd 6 410 15344400 [main] znc 1688 dtable::select_read: fd 7 287 15344687 [main] znc 1688 dtable::select_write: fd 7 247 15344934 [main] znc 1688 select: sel.always_ready 0 414 15345348 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58 800 15346148 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295 588 15346736 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 212 15346948 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 3769 15350717 [main] znc 1688 select_stuff::wait: m 4, ms 100 94898 15445615 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4. verifying 204 15445819 [main] znc 1688 select_stuff::wait: timed out 212 15446031 [main] znc 1688 select_stuff::wait: returning 1 261 15446292 [main] znc 1688 select: res 1 248 15446540 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 274 15446814 [main] znc 1688 socket_cleanup: si 0x600078AC0 si->thread 0x1801F68D8 204 15447018 [socksel] znc 1688 thread_socket: leaving thread_socket 1356 15448374 [main] znc 1688 socket_cleanup: returning 233 15448607 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0 12956 15461563 [main] znc 1688 select_stuff::destroy: deleting select records 867 15462430 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 232 15462662 [main] znc 1688 select_stuff::destroy: deleting select records 195 15462857 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 2089 15464946 [main] znc 1688 time: 1441317698 = time(0x0) 515 15465461 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 245 15465706 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100 418 15466124 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3 295 15466419 [main] znc 1688 dtable::select_read: fd 6 315 15466734 [main] znc 1688 dtable::select_read: fd 7 147 15466881 [main] znc 1688 dtable::select_write: fd 7 184 15467065 [main] znc 1688 select: sel.always_ready 0 362 15467427 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58 10677 15478104 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295 390 15478494 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 417 15478911 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 1398 15480309 [main] znc 1688 select_stuff::wait: m 4, ms 100 106019 15586328 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4. verifying 283 15586611 [main] znc 1688 select_stuff::wait: timed out 606 15587217 [main] znc 1688 select_stuff::wait: returning 1 425 15587642 [main] znc 1688 select: res 1 217 15587859 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 158 15588017 [main] znc 1688 socket_cleanup: si 0x60008E4D0 si->thread 0x1801F68D8 14469 15602486 [socksel] znc 1688 thread_socket: leaving thread_socket 751 15603237 [main] znc 1688 socket_cleanup: returning 351 15603588 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0 14467 15618055 [main] znc 1688 select_stuff::destroy: deleting select records 925 15618980 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 226 15619206 [main] znc 1688 select_stuff::destroy: deleting select records 258 15619464 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 8791 15628255 [main] znc 1688 time: 1441317698 = time(0x0) 610 15628865 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 166 15629031 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100 378 15629409 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3 441 15629850 [main] znc 1688 dtable::select_read: fd 6 273 15630123 [main] znc 1688 dtable::select_read: fd 7 4559 15634682 [main] znc 1688 dtable::select_write: fd 7 213 15634895 [main] znc 1688 select: sel.always_ready 0 269 15635164 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58 296 15635460 [main] znc 1688 select_stuff::wait: m 4, ms 100 64 15635524 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295 102 15635626 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 57 15635683 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 106824 15742507 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4. verifying 188 15742695 [main] znc 1688 select_stuff::wait: timed out 194 15742889 [main] znc 1688 select_stuff::wait: returning 1 213 15743102 [main] znc 1688 select: res 1 155 15743257 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 155 15743412 [main] znc 1688 socket_cleanup: si 0x600078AC0 si->thread 0x1801F68D8 381 15743793 [socksel] znc 1688 thread_socket: leaving thread_socket 412 15744205 [main] znc 1688 socket_cleanup: returning 244 15744449 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0 14220 15758669 [main] znc 1688 select_stuff::destroy: deleting select records 963 15759632 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 489 15760121 [main] znc 1688 select_stuff::destroy: deleting select records 13966 15774087 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 4252 15778339 [main] znc 1688 time: 1441317698 = time(0x0) 2569 15780908 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 657 15781565 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100 594 15782159 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3 304 15782463 [main] znc 1688 dtable::select_read: fd 6 474 15782937 [main] znc 1688 dtable::select_read: fd 7 228 15783165 [main] znc 1688 dtable::select_write: fd 7 161 15783326 [main] znc 1688 select: sel.always_ready 0 273 15783599 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58 628 15784227 [main] znc 1688 select_stuff::wait: m 4, ms 100 157 15784384 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295 1198 15785582 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 149 15785731 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 97388 15883119 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4. verifying 581 15883700 [main] znc 1688 select_stuff::wait: timed out 414 15884114 [main] znc 1688 select_stuff::wait: returning 1 363 15884477 [main] znc 1688 select: res 1 360 15884837 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 332 15885169 [main] znc 1688 socket_cleanup: si 0x60008E4D0 si->thread 0x1801F68D8 287 15885456 [socksel] znc 1688 thread_socket: leaving thread_socket 1058 15886514 [main] znc 1688 socket_cleanup: returning 354 15886868 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0 12729 15899597 [main] znc 1688 select_stuff::destroy: deleting select records 1288 15900885 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 334 15901219 [main] znc 1688 select_stuff::destroy: deleting select records 297 15901516 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 3263 15904779 [main] znc 1688 time: 1441317698 = time(0x0) 1020 15905799 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 225 15906024 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 100000, ms 100 608 15906632 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3 466 15907098 [main] znc 1688 dtable::select_read: fd 6 455 15907553 [main] znc 1688 dtable::select_read: fd 7 581 15908134 [main] znc 1688 dtable::select_write: fd 7 262 15908396 [main] znc 1688 select: sel.always_ready 0 428 15908824 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58 522 15909346 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295 225 15909571 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 403 15909974 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 1175 15911149 [main] znc 1688 select_stuff::wait: m 4, ms 100 97126 16008275 [main] znc 1688 select_stuff::wait: wait_ret 258, m = 4. verifying 481 16008756 [main] znc 1688 select_stuff::wait: timed out 309 16009065 [main] znc 1688 select_stuff::wait: returning 1 282 16009347 [main] znc 1688 select: res 1 268 16009615 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 212 16009827 [main] znc 1688 socket_cleanup: si 0x600078AC0 si->thread 0x1801F68D8 280 16010107 [socksel] znc 1688 thread_socket: leaving thread_socket 849 16010956 [main] znc 1688 socket_cleanup: returning 245 16011201 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0 13159 16024360 [main] znc 1688 select_stuff::destroy: deleting select records 649 16025009 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 231 16025240 [main] znc 1688 select_stuff::destroy: deleting select records 330 16025570 [main] znc 1688 cygwin_select: 0 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 6244 16031814 [main] znc 1688 time: 1441317698 = time(0x0) 1033 16032847 [main] znc 1688 cygwin_select: select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 332 16033179 [main] znc 1688 cygwin_select: to->tv_sec 0, to->tv_usec 871000, ms 871 702 16033881 [main] znc 1688 dtable::select_read: /dev/fd/pipe:[3] fd 3 321 16034202 [main] znc 1688 dtable::select_read: fd 6 329 16034531 [main] znc 1688 dtable::select_read: fd 7 361 16034892 [main] znc 1688 dtable::select_write: fd 7 419 16035311 [main] znc 1688 select: sel.always_ready 0 493 16035804 [main] znc 1688 start_thread_socket: stuff_start 0x22BC58 1056 16036860 [main] znc 1688 select_stuff::wait: m 4, ms 871 211 16037071 [socksel] znc 1688 thread_socket: stuff_start 0x22BC58, timeout 4294967295 824 16037895 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 257 16038152 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 17348 16055500 [socksel] znc 1688 peek_socket: read_ready: 1, write_ready: 1, except_ready: 0 243 16055743 [socksel] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 373 16056116 [socksel] znc 1688 thread_socket: leaving thread_socket 247 16056363 [main] znc 1688 select_stuff::wait: wait_ret 2, m = 4. verifying 291 16056654 [main] znc 1688 select_stuff::wait: gotone 1 323 16056977 [main] znc 1688 select_stuff::wait: returning 0 348 16057325 [main] znc 1688 select: res 0 375 16057700 [main] znc 1688 peek_socket: read_ready: 1, write_ready: 1, except_ready: 0 335 16058035 [main] znc 1688 set_bits: me 0x600079BD0, testing fd 7 () 208 16058243 [main] znc 1688 set_bits: ready 2 275 16058518 [main] znc 1688 peek_socket: read_ready: 0, write_ready: 0, except_ready: 0 355 16058873 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 276 16059149 [main] znc 1688 socket_cleanup: si 0x60008E4D0 si->thread 0x1801F68D8 857 16060006 [main] znc 1688 socket_cleanup: returning 231 16060237 [main] znc 1688 socket_cleanup: si 0x0 si->thread 0x0 18086 16078323 [main] znc 1688 select_stuff::destroy: deleting select records 916 16079239 [main] znc 1688 select_stuff::cleanup: calling cleanup routines 219 16079458 [main] znc 1688 select_stuff::destroy: deleting select records 243 16079701 [main] znc 1688 cygwin_select: 2 = select(8, 0x22BE40, 0x22BE20, 0x22BE00, 0x22BE90) 1054 16080755 [main] znc 1688 read: read(7, 0x60008E4D0, 4096) nonblocking 87 16080842 [main] znc 1688 __set_errno: void __set_winsock_errno(const char*, int):235 setting errno 11 85 16080927 [main] znc 1688 __set_winsock_errno: recv_internal:1601 - winsock error 10035 -> errno 11 126 16081053 [main] znc 1688 read: -1 = read(7, 0x60008E4D0, -1), errno 11 [2015-09-03 23:01:39.026042] IRC::a::freenode == Connected() 14552 16095605 [main] znc 1688 write: 61 = write(1, 0x600056BB0, 61) [2015-09-03 23:01:39.042128] (a/freenode) ZNC -> IRC [CAP LS] ``` ## <bountysource-plugin> --- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26430944-cygwin-connection-is-not-refused?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github). </bountysource-plugin> <!-- github-sync-id:104791211 -->
Author
Owner

Precondition: the port where ZNC is trying to connect to, is closed, so connection should be refused.

  • If the port is closed you won't get any kind of reply from it.
  • If the port is closed with normal firewall, all traffic to it is dropped so you don't know about the firewall. * Alternatively the firewall can be configured to reject traffic in which case it tells you "Connection refused."
    • This is unusual though, because it usually makes no sense to inform attacker or network scanner that there A) is the firewall. B) the host exists.
    • I use this with port 113/TCP to not have to wait for ident checks to timeout at IRC on hosts which don't have identd.
> Precondition: the port where ZNC is trying to connect to, is closed, so connection should be refused. - If the port is closed you won't get any kind of reply from it. - If the port is closed with normal firewall, all traffic to it is dropped so you don't know about the firewall. \* Alternatively the firewall can be configured to reject traffic in which case it tells you "Connection refused." - This is unusual though, because it usually makes no sense to inform attacker or network scanner that there A) is the firewall. B) the host exists. - I use this with port 113/TCP to not have to wait for ident checks to timeout at IRC on hosts which don't have identd. <!-- github-comment-id:137646992 -->
Author
Owner

ZNC is enabled in firewall.

There is a difference between not sending anything in response, sending RST response and sending SYN-ACK response.
Not sending anything: connection should time out.
Sending RST: connection is actively refused.
Sending SYN-ACK: connection is established, client should proceed with ACK and data.

I've checked that socat installation on the same cygwin reports "connection refused" as expected, so RST packet is received by client. But ZNC interprets it wrong for some reason.

ZNC is enabled in firewall. There is a difference between not sending anything in response, sending RST response and sending SYN-ACK response. Not sending anything: connection should time out. Sending RST: connection is actively refused. Sending SYN-ACK: connection is established, client should proceed with ACK and data. I've checked that socat installation on the same cygwin reports "connection refused" as expected, so RST packet is received by client. But ZNC interprets it wrong for some reason. <!-- github-comment-id:137661287 -->
Author
Owner

So the socket (fd 7) comes back as both readable and writable from select and thus Csocket thinks that the connection is now successfully established. Third last line:

 85 16080927 [main] znc 1688 __set_winsock_errno: recv_internal:1601 - winsock error 10035 -> errno 11

10035 is WSAWOULDBLOCK according to Google.

So the socket is readable, but there is nothing to read from it? Weird.

Google finds: http://itamarst.org/writings/win32sockets.html

Detecting failed connects is done using exception list of select(2)
  On Unix, a failed connect will return an error upon reading or writing from the socket,
  and select() will mark the socket as notified. The exception list in select(2) is used for
  detecting OOB data. On Windows, not the read or write lists but rather the exception
  list is used for detecting failed connects. 
On Windows failed connects, reads and writes still return WSAEWOULDBLOCK
  Reads or writes to the socket will return a WSAEWOULDBLOCK even if connection failed.
  The errno is available via getsockopt with SO_ERROR.

Looking at the source, the exception list is always empty and thus ignored: https://github.com/jimloco/Csocket/blob/master/Csocket.cc#L3696

Thus, the connection failed and this would be signalled via the third fd_set in select(), but Csocket does not ask for this information. Instead it expects recv() and write() to return this information, but apparently they just fail with EAGAIN on Cygwin in this case.

This is a bug in Csocket. As explained in the above link, something needs to use getsockopt() to get the error. I think that this would also work on Linux, but I am not sure.

So the socket (fd 7) comes back as both readable and writable from `select` and thus Csocket thinks that the connection is now successfully established. Third last line: ``` 85 16080927 [main] znc 1688 __set_winsock_errno: recv_internal:1601 - winsock error 10035 -> errno 11 ``` 10035 is WSAWOULDBLOCK according to Google. So the socket is readable, but there is nothing to read from it? Weird. Google finds: http://itamarst.org/writings/win32sockets.html ``` Detecting failed connects is done using exception list of select(2) On Unix, a failed connect will return an error upon reading or writing from the socket, and select() will mark the socket as notified. The exception list in select(2) is used for detecting OOB data. On Windows, not the read or write lists but rather the exception list is used for detecting failed connects. On Windows failed connects, reads and writes still return WSAEWOULDBLOCK Reads or writes to the socket will return a WSAEWOULDBLOCK even if connection failed. The errno is available via getsockopt with SO_ERROR. ``` Looking at the source, the exception list is always empty and thus ignored: https://github.com/jimloco/Csocket/blob/master/Csocket.cc#L3696 Thus, the connection failed and this would be signalled via the third fd_set in `select()`, but Csocket does not ask for this information. Instead it expects `recv()` and `write()` to return this information, but apparently they just fail with `EAGAIN` on Cygwin in this case. This is a bug in Csocket. As explained in the above link, `something` needs to use `getsockopt()` to get the error. I _think_ that this would also work on Linux, but I am not sure. <!-- github-comment-id:137676526 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/znc#565