00:03:03  * brsonjoined
00:05:14  * piscisaureus_joined
00:07:40  * lwillequit (Quit: Leaving...)
00:30:31  * hacksonpart
00:30:34  * hacksonjoined
00:32:02  * hacksonpart
00:32:17  * hacksonjoined
00:32:28  * hacksonpart
00:33:20  * hacksonjoined
00:46:19  * mikealjoined
00:58:52  * mmaleckichanged nick to mmalecki[zzz]
01:02:50  * mikealquit (Quit: Leaving.)
01:03:40  * xaqjoined
01:18:37  * brsonquit (Ping timeout: 245 seconds)
01:23:49  * orlandovftwquit (Ping timeout: 248 seconds)
01:34:32  * brsonjoined
02:07:49  * lwillejoined
02:10:37  * piscisaureus_quit (Read error: Connection reset by peer)
02:12:34  * lwillequit (Ping timeout: 260 seconds)
02:38:50  * brsonquit (Quit: leaving)
02:41:24  * xaqquit (Remote host closed the connection)
02:43:56  * xaqjoined
02:48:03  * AvianFluquit (Quit: Leaving)
03:05:46  * orlandovftwjoined
03:15:39  * isaacsjoined
03:17:58  * TooTallNatequit (Ping timeout: 255 seconds)
03:25:28  <isaacs>hello
03:28:05  * xaqquit (Remote host closed the connection)
03:32:45  <sh1mmer>hi
03:42:24  * orlandovftwquit (Ping timeout: 240 seconds)
03:53:55  * orlandovftwjoined
04:19:49  * benviequit (Ping timeout: 248 seconds)
04:47:48  * `3rdEdenjoined
05:01:25  * felixgejoined
05:01:25  * felixgequit (Changing host)
05:01:25  * felixgejoined
05:05:38  * benviejoined
05:15:04  * xaqjoined
05:57:19  * `3rdEdenquit (Quit: ZZZZzzz)
05:59:44  * felixgequit (Quit: http://www.debuggable.com/)
06:04:32  * mralephjoined
06:44:23  * xaqquit (Remote host closed the connection)
06:58:02  * mralephquit (Quit: Leaving.)
07:25:06  * mjr_joined
07:31:23  * AvianFlujoined
07:34:02  * mikealjoined
07:39:12  * TooTallNatejoined
07:39:53  * TooTallNatequit (Client Quit)
07:53:13  <indutny>heyea
07:53:17  <indutny>any C guys here?
08:26:04  * isaacsquit (Remote host closed the connection)
08:26:43  * isaacsjoined
08:32:05  * isaacsquit (Ping timeout: 248 seconds)
08:32:35  * paddybyersjoined
08:52:07  * mjr_quit (Quit: mjr_)
09:04:26  * mikeal1joined
09:04:28  * mikealquit (Read error: Connection reset by peer)
09:17:39  * orlandovftwquit (Ping timeout: 252 seconds)
09:25:19  * benviequit
09:30:44  * mmalecki[zzz]changed nick to mmalecki
10:14:56  * mikeal1quit (Read error: Connection reset by peer)
10:14:56  * mikealjoined
10:21:25  * mikeal1joined
10:21:26  * mikealquit (Read error: Connection reset by peer)
11:46:58  * AvianFlu_joined
11:47:12  * AvianFluquit (Ping timeout: 255 seconds)
11:47:47  * AvianFlu_changed nick to AvianFlu
12:14:30  * AvianFluquit (Quit: Leaving)
13:20:18  * lwillejoined
13:34:35  * piscisaureus_joined
13:43:31  <piscisaureus_>hello
13:55:06  * paddybyers_joined
13:56:34  * paddybyersquit (Ping timeout: 245 seconds)
13:56:37  * paddybyers_changed nick to paddybyers
14:07:57  * paddybyers_joined
14:11:20  * paddybyersquit (Ping timeout: 244 seconds)
14:11:20  * paddybyers_changed nick to paddybyers
14:36:24  * paddybyersquit (Quit: paddybyers)
14:38:04  * paddybyersjoined
14:39:05  * paddybyersquit (Client Quit)
14:44:43  <piscisaureus_>bnoordhuis: yt?
15:19:25  * mikeal1quit (Quit: Leaving.)
15:24:58  * mikealjoined
15:34:12  * ljacksonquit (*.net *.split)
15:34:27  * CIA-115quit (*.net *.split)
15:34:33  * mikealquit (*.net *.split)
15:34:34  * mrb_bkquit (*.net *.split)
15:34:34  * Raynosquit (*.net *.split)
15:34:34  * sh1mmerquit (*.net *.split)
15:34:34  * rphillipsquit (*.net *.split)
15:34:34  * sj26quit (*.net *.split)
15:34:34  * russell_hquit (*.net *.split)
15:34:34  * indutnyquit (*.net *.split)
15:34:35  * piscisaureus_quit (*.net *.split)
15:34:35  * kohaiquit (*.net *.split)
15:34:37  * raggiquit (*.net *.split)
15:34:37  * pquernaquit (*.net *.split)
15:34:37  * dannycoatesquit (*.net *.split)
15:34:38  * txdv2quit (*.net *.split)
15:34:38  * mmaleckiquit (*.net *.split)
15:34:38  * ryah_quit (*.net *.split)
15:34:39  * arlolraquit (*.net *.split)
15:34:39  * ircretaryquit (*.net *.split)
15:34:39  * DrPizzaquit (*.net *.split)
15:34:39  * philipsquit (*.net *.split)
15:34:39  * lwillequit (*.net *.split)
15:34:39  * CoverSlidequit (*.net *.split)
15:34:40  * chiltsquit (*.net *.split)
15:39:41  * hacksonquit (Ping timeout: 244 seconds)
15:41:44  * perezdquit (Read error: Connection timed out)
15:55:37  * isaacsjoined
16:06:55  * wsirc_1631353joined
16:06:55  * mjr_joined
16:06:55  * CIA-115joined
16:06:55  * ljacksonjoined
16:06:55  * perezdjoined
16:06:55  * raggijoined
16:06:55  * dannycoatesjoined
16:06:55  * arlolrajoined
16:06:55  * DrPizzajoined
16:06:55  * chiltsjoined
16:06:55  * ircretaryjoined
16:06:55  * indutnyjoined
16:06:55  * ryah_joined
16:06:55  * philipsjoined
16:06:55  * russell_hjoined
16:06:55  * mmaleckijoined
16:06:55  * pquernajoined
16:06:55  * txdv2joined
16:06:55  * sj26joined
16:06:55  * CoverSlidejoined
16:06:55  * rphillipsjoined
16:06:55  * sh1mmerjoined
16:06:55  * Raynosjoined
16:06:55  * kohaijoined
16:06:55  * mrb_bkjoined
16:06:55  * lwillejoined
16:06:55  * piscisaureus_joined
16:06:55  * hacksonjoined
16:08:48  * wsirc_1631353quit (Remote host closed the connection)
16:11:09  * sh1mmerquit (Quit: sh1mmer)
16:33:29  * xaqjoined
16:38:05  * TooTallNatejoined
16:46:34  * mjr_quit (Quit: mjr_)
16:51:36  * mralephjoined
16:58:06  * isaacsquit (Remote host closed the connection)
16:58:38  * isaacsjoined
17:03:08  * isaacsquit (Ping timeout: 255 seconds)
17:24:13  * AvianFlujoined
17:25:00  * orlandovftwjoined
17:28:23  <indutny>piscisaureus_: heya
17:28:41  <indutny>piscisaureus_: looks like zlib is quite broken in 0.7.2-pre
17:28:43  <indutny>prb 0.7.1
17:28:59  <piscisaureus_>indutny: how come?
17:29:16  <indutny>../src/node_zlib.cc:338: failed assertion `err == Z_OK && "Failed to set dictionary"'
17:29:19  <indutny>Abort trap
17:29:22  <indutny>on node-spdy ^
17:30:17  <indutny>I'll try investigating it, but a little bit later
17:30:19  <indutny>just FYI
17:32:22  * perezdquit (Quit: perezd)
17:32:56  * mikealjoined
17:33:45  <indutny>oooh
17:33:53  <indutny>threaded C is a hell
17:33:55  <indutny>:D
17:35:35  <indutny>piscisaureus_: fixed issue
17:36:05  <indutny>piscisaureus_: that was because of uninitalized `err` var
17:36:44  <indutny>piscisaureus_: do you have time to review?
17:36:45  <piscisaureus_>indutny: ah, ok
17:36:46  <piscisaureus_>good
17:36:54  <piscisaureus_>indutny: sure
17:37:20  <indutny>piscisaureus_: https://github.com/indutny/node/commit/c80abfa0e4b5ae234e53a2fc088eb8344a182820
17:39:03  * mikealquit (Quit: Leaving.)
17:41:50  <piscisaureus_>indutny: lgtm. land it
17:42:49  <indutny>piscisaureus_: ok
17:43:12  <indutny>thanks
17:43:13  <CIA-115>node: Fedor Indutny master * rc80abfa / src/node_zlib.cc : zlib: fix `Failed to set dictionary` issue - http://git.io/cBKSRQ
17:56:04  <indutny>travis, where are you ?:)
17:56:05  <indutny>oh, travis is still compiling v8
17:56:06  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
17:56:06  * xaqquit (Remote host closed the connection)
17:57:11  * travis-cijoined
17:57:11  <travis-ci>[travis-ci] joyent/node#315 (master - c80abfa : Fedor Indutny): The build is still failing.
17:57:11  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/27c8572...c80abfa
17:57:11  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/574726
17:57:11  * travis-cipart
18:01:19  * mikealjoined
18:19:11  * orlandovftwquit (Ping timeout: 255 seconds)
18:22:24  * skabbesjoined
18:30:22  * mikealquit (Quit: Leaving.)
18:32:50  <indutny>piscisaureus_: heya
18:32:55  <indutny>piscisaureus_: can yo help me?
18:33:07  <piscisaureus_>indutny: sup?
18:33:09  <indutny>piscisaureus_: are you familiar with posix stuff?
18:33:32  <piscisaureus_>indutny: ask your question
18:33:40  <indutny>piscisaureus_: is it possible to do parallel reads from different positions of one fd
18:33:49  <piscisaureus_>indutny: yes
18:33:51  <indutny>i.e. read from multiple threads
18:33:52  <indutny>how?
18:34:16  <piscisaureus_>indutny: pread?
18:34:27  <indutny>piscisaureus_: is it BSD only?
18:34:48  <piscisaureus_>indutny: no but I think some exotic (old) unix flavors may not have is though
18:35:15  <piscisaureus_>indutny: I also think some mac os x versions have a bug that makes concurrent pwrite()s unusable
18:35:40  <indutny>piscisaureus_: yeah, I seen that in libuv
18:35:47  <indutny>piscisaureus_: how can one check if system has pread?
18:35:57  <indutny>and pwrite
18:36:54  <piscisaureus_>indutny: you can't
18:37:06  <piscisaureus_>indutny: unless you do something in your config file to detect it
18:37:08  <indutny>piscisaureus_: oh, great
18:37:14  <piscisaureus_>indutny: not really
18:37:33  <indutny>piscisaureus_: yeah, that was sarcasm
18:37:47  <indutny>piscisaureus_: I've no configure for bplus
18:37:53  <piscisaureus_>indutny: this answer is valid for all the question that matches the pattern "how do I detect if system has .*\?"
18:38:24  <indutny>#if _BSD_SOURCE || _XOPEN_SOURCE || _POSIX_C_SOURCE >= 200112L
18:38:42  <indutny>may be like that?
18:38:48  <piscisaureus_>indutny: I would rather assume that it is suported
18:38:57  <indutny>piscisaureus_: it's not supported in ubuntu
18:38:58  <piscisaureus_>indutny: and see if you get any bug reports :-)
18:39:01  <indutny>and probably fedora
18:39:09  <piscisaureus_>indutny: it is supported in ubuntu
18:39:16  <piscisaureus_>indutny: well in my ubuntu is this?
18:39:25  <indutny>piscisaureus_: :)
18:39:28  <indutny>piscisaureus_: let me try
18:39:36  <indutny>do you mean both pwrite/pread ?
18:39:41  <indutny>or just pread?
18:40:37  <piscisaureus_>indutny: both are supported
18:43:18  <indutny>piscisaureus_: btw, what pwrite bug you detected?
18:43:30  <indutny>piscisaureus_: what if I'm writing at the end of file?
18:44:08  <indutny>oh, I think I can use just write
18:44:10  <indutny>nvm
18:46:39  <indutny>Not surprisingly, pread and pwrite are not thread-safe on Darwin (OS/X),
18:46:40  <indutny>so it is advised not to submit multiple requests on the same fd on this
18:46:40  <indutny>horrible pile of garbage.
18:46:55  <indutny>^^ I think better not use pread ^^
18:46:57  <indutny>piscisaureus_: ^
18:50:06  <indutny>hm...
18:50:26  * rmustaccjoined
18:51:00  <rmustacc>Hey guys, tracking down a weird problem. I was wondering if you could explain why there was a change to make it so that stdou throws on every destroy.
18:51:57  <rmustacc>*stdout
18:54:34  <indutny>rmustacc: ?
18:54:49  <indutny>stdout can't be destroyed
18:55:06  <txdv2>FD 0 1 2 are indestructable
18:55:46  <piscisaureus_>rmustacc: yeah you should just not destroy it
18:56:29  <rmustacc>Great, well, now programs that used to work are broken.
18:56:35  <indutny>piscisaureus_: I think multithreaded write/read to file is borked :(
18:56:41  <rmustacc>The problem is that you'll do node | foo and eventually you'll get an EPIPE on foo.
18:56:51  <rmustacc>Which because of how it currently works now tries to automatically destroy itself.
18:56:55  <piscisaureus_>rmustacc: ah oh that
18:57:01  <rmustacc>Instead of getting EPIPE
18:57:02  <piscisaureus_>rmustacc: hmm yeah we should fix that
18:57:10  <txdv2>you dont say
18:57:12  <rmustacc>So you no longer get process.stdout.on('error')
18:57:50  <rmustacc>The problem is in v0.6 lib/net.js +480
18:58:02  <rmustacc>You automatically see that you got the EPIPE and try and destroy it.
18:59:45  <piscisaureus_>rmustacc: so what are you contesting? The fact that stdout cannot be closed, or the fact that it throws on EPIPE?
19:00:03  <rmustacc>The closing part is curious.
19:00:21  <rmustacc>The actual problem is that you've changed the semantics of how you're throwing on EPIPE so I actually can't really catch it.
19:00:34  <rmustacc>Rather: A program which used to work now fails to work.
19:00:51  <piscisaureus_>I don't really remember why we changed that
19:02:12  <rmustacc>Real problem is that we have no way to catch this and handle it properly.
19:02:17  * xaqjoined
19:03:34  <rmustacc>Becuse of the hacks for stdin/stdout/stderr now we need new hacks for this behavior.
19:03:55  <piscisaureus_>rmustacc: it will be fixed
19:04:15  <rmustacc>I'm happy to take a swing at it for you guys.
19:04:29  <rmustacc>Just depends on how you want it done.
19:04:52  <piscisaureus_>yes, I am also in doubt about that
19:05:47  <piscisaureus_>rmustacc: You could just check if the stream has ._isStdio == true and if so, not destroy it
19:06:05  <piscisaureus_>rmustacc: the thing is that I am not sure why we disallow closing stdout in the first place
19:06:19  <piscisaureus_>I remember the discussion though but not the content
19:07:32  <rmustacc>libev
19:07:51  <piscisaureus_>rmustacc: ah now i remember. the problem is that stream.end() would do shutdown
19:07:52  <rmustacc>Because it considers it an error to have the epoll, etc. fd be fd 0.
19:08:08  <piscisaureus_>rmustacc: which would fail with ENOTSOCK
19:08:21  <piscisaureus_>rmustacc: 0 == stdin, and stdin can still be closed
19:08:21  <txdv2>is it possible to close 0,1,2 and use those fds for your own purposes?
19:08:36  <piscisaureus_>txdv2: no
19:08:48  <piscisaureus_>txdv2: well technically it is possible but you should not do it
19:09:24  <rmustacc>There can be lots of streams, to files and others, it seems a bit weird that the generic stream.end() would call shutdown, but I'm not familiar with the abstraction/code.
19:10:12  <txdv2>doesn't shutdown close the handle once it is done with writing/reading and there are no more events for ir in the queue?
19:10:46  <piscisaureus_>rmustacc: https://github.com/joyent/node/commit/0a51a6d3ac0818244ab4d73a72a541d3e8b65110
19:11:44  * orlandovftwjoined
19:12:19  <txdv2>piscisaureus_: LOL
19:12:28  <txdv2>my book was incorrect so I fixed node xD
19:13:25  <piscisaureus_>txdv2: are you Koichi?
19:14:09  <txdv2>i should have quoted that statement
19:14:15  <txdv2>no im not, but i find it funny
19:14:40  <piscisaureus_>aha
19:14:55  <piscisaureus_>Koichi would know what to do here
19:14:57  <piscisaureus_>:-)
19:15:35  <txdv2>koichi is the chuck norris of node
19:15:46  <rmustacc>Well, given the constraints that you've given yourself in terms of closing, you want to figure out if the thing you're dealing with can't be destroyed and thus emit an error on the process.stdout object.
19:16:28  <piscisaureus_>rmustacc: I am going to revert this behaviour change in node 0.7. In 0.7 it will be possible to close stdout again.
19:16:51  <piscisaureus_>rmustacc: stdout will emit an error event like 0.4 used to
19:17:16  <rmustacc>If you think that's the right thing, sure. I'd want to better understand why the change was made.
19:17:35  <piscisaureus_>rmustacc: unfortunately we can't change that for 0.6. But I'd like to emit an error event on EPIPE at least.
19:17:52  <piscisaureus_>rmustacc: basically the stream got closed involuntarily
19:18:12  <piscisaureus_>rmustacc: so either we just admit it closed and we do the rituals - or we turn stdout into a black hole
19:18:49  <rmustacc>Sure, I'm not as worried about the 0.6 change as much as I'm concerned with keeping the previous behavior that made sense for erroring on stdout and co.
19:20:15  <rmustacc>Rephrasing that, we kind of need 0.6 to work correctly in the EPIPE case, not as worried about the destroy case.
19:20:22  <piscisaureus_>rmustacc: the previous behaviour it was just like a socket, right?
19:20:36  <piscisaureus_>rmustacc: so, emit "error", then emit "close"
19:20:41  <piscisaureus_>and fail subsequent writes?
19:21:12  <rmustacc>I'm not sure about the close. In this case the error was the most important part for the stuff we currently have.
19:21:20  <rmustacc>I imagine it'd fail subsequent writes, but I can verify.
19:21:36  <piscisaureus_>rmustacc: yes it would fail with "socket not writable"
19:22:02  <rmustacc>Well, if you want to change the semantics somehow, that's fine.
19:22:13  <rmustacc>But what's important is having it emit some kind of error so the user can actually do something.
19:34:18  <piscisaureus_>rmustacc: yes so what the patch should do is emit error and make sure node does not crash
19:34:47  * mikealjoined
19:46:20  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
19:48:28  * benviejoined
19:54:26  * piscisaureus_joined
20:01:22  * piscisaureus__joined
20:02:42  * txdv2quit (Read error: Connection reset by peer)
20:02:47  * txdv2joined
20:04:36  * piscisaureus_quit (Ping timeout: 252 seconds)
20:04:48  * einarosjoined
20:07:23  * mikealquit (Quit: Leaving.)
20:08:28  * brsonjoined
20:17:15  * mralephquit (Quit: Leaving.)
20:37:05  <rmustacc>piscisaureus__: It's easy to just emit the error, but I imagine there are other pieces that need to take place here to guarantee correct behavior throughout the stack.
20:37:24  * piscisaureus__quit (Read error: Operation timed out)
20:47:04  * paddybyersjoined
21:19:58  * paddybyersquit (Quit: paddybyers)
21:20:33  * indutnychanged nick to indutny_sleeping
21:28:15  * xaqquit (Remote host closed the connection)
21:47:47  * bradleymeckjoined
21:54:08  <bradleymeck>any chance the v8 debugger can be enabled/disabled via js? or should i use C++? idk how this will bother isolates
22:20:39  * AvianFluquit (Quit: Leaving)
22:33:44  * bnoordhuisjoined
22:33:59  <bnoordhuis>evening all
22:34:34  <rmustacc>Evening bnoordhuis
22:34:53  <bnoordhuis>have i missed anything?
22:35:12  <rmustacc>I hit something today and was trying to talk with piscisaureus on what the right fix is.
22:35:37  <bnoordhuis>the stdin close thing?
22:35:40  <rmustacc>This is a side effect of the change that made stdin/stdout/stderr indestructible.
22:35:47  * mikealjoined
22:36:14  <rmustacc>stdout gets EPIPE which causes us to try and destroy it which throws a seemingly uncatchable exception.
22:37:20  <bnoordhuis>rmustacc: is there a simple way to reproduce it?
22:37:29  <bnoordhuis>or can you point me at the offending code?
22:37:44  <rmustacc>bnoordhuis: There is a simple way to reproduce it.
22:37:56  <rmustacc>Let me send you the code snippet I used.
22:38:43  <rmustacc>bnoordhuis: Grab down http://fingolfin.org/tmp/fail.js
22:38:57  <rmustacc>Run it and pipe to some command that's going to exit immediately, say head -n1 or /bin/false
22:39:25  <rmustacc>That's just the easiest way to get it to blow up.
22:39:35  <rmustacc>I know what it is hitting in node already if that'd help you out.
22:39:44  <bnoordhuis>yeah, that's this one -> https://github.com/joyent/node/issues/2507
22:39:55  <bnoordhuis>we discussed but never resolved it
22:40:55  <rmustacc>Gotcha. I'd be curious as to understand the reasons why stdout/stderr should never be closed, but I'm happy with it at least emiting the error event like it used to.
22:42:11  <bnoordhuis>rmustacc: on unix, closing fds 0-2 can cause weird side effects, security issues even
22:42:54  <bnoordhuis>i don't know if there are windows-specific reasons
22:43:17  * piscisaureus_joined
22:43:26  <piscisaureus_>bnoordhuis: hey.
22:43:29  <rmustacc>It can for servers sure. It just seems like when you write command line style programs (like the one we have that hit this) you want to say close and then exit.
22:43:29  <bnoordhuis>piscisaureus_: ho
22:43:50  <piscisaureus_>bnoordhuis: I think may want to just allow closing stdout
22:44:36  <bnoordhuis>piscisaureus_: i was just discussing that with rmustacc
22:45:08  <piscisaureus_>bnoordhuis: oh right, so did I this afternoon. But rmustacc is mainly that if the other end closes stdout, node crashes inevitably
22:45:15  <piscisaureus_>which is PITA of course
22:46:07  <bnoordhuis>piscisaureus_: 'other end' in this context means 'other end of the pipe'?
22:47:03  <rmustacc>I would assume so.
22:47:31  <piscisaureus_>bnoordhuis: yeah, I didn't mean gene zijde :-)
22:48:03  <bnoordhuis>piscisaureus_: just checking, i only skimmed today's logs
22:48:39  <bnoordhuis>piscisaureus_: the issue with closing fds 0-2 is that it's potentially unsafe
22:48:49  <piscisaureus_>bnoordhuis: because?
22:49:22  <bnoordhuis>piscisaureus_: because the next opened file / socket / etc. will reuse that file descriptor
22:49:39  <piscisaureus_>bnoordhuis: sounds like a Lehmann argument to me :0
22:50:21  <bnoordhuis>piscisaureus_: well... i disagreed with him in that particular case but it's not an entirely academic issue
22:51:03  <piscisaureus_>bnoordhuis: maybe we should just close and reopen as /dev/null
22:51:14  <bnoordhuis>piscisaureus_: yes, that would be better
22:51:30  <rmustacc>Or just let the user do that so they can send it to whatever they want?
22:51:34  * lwillequit (Read error: Connection reset by peer)
22:51:56  <rmustacc>Rather, it can be a security risk in certain situations, I'm not sure why node needs to mandate that.
22:52:16  <piscisaureus_>rmustacc: how would that be a security risk
22:52:46  <bnoordhuis>rmustacc: i would err on the side of caution here
22:52:55  <rmustacc>Well, if you follow what bnoordhuis / Lehmann were talking about, people will send that stuff over other fds.
22:53:12  <bnoordhuis>also, i don't want to explain again and again why closing stdio is a bad idea :)
22:53:35  <bnoordhuis>^ to other people that is
22:55:48  <piscisaureus_>rmustacc: I don't really see a security risk here but I may be somewhat naive
22:56:22  <bnoordhuis>piscisaureus_: i somehow trick the server into closing fd 1
22:56:35  <bnoordhuis>piscisaureus_: i open a new connection, the socket gets assigned to fd 1
22:57:03  <bnoordhuis>piscisaureus_: now this server app logs confidential data (usernames, passwords) to stdout
22:57:28  <bnoordhuis>piscisaureus_: all that sensitive data now gets sent to me, eve
22:57:39  <piscisaureus_>bnoordhuis: yeah I can see that security risk. But reopening as /dev/null can only be harmless
22:58:15  <bnoordhuis>piscisaureus_: sure, that's why i think it's a good idea - rmustacc wasn't criticizing that either, i think
22:59:25  <rmustacc>Really the only case I can think of that this stops is where I actually do want to make stdout a network socket for say some centralized logging.
22:59:33  <rmustacc>But I guess I can just reassing process.stdout
23:00:24  * lwillejoined
23:00:29  <bnoordhuis>rmustacc: yes, and if you really want, fd.closeSync(0) + fd.openSync() or whatever will work in that case
23:00:37  <bnoordhuis>(albeit in a hacky way)
23:00:38  <piscisaureus_>rmustacc: I think we could do that but we should do it differently. Maybe we should allow to redirect console.* output to different streams
23:00:56  <piscisaureus_>rmustacc: I have heard that before
23:01:30  <piscisaureus_>btw why do node users have to do this weird unix crap?
23:01:30  <piscisaureus_>"My process has 4 stdio fds and the fourth one is actually a listening socket" <-- not kidding.
23:01:30  <piscisaureus_>"I want to write to child process stdout" <-- not kidding
23:01:30  <piscisaureus_>"I want to dup2 file descriptors in node just because I want it" <-- not kidding
23:01:58  <piscisaureus_>I mean, we give you this tool to write tcp servers in 5 lines of code
23:02:03  <rmustacc>I'm not sure I've ever wanted to actually do this.
23:02:03  <piscisaureus_>people start complaining about this shit
23:02:21  <bnoordhuis>piscisaureus_: that dup2 patch was from me actually :)
23:02:40  <piscisaureus_>bnoordhuis: yes but some other guy sent like 20 messages demanding it
23:02:41  <rmustacc>In fact almost everything I'm daemonizing I dup /dev/null for stdin and stderr/out is a log file.
23:03:48  <bnoordhuis>piscisaureus_, rmustacc: okay, so what do we do about stdio in node? i'm open to suggestions
23:05:19  * piscisaureus_part
23:05:25  * piscisaureus_joined
23:05:52  * chiltsquit (Read error: Operation timed out)
23:06:06  * chiltsjoined
23:06:22  <rmustacc>Replacing it with /dev/null seems like a reasonable compromise actually.
23:06:47  <rmustacc>But I'm getting pulled into a meeting right now by someone who just showed up to the office, sorry.
23:07:03  <piscisaureus_>bnoordhuis: I would we still allow process.stdout.write or not?
23:07:23  <rmustacc>I think abstractly what makes sense is that if close stdin or stdout, doing your replacement strategy would be fine.
23:10:04  <bnoordhuis>piscisaureus_: i don't know, why / why not?
23:10:29  <piscisaureus_>bnoordhuis: not, because then it behaves sensibly like any other stream in node
23:11:00  <piscisaureus_>bnoordhuis: why, because people want to be able to console.log safely without worrying about closed stdout
23:11:34  <bnoordhuis>piscisaureus_: i'm leaning towards option #2
23:11:54  <bnoordhuis>ease of use is important too
23:12:21  <bnoordhuis>the drawback is of course that people won't actually see the logged data...
23:12:28  <piscisaureus_>bnoordhuis: :-)
23:12:46  <piscisaureus_>bnoordhuis: we could also add this check to console.log
23:13:05  <bnoordhuis>piscisaureus_: let's punt on it, think about it and decide tomorrow
23:13:06  <piscisaureus_>if (process.stdout.writable) process.stdout.write('bla');
23:13:21  <bnoordhuis>are you at the office tomorrow?
23:13:24  <piscisaureus_>bnoordhuis: actually let's separate stdout and console more
23:13:32  <piscisaureus_>bnoordhuis: yeah. you?
23:13:42  <piscisaureus_>(what time?)
23:13:49  <piscisaureus_>(where were you today?)
23:13:51  <bnoordhuis>probably, depends on the emotional state my gf is in tomorrow
23:14:06  <bnoordhuis>to a funeral (like i said yesterday >:( )
23:14:15  <piscisaureus_>oh, whatsup?
23:14:15  <piscisaureus_>oh
23:14:16  <piscisaureus_>I missed that
23:14:35  <bnoordhuis>granddad of my gf passed away last weekend
23:14:55  * mikealquit (Quit: Leaving.)
23:14:58  <piscisaureus_>sad. my condoleances.
23:15:10  <bnoordhuis>thanks, appreciated
23:16:30  <piscisaureus_>bnoordhuis: anyway, if you come, try to arrive before 3pm :-)
23:16:46  <bnoordhuis>piscisaureus_: hah, i was in at 12.45 last week
23:16:54  <bnoordhuis>just in time for lunch!
23:17:10  <piscisaureus_>actually I started at 14 30 today
23:17:16  <piscisaureus_>but tomorrow I will be there at 1030
23:17:21  <piscisaureus_>no shit!
23:17:35  <bnoordhuis>i'll try to come in early
23:24:24  <piscisaureus_>bnoordhuis: another question - how are isolates doing?
23:25:46  <bnoordhuis>piscisaureus_: i think that 'in stasis' is an appropriate phrase here
23:26:21  <piscisaureus_>bnoordhuis: isolates is quickly becoming the most-hated feature
23:26:32  <bnoordhuis>piscisaureus_: true that
23:29:47  <piscisaureus_>bnoordhuis: let's do a libuv hack day tomorrow
23:30:11  <piscisaureus_>bnoordhuis: we can do refcount stuff
23:30:29  <piscisaureus_>bnoordhuis: maybe refactor some stuff
23:30:35  <piscisaureus_>bnoordhuis: i am going to bed
23:30:44  <bnoordhuis>piscisaureus_: sounds like a plan
23:30:59  <bnoordhuis>i'm off to bed as well
23:31:01  <bnoordhuis>sleep tight
23:31:14  <piscisaureus_>bye
23:31:17  <rmustacc>See you guys. Thanks for your help with this.
23:31:32  <piscisaureus_>rmustacc: we will fix your issue soon
23:31:40  <rmustacc>Apprecaited.
23:31:42  <piscisaureus_>ttyl
23:31:46  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
23:32:19  * bnoordhuisquit (Quit: Leaving)
23:46:18  * AvianFlujoined
23:47:05  * skabbesquit (*.net *.split)
23:47:05  * CIA-115quit (*.net *.split)
23:47:05  * AvianFluquit (*.net *.split)
23:47:05  * ljacksonquit (*.net *.split)
23:47:05  * kohaiquit (*.net *.split)
23:47:05  * txdv2quit (*.net *.split)
23:47:06  * mrb_bkquit (*.net *.split)