00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:16:50  * jasnelljoined
00:25:20  * tunniclm_joined
00:35:28  * Ralithquit (Ping timeout: 268 seconds)
00:38:06  * qardquit (Quit: My Mac has gone to sleep. ZZZzzz…)
00:51:26  * Ralithjoined
00:53:37  * WalrusPony1joined
00:55:37  * WalrusPonyquit (Ping timeout: 264 seconds)
01:01:18  * jasnellquit (Quit: Leaving...)
01:06:41  * Dirksonjoined
01:07:11  <Dirkson>Hey all. Does libuv provide any built in ways to tell when a remote tcp connection has stopped responding?
01:08:44  <Ralith>libuv does not mask the standard TCP facilities exposed by the OS which do that
01:09:25  <Dirkson>Ralith: Are you saying that OSes provide that functionality, but libuv does not?
01:09:57  <Ralith>no, I'm saying that libuv exposes it in the same way it exposes all other TCP behavior
01:10:16  <Ralith>i.e. by a very thin wrapper around the common functionality
01:10:34  <Dirkson>Ok, cool. What keywords should I be looking for? Libuv is the first time I've fuddled around with TCP.
01:11:59  <Ralith>the POSIX API documentation for read(3) persuant to streams may be of interest
01:12:28  <Ralith>note that libuv read callbacks forward error codes translated to UV error codes in the ssize_t argument of the read callback
01:13:44  <Ralith>note also uv_strerror as useful for human-readable error reporting
01:14:38  <Ralith>of particular interest for TCP over WAN are ECONNRESET and ETIMEDOUT, which should be pretty self-explanatory
01:16:24  <Ralith>(typically prefix UV_ for the translated code)
01:16:56  <Dirkson>Looks like my libuv code already monitors for these errors and spits them out to console. Yay for forgetting I implemented stuff! Now I just need to lift the error message up in my stack so I can show the user : )
01:17:28  <Dirkson>Although curiously, I seem to get EOF rather than ECONNRESET or ETIMEOUT when I bring the server down, even with kill -9
01:18:16  <Ralith>you should expect a reset in that circumstance
01:18:24  * avalanche123quit (Remote host closed the connection)
01:19:04  <Dirkson>Ralith: But I don't seem to get one... Interesting, but probably not worth chasing down, I'm thinking - Any consistent error is good enough for what I need.
01:19:23  <Ralith>if you kill -9 the other end of the connection, I am sure you are receiving a reset
01:20:52  <Dirkson>And thus you're thinking my error reading code is wonky? I'm not sure, it seems simple enough: Error("Error reading TCP data: %i | %s | %s", NumberRead, uv_err_name(NumberRead), uv_strerror(NumberRead)); Which results in: *ERR: Error reading TCP data: -4095 | EOF | end of file
01:23:20  <Ralith>NumberRead is the unmodified argument to the read callback?
01:24:35  <Dirkson>Ralith: Verifying... Yes.
01:25:08  <Ralith>then it might be interesting to examine a wire dump of the exchange
01:26:16  <Ralith>perhaps the linux TCP stack is weirder than I gave it credit for
01:26:28  <Dirkson>From my user's perspective, one error is mostly like another, so my needs are met. If there's some fuddling around with wireshark that might be useful/informative for you guys, though, I might be able to give it a go : )
01:26:53  <Ralith>no need
01:27:14  <Dirkson>But I definitely agree that getting back EOF from a tcp connection is interesting and unexpected behavior : )
01:27:18  <Ralith>that would actually explain some weird behavior I've been debugging at work recently, too
01:27:36  <Ralith>normally you'd get that after a graceful shutdown
01:28:03  <Dirkson>Interesting
01:28:06  <Ralith>if your information is accurate and libuv is not broken here (unlikely), it would appear that linux performs a graceful shutdown on its own after your process dies
01:28:28  <Dirkson>Hunh. Is that a good thing or not?
01:28:44  <Ralith>it shouldn't be of consequence
01:29:39  <Ralith>you can contrast it to the behavior you'll see if you explicitly close(3) the remote socket, or put the server on another computer and cut the power, then plug it back in before timeout
01:29:41  * jasnelljoined
01:30:01  <Dirkson>*nods*
01:31:55  * jasnellquit (Remote host closed the connection)
01:43:49  * jasnelljoined
01:47:49  * jgiquit (Quit: jgi)
01:48:33  * tunniclm_quit (Ping timeout: 272 seconds)
02:09:48  * jasnellquit (Remote host closed the connection)
02:19:03  * avalanche123joined
02:22:45  * jasnelljoined
02:23:44  * avalanche123quit (Ping timeout: 246 seconds)
02:27:51  * orangemocha_quit (Ping timeout: 260 seconds)
02:30:58  * orangemochajoined
02:59:18  * Bi3oNjoined
03:02:41  * Bi3oNquit (Client Quit)
03:06:30  * Bi3oNjoined
03:06:38  * zju1joined
03:07:40  * zju4quit (Ping timeout: 240 seconds)
03:07:43  * zju3quit (Ping timeout: 250 seconds)
03:07:58  * zjujoined
03:27:36  * jasnellquit (Remote host closed the connection)
03:36:07  * jasnelljoined
04:02:18  * jgijoined
04:15:44  * avalanche123joined
04:16:39  * avalanche123quit (Client Quit)
04:34:55  * jgiquit (Quit: jgi)
04:35:34  * jgijoined
04:42:47  * inolenjoined
04:55:19  * toothrotquit (Ping timeout: 260 seconds)
05:37:35  * jgiquit (Quit: jgi)
05:44:29  * jasnellquit (Remote host closed the connection)
05:59:01  * mmickojoined
06:12:26  * Bi3oNquit (Ping timeout: 250 seconds)
06:47:56  * AndreasMadsenjoined
07:14:09  * saghul_quit (Remote host closed the connection)
07:20:46  * rendarjoined
07:25:25  * saghuljoined
07:39:28  * seishunjoined
08:23:43  * seishunquit (Disconnected by services)
08:23:51  * seishunjoined
08:34:55  * SergeiRNDjoined
09:16:38  * jonetquit (Ping timeout: 256 seconds)
10:25:04  * tunniclm_joined
11:02:10  * SergeiRNDquit (Quit: Leaving.)
11:02:29  * AndreasMadsenquit
11:03:08  * SergeiRNDjoined
11:05:11  * SergeiRNDquit (Client Quit)
11:37:46  * felipealmeidaquit (Ping timeout: 252 seconds)
11:38:18  * SergeiRNDjoined
11:43:59  * toothrotjoined
11:47:49  * AndreasMadsenjoined
12:14:49  * toothrotquit (Ping timeout: 264 seconds)
12:20:32  * toothrotjoined
12:39:48  * tunniclm_quit (Ping timeout: 264 seconds)
12:50:19  * trevnorrisquit (Quit: quit all you want)
12:50:21  * Bi3oNjoined
13:18:12  * toothrotquit (Ping timeout: 264 seconds)
13:24:54  * Bi3oNquit (Ping timeout: 250 seconds)
13:31:37  * alexforsterjoined
13:37:19  * AndreasMadsenquit (Remote host closed the connection)
13:44:00  * alexforsterquit
13:45:18  * alexforsterjoined
13:54:21  * AndreasMadsenjoined
14:36:50  * mmickoquit (Ping timeout: 250 seconds)
14:39:22  * jasnelljoined
14:45:08  * rmgquit (Remote host closed the connection)
14:47:32  * SergeiRNDquit (Quit: Leaving.)
14:48:16  * stagasjoined
15:13:19  * felipealmeidajoined
15:26:12  * rmgjoined
15:28:22  * jasnell_joined
15:28:41  * jhamhaderjoined
15:29:13  * stagasquit (Ping timeout: 264 seconds)
15:30:46  * jhamhaderquit (Client Quit)
15:32:02  * jasnellquit (Read error: Connection reset by peer)
15:32:49  * jhamhaderjoined
15:36:38  * jhamhaderquit (Client Quit)
15:37:41  * jhamhaderjoined
15:38:19  * jhamhaderquit (Client Quit)
15:40:20  * felipealmeidaquit (Ping timeout: 246 seconds)
15:40:35  * jhamhaderjoined
15:46:52  * felipealmeidajoined
15:47:29  * jhamhaderquit (Quit: leaving)
15:48:02  * jhamhaderjoined
15:51:48  * dap_joined
16:02:36  * jgijoined
16:08:22  * davijoined
16:14:15  * jgiquit (Quit: jgi)
16:15:49  * jgijoined
16:16:02  * jgiquit (Client Quit)
16:16:23  * jan____joined
16:17:01  * jan____quit (Changing host)
16:17:02  * jan____joined
16:18:16  * stagasjoined
16:27:55  * qardjoined
16:33:40  * daviquit (Remote host closed the connection)
16:40:11  * Ralithquit (Ping timeout: 240 seconds)
16:40:57  * davijoined
16:46:52  * jgijoined
17:04:57  * Ralithjoined
17:13:41  * jasnelljoined
17:15:31  * jasnell_quit (Ping timeout: 240 seconds)
17:40:04  * AndreasMadsenquit (Remote host closed the connection)
18:19:53  * AndreasMadsenjoined
18:22:03  * jasnellquit (Remote host closed the connection)
18:33:19  * SergeiRNDjoined
18:34:58  * mmickojoined
18:47:00  * jasnelljoined
18:48:51  * stagasquit (Ping timeout: 265 seconds)
18:52:01  * rendarquit (Ping timeout: 272 seconds)
18:57:39  * rendarjoined
19:43:40  * SergeiRNDquit (Quit: Leaving.)
19:53:06  * trevnorrisjoined
19:54:41  * tunniclm_joined
20:14:32  * jgiquit (Quit: jgi)
20:18:48  * Damn3dquit (Ping timeout: 264 seconds)
20:25:08  * Damn3djoined
20:28:34  * qardquit (Quit: Textual IRC Client: www.textualapp.com)
20:29:56  * AndreasMadsenquit (Remote host closed the connection)
20:31:58  * jgijoined
20:38:41  * daviquit (Ping timeout: 246 seconds)
20:41:36  * seishunquit (Ping timeout: 264 seconds)
20:42:33  * jgiquit (Quit: jgi)
20:46:05  * jgijoined
21:11:36  * qardjoined
21:20:52  * jasnellquit (Remote host closed the connection)
21:37:19  * jhamhaderquit (Quit: leaving)
21:40:20  * alexforsterquit
21:46:31  * stagasjoined
21:56:19  * rmgquit (Remote host closed the connection)
21:58:51  * stagasquit (Ping timeout: 240 seconds)
21:58:55  * stagas_joined
22:04:42  * toothrotjoined
22:24:26  * qardquit (Quit: My Mac has gone to sleep. ZZZzzz…)
22:40:23  * qardjoined
22:41:32  * qardquit (Read error: Connection reset by peer)
22:42:41  * qardjoined
22:46:32  * rendarquit
22:47:19  * qardquit (Client Quit)
22:48:12  * tunniclm_quit (Ping timeout: 264 seconds)
22:49:15  * toothrotquit (Read error: Connection reset by peer)
22:50:30  * toothrotjoined
22:55:29  * toothrotquit (Quit: here we are)
23:03:00  * toothrotjoined
23:19:26  * stagas_quit (Ping timeout: 250 seconds)
23:39:59  * alexforsterjoined
23:50:29  * jasnelljoined
23:53:07  * toothrotquit (Ping timeout: 250 seconds)
23:56:52  * toothrotjoined