00:00:33  <bnoordhuis>tests are in the works
00:01:03  <bnoordhuis>but you can test it now with `openssl s_client -connect addr:port`, then tapping R<enter> a few times
00:01:37  <piscisaureus>bnoordhuis: so how are you going to test the timer? >:-)
00:01:48  <bnoordhuis>piscisaureus: it's configurable
00:01:59  <bnoordhuis>i'll add a pummel test with a 5 second timeout or so
00:02:09  <piscisaureus>bnoordhuis: probably, a test that spawns openssl is the way to go here
00:02:13  <bnoordhuis>yep
00:02:42  * mralephjoined
00:03:33  * mralephquit (Client Quit)
00:11:49  <isaacs>bnoordhuis: which commit are you saying belongs in master? the crypto.js one?
00:11:55  <bnoordhuis>isaacs: yes
00:12:01  <isaacs>hm.
00:12:20  <bnoordhuis>it's a good thing to have but...
00:12:23  <isaacs>yeah
00:12:42  <isaacs>if it's not possible to fix the issue without it, then it's not very objectionable, but i agree.
00:12:47  <isaacs>it should be in master if possible.
00:15:31  <TooTallNate>github died
00:15:37  <bnoordhuis>yeah
00:16:04  <bnoordhuis>github lately is going down more often than, well...
00:16:24  <piscisaureus>meh gists are down
00:17:47  <mmalecki>isaacs: hey, would it be possible to backport fork silent patch to 0.6?
00:18:17  <TooTallNate>mmalecki: does it introduce new API?
00:18:37  <mmalecki>TooTallNate: a tiny one.
00:19:09  <TooTallNate>mmalecki: what's the rush? 0.8 will be out soon enough, then you'll feel the same way about 0.6 as you do about 0.4 :D
00:19:27  <mmalecki>TooTallNate: 0.6 is already old for me :)
00:19:37  <TooTallNate>haha, ya me too
00:21:35  <isaacs>piscisaureus: this is weird... npm doesn't work when i install it from the msi in releaseme
00:22:01  <isaacs>"c:\Program Files (x86)\nodejs\"\"node.exe" "c:\Program Files (x86)\nodejs\\.\n
00:22:01  <isaacs>ode_modules\npm\bin\npm-cli.js"
00:22:01  <isaacs>node.js:201
00:22:02  <isaacs> throw e; // process.nextTick error, or 'error' event on first tick
00:22:03  <isaacs> ^
00:22:06  <isaacs>Error: Cannot find module 'c:\Program Files (x86)\nodejs\"node.exe c:\Program'
00:22:20  <isaacs>i must be building that path up wrong in the bat file or something?
00:22:33  <benvie>missing a quote
00:22:38  <benvie>somewhere
00:23:04  <benvie>"%~dp0"\"node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
00:23:05  <piscisaureus>It's the backslash before the "
00:23:37  <isaacs>yeah
00:23:44  <isaacs>but this is in a cmd file.
00:23:47  <piscisaureus>isaacs: if you just do "%~dp0"\node.exe it should be fine
00:23:49  <isaacs>\ is anot escape
00:24:05  <benvie>that's weird though because that's the same as it has been
00:24:12  <piscisaureus>isaacs: can you un-gibberish that?
00:24:41  <isaacs>sorry, i mean \ is not an escape
00:24:42  <isaacs>it's a separator
00:24:57  <piscisaureus>isaacs: it is interpreted as an escape under some circumstances
00:24:59  <isaacs>yeah, that's always worked, afaik
00:25:02  <isaacs>orly?
00:25:07  <piscisaureus>namely, when put before an \
00:26:04  <piscisaureus>isaacs: keep in mind that windows has no concept of argv. It has just a command line
00:26:12  <piscisaureus>and there are special rules for turning it into argv
00:26:19  <isaacs>i see
00:26:27  <piscisaureus>http://msdn.microsoft.com/en-us/library/windows/desktop/17w5ykft%28v=vs.85%29.aspx
00:26:34  <isaacs>so, this is a bug i'll have to go fix, i guess
00:26:41  <isaacs>doesn't seem related to your env change
00:26:48  <piscisaureus>isaacs: did this work before?
00:26:55  <piscisaureus>isaacs: it could be related to my command line parsing change
00:27:01  <benvie>"%~dp0\.\node_modules\npm\bin\npm-cli.js" expands to "C:\Program Files (x86)\nodejs\\.\node_modules\npm\bin\npm-cli.js"
00:27:08  <benvie>just tested it
00:27:27  <piscisaureus>benvie: look this gets turned into the following argv:
00:27:27  <isaacs>piscisaureus: i thought it did
00:27:49  <piscisaureus>isaacs: well, that would be an error on my side, although I am surprised it used to work then
00:28:09  <isaacs>yeah, the command line parsing change broke this, it looks like.
00:28:33  <isaacs>and, though this is a bug in npm, it means that existing cli programs that npm wrote will be busted.
00:28:44  <benvie>there is an extra backslash in it, maybe that's an issue?
00:29:07  <benvie>my node argv comes out to 'C:\\Program Files (x86)\\nodejs\\\\node.exe' in 0.7.4
00:29:08  <isaacs>though, probably not as likely, since they're not in the same folder as node.exe, and not as likely to hit that code path
00:30:39  <piscisaureus>isaacs: yes, it is a "bug"
00:30:48  <isaacs>piscisaureus: the good news is that unicode home dirs are no longer a problem.
00:30:51  <isaacs>so that's fantastic :)
00:31:23  <piscisaureus>isaacs: apparently ComandLineToArgvW does not apply exactly the same rules as the crt, although it is advertised as such
00:31:26  <piscisaureus>*argh*
00:31:32  <piscisaureus>tried this, with the debug build:
00:31:35  <piscisaureus>D:\node4>"d:\node4\debug"\"node.exe"
00:31:35  <piscisaureus>Assertion failed: wargc == argc, file src\node.cc, line 2050
00:31:45  <isaacs>wild
00:32:08  <bnoordhuis>`setsid`, if set true, will cause the subprocess to be run in a new session. <- lies
00:32:12  * piscisaureusgreps the crt source code
00:32:17  * xaqquit (Remote host closed the connection)
00:33:04  * xaqjoined
00:33:15  * dshaw_1changed nick to dshaw_
00:33:15  <piscisaureus>isaacs: but I have to say, your paths look funky
00:33:28  <isaacs>piscisaureus: they're programmatically generated.
00:33:28  * diogosnowsquit (Read error: Connection reset by peer)
00:33:34  <isaacs>piscisaureus: patch welcome :)
00:33:53  <piscisaureus>"%~dp0"\node.exe "c:\progam files (x86)\nodejs\node_modules\npm\'bin\npm-cli.js" would suffice :-)
00:38:48  <isaacs>ok
00:40:23  * piscisaureussighs
00:40:28  <piscisaureus>. /* A quoted program name is handled here. The handling is much
00:40:29  <piscisaureus> simpler than for other arguments. Basically, whatever lies
00:40:29  <piscisaureus> between the leading double-quote and next one, or a terminal null
00:40:29  <piscisaureus> character is simply accepted. Fancier handling is not required
00:40:29  <piscisaureus> because the program name must be a legal NTFS/HPFS file name.
00:40:29  <piscisaureus> Note that the double-quote characters are not copied, nor do they
00:40:29  <piscisaureus> contribute to numchars. */
00:41:36  <bnoordhuis>github comments are still broken
00:41:38  <isaacs>piscisaureus: http://static.izs.me/fb22274.diff (github is down)
00:41:39  * bnoordhuissighs
00:42:51  <piscisaureus>isaacs: I can't really comment because izs.me isn't so fancy
00:43:08  <piscisaureus>isaacs: but I see some issues in that patch
00:45:08  <isaacs>piscisaureus: what issues?
00:45:57  <piscisaureus>isaacs: well, prog = "\"%~dp0\"\\" + target
00:46:05  <piscisaureus>that doesn't work if there are spaces in `target`
00:46:12  <isaacs>piscisaureus: well... that's the thing
00:46:26  <piscisaureus>but you should just do "\"~dp0\\" + target + "\""
00:46:28  <isaacs>piscisaureus: accounting for spaces in the exe is what caused this problem
00:46:34  <piscisaureus>er, omitted an %
00:47:04  <isaacs>oic, so keep the " around the prog, but just don't have "%~dp0"\"target"
00:47:13  <piscisaureus>isaacs: right.
00:47:13  <piscisaureus>isaacs: but you should just make sure that "%~dp0\program with spaces.exe" comes out
00:47:14  <isaacs>just "%~dp0\target"
00:47:22  <isaacs>ok
00:47:24  <isaacs>that makes sense.
00:47:24  <piscisaureus>isaacs: instead of "%~dp0"\"program with spaces.exe"
00:47:28  <isaacs>right
00:47:33  <isaacs>thanks, one sec
00:48:05  <piscisaureus>isaacs: but don't land the patch yet - first we have to fix this real bug in node :-)
00:48:09  <piscisaureus>isaacs: your test case is nice :-)
00:50:09  * xaqquit (Remote host closed the connection)
00:51:16  <isaacs>piscisaureus: http://static.izs.me/840c1f4.diff
00:51:30  <isaacs>piscisaureus: well, it's landed in npm, but not pulled into node's install yet
00:51:46  <isaacs>piscisaureus: in any event, it'll be a pita for upgraders if we don't fix this.
00:51:57  <isaacs>piscisaureus: they'll get random errors trying to run existing cli tools
00:51:57  <piscisaureus>isaacs: yes
00:52:07  <piscisaureus>isaacs: also, you could drop the \.\
00:52:12  <piscisaureus>unless you're really in love with it
00:52:18  <isaacs>piscisaureus: that's just an artifact of relativize.
00:52:35  <isaacs>piscisaureus: so, it's not that i'm in love with it, but i'd ratehr not touch that function, since i use it all over.
00:53:13  <piscisaureus>isaacs: + // "%~dp0"\node.exe "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
00:53:13  <piscisaureus>that looks wrong
00:53:30  <piscisaureus>should be "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* then
00:53:32  <isaacs>oh, the comment is wrong
00:53:35  <isaacs>yeah
00:55:17  <isaacs>fixed comment: http://static.izs.me/350ea8b.diff
00:55:26  * AvianFluquit (Quit: Leaving)
00:55:34  <piscisaureus>isaacs: + // if [ -x "`dirname "$0"`"/node.exe ]; then
00:55:34  <piscisaureus>+ // "`dirname "$0"`"/node.exe "`dirname "$0"`/node_modules/npm/bin/npm-cli.js" "$@"
00:55:45  <piscisaureus>isaacs: that looks funky but I cannot interpret that, you have to verify it yourself
00:55:54  <piscisaureus>isaacs: otherwise looks good
00:57:09  <isaacs>oh, right, only updated the comment in one place. whatever, sh actually has no problem with this :)
00:57:16  <isaacs>just fixing it to make it consistent
01:00:51  <isaacs>C:\Users\îßååç>npm get foo --foo îßååç
01:00:51  <isaacs>îßååç
01:01:01  <isaacs>so, that's working perfectly, afaict
01:06:30  * dapquit (Ping timeout: 255 seconds)
01:08:16  <piscisaureus>isaacs: it is still questionable whether it'll work when the .cmd files you generate have weird characters in them
01:08:29  <piscisaureus>but I don't think we do that
01:08:43  <isaacs>piscisaureus: yeah, i'd consider that off-the-reservation behavior
01:08:57  <piscisaureus>isaacs: (because windows doesn't like it when you use utf8 in your batch files. you would have to write UCS2 batch files, that'd work)
01:09:48  <DrPizza>are you creating literal .bat batch files?
01:09:50  <DrPizza>or .cmd files?
01:10:20  * dapjoined
01:10:31  <piscisaureus>oh nvm - these don't work either
01:10:41  <piscisaureus>no, .cmd files
01:10:45  <piscisaureus>but these are the same, right?
01:10:53  <DrPizza>there are some minor technical differences
01:10:56  <DrPizza>AIUI
01:11:23  <DrPizza>I'm surprised they don't work with utf-8
01:13:14  <isaacs>a) unicode is not allowed in package names, and b) anyone who puts unicode chars in their bin files deserves whatever explosions result.
01:13:18  <isaacs>unsupported.
01:13:34  <isaacs>in fact, even spaces are really not supposed to be there.
01:13:45  <isaacs>and if i could turn back time, i'd throw if there were any capital letters in the path.
01:13:53  <isaacs>same for package names.
01:13:58  <isaacs>too late to fix that one, though
01:16:49  <isaacs>dinner time. i'll be back in a few hours.
01:16:56  * isaacsquit (Remote host closed the connection)
01:16:58  * dapquit (Ping timeout: 240 seconds)
01:17:42  <piscisaureus>isaacs: I'll be gone a in few hours.
01:18:02  <piscisaureus>isaacs: in fact I am checking out now, no appetite for writing another string parser at 2:15am
01:18:09  * piscisaureusis getting old
01:18:24  * piscisaureusthinks about how ryah used to rule
01:19:04  <CIA-99>node: Bert Belder v0.6 * r077f9d7 / src/node.cc : Windows: use unicode environment - http://git.io/cR_zrQ
01:19:05  <CIA-99>node: Bert Belder v0.6 * rd91bc7c / (lib/path.js src/node.cc): Windows: get rid of process._cwdForDrive() - http://git.io/_wG4ow
01:26:56  * travis-cijoined
01:26:56  <travis-ci>[travis-ci] joyent/node#425 (v0.6 - d91bc7c : Bert Belder): The build was fixed.
01:26:56  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/0685707...d91bc7c
01:26:56  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/684913
01:26:56  * travis-cipart
01:31:08  <bnoordhuis>piscisaureus: miss being dominated?
01:31:48  <piscisaureus>bnoordhuis: no. you?
01:31:57  <piscisaureus>bnoordhuis: we can make up stories about ryah now
01:32:07  <piscisaureus>bnoordhuis: remember how ryah never had dinner
01:32:17  <piscisaureus>remember how he never had sleep
01:32:40  <bnoordhuis>piscisaureus: "i'll sleep when i'm dead" he always said
01:32:47  <bnoordhuis>wise words
01:32:55  <piscisaureus>bnoordhuis: so true
01:33:27  <piscisaureus>bnoordhuis: unfortunately this does not exclude sleeping alove
01:33:29  <piscisaureus>*alive
01:33:44  <bnoordhuis>you're off to bed?
01:33:48  <piscisaureus>sleeping alive could be an indie cult film
01:34:03  <piscisaureus>bnoordhuis: yes
01:34:27  * bnoordhuisalready slept two hours tonight
01:34:27  <piscisaureus>bnoordhuis: because I don't feel like writing an commandline to argv parser atm
01:34:36  <bnoordhuis>and who needs more than that, right?
01:34:43  <piscisaureus>kids :-/
01:34:47  <bnoordhuis>haha
01:36:50  * orlandovftwquit (Ping timeout: 252 seconds)
01:37:36  <mmalecki>2 hours/day is fine
01:37:45  <mmalecki>http://www.dustincurtis.com/sleep.html
01:37:53  <piscisaureus>that es6 module keyword is going to be really interesting
01:38:21  <mmalecki>are we even going to change it?
01:38:48  <mmalecki>I mean, I guess there are many modules using module.exports
01:39:04  <mmalecki>also internally
01:39:35  <piscisaureus>yes, it's terrible
01:41:00  <bnoordhuis>so javascript has even more reserved words now?
01:41:21  <mmalecki>[maciej@pc07 node (close-callback)]$ ack module lib src/node.js | wc -l 91
01:41:43  <mmalecki>not that bad, only 91 occurences internally, including comments
01:41:54  <TooTallNate>mmalecki: still though, "module.exports" in a module will break
01:42:06  <TooTallNate>which is a *big* deal
01:42:18  <mmalecki>yes
01:42:23  <TooTallNate>mmalecki: nice article! I'm gonna have to try this
01:42:36  <mmalecki>TooTallNate: article?
01:42:42  <TooTallNate>sleep
01:42:46  <mmalecki>ah, that
01:42:48  <mmalecki>yeah
01:43:02  <TooTallNate>i've been having similar feeling towards sleep lately
01:43:09  <TooTallNate>not enough hours in a day, etc.
01:44:16  <mmalecki>yeah :/. implementing these patters is only easy if you dont have to leave your home tho
01:44:36  <mmalecki>well, you could probably hack it around somehow
01:44:37  <bnoordhuis>that describes yours truly perfectly :)
01:44:58  <mmalecki>bnoordhuis: me? how so?
01:45:02  <bnoordhuis>well, i sometimes leave my basement to get more beer and cheetos
01:45:20  <bnoordhuis>mmalecki: not you, me :)
01:45:41  <mmalecki>bnoordhuis: ah
01:45:49  <mmalecki>silly english
01:46:00  <bnoordhuis>agreed
01:46:09  <bnoordhuis>if only the dutch hadn't sold off new york
01:46:29  <bnoordhuis>it was an indian-infested mud flat back then, of course
01:46:39  <mmalecki>you've been there?
01:46:56  <bnoordhuis>new york? only to switch planes
01:47:19  <mmalecki>no, when it was an indian-infested mud XD
01:47:41  <bnoordhuis>no, but some of my ancestors probably were there
01:47:55  <bnoordhuis>i always like going to the USA
01:48:22  <bnoordhuis>it's always fun to tell americans "hey, i live in a house that's older than your country"
01:48:45  <mmalecki>argh, I hate inconsistent API, I just did net.Server.close(function () { ... })
01:48:49  <piscisaureus>ok. bnoordhuis is drunk. time to go.
01:48:57  <mmalecki>I'll pull request that, actually
01:49:07  <mmalecki>against master?
01:49:26  <bnoordhuis>mmalecki: why change what?
01:49:41  <mmalecki>bnoordhuis: .listen takes a callback, .close doesn't
01:49:52  <bnoordhuis>is that a problem?
01:50:02  <mmalecki>bnoordhuis: consistency man
01:50:15  <bnoordhuis>there is no job security in consistency
01:50:40  <mmalecki>lol
01:50:46  <bnoordhuis>apart from consistency, is there an issue?
01:50:54  <bnoordhuis>.close() is more or less synchronous
01:51:01  <mmalecki>no, there's none
01:51:59  <bnoordhuis>you know one thing that confuses and angers me?
01:52:01  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
01:52:11  <bnoordhuis>you close() servers but you destroy() client sockets
01:52:38  <mmalecki>destroying servers doesn't seem right
01:52:46  <mmalecki>it's expensive
01:53:25  <bnoordhuis>oh, just RMA it to dell
01:53:53  <mmalecki>lol
01:54:05  <bnoordhuis>but back on topic: what's wrong with socket.close()?
01:54:41  <mmalecki>it takes no callback! listen does.
01:54:51  <mmalecki>they seem like a pair to me
01:55:07  <bnoordhuis>.destroy() doesn't take a callback either
01:55:32  <mmalecki>does socket emit destroyed after it's destroyed?
01:55:45  <bnoordhuis>no, it emits 'close' :/
01:55:57  <mmalecki>wat
01:56:12  <mmalecki>so you call .destroy() to get 'close' event?
01:56:14  <bnoordhuis>yep
01:56:17  <bnoordhuis>daft isn't it?
01:56:18  <mmalecki>that's just retarded
01:56:41  <bnoordhuis>personally, i blame ryah
01:57:27  <mmalecki>oh, the guy who climbed Mount Everest just to make a core commit from there?
01:58:04  <bnoordhuis>and wrestled with alligators while there
01:58:15  <bnoordhuis>okay, so the alligators were a little sluggish from the cold
01:58:15  <mmalecki>yeah, it was pretty badass
01:58:59  <mmalecki>but these kids he had to eat to survive were not!
01:59:49  <bnoordhuis>haha, that reminds me - felixge seemed a little shocked about that frozen homeless people joke
02:00:03  <bnoordhuis>but hey, you can't blame him - he's german
02:00:29  <bnoordhuis>there's this dutch joke: what's the thinnest book in the world? "three centuries of collected german jokes"!
02:00:43  <mmalecki>lol
02:01:03  <mmalecki>I'm pretty sure in Germany they don't let people freeze like that
02:01:18  <mmalecki>I know they used to do the opposite back in the days
02:01:30  <bnoordhuis>is that a ww2 joke?
02:01:39  <mmalecki>yeah
02:01:42  <bnoordhuis>aww
02:01:48  <bnoordhuis>that's harsh
02:01:58  <bnoordhuis>you know my granddad died in a concentration camp?
02:02:31  <bnoordhuis>he fell off a watch tower
02:02:42  <mmalecki>lol
02:03:05  <bnoordhuis>okay, enough jokes in poor taste - time to get back to work
02:03:48  <mmalecki>echo >> file.js && git commit -am '[fix] Very important fix'
02:04:05  <mmalecki>I'm done, how are you doing?
02:04:19  * xaqjoined
02:07:09  <bnoordhuis>mmalecki: shouldn't you be off to bed? don't you have school tomorrow?
02:07:45  <bnoordhuis>someone should look after him now that his parents aren't around
02:07:47  <TooTallNate>haha, catching up here, funny
02:08:11  <mmalecki>bnoordhuis: nope, I have 2 weeks holiday :)
02:10:28  <mmalecki>bnoordhuis: which means 2 weeks of coding :). I'm up to really cool thing these days
02:10:40  <bnoordhuis>mmalecki: what are you working on?
02:11:13  <mmalecki>bnoordhuis: atm native protobuf implementation
02:11:19  * mikealquit (Quit: Leaving.)
02:11:27  <bnoordhuis>mmalecki: native as in pure js?
02:11:35  <mmalecki>bnoordhuis: yeah
02:11:38  <mmalecki>https://github.com/chrisdew/protobuf is a joke
02:12:02  <bnoordhuis>i was thinking about protobuffers a while ago
02:12:27  <bnoordhuis>it seems to me that it should be relatively straightforward to dynamically generate code from a protobuffers description
02:12:54  <bnoordhuis>'dynamically generate code' in this context means 'with llvm'
02:13:22  <mmalecki>bnoordhuis: hm, it'd be neat
02:13:22  <bnoordhuis>that aside...
02:13:37  <bnoordhuis>how are you approaching it? state machine?
02:14:32  <mmalecki>bnoordhuis: yeah, that seems to be the only good approach here
02:17:29  <tjfontaine>bnoordhuis: curious, what more specifically do you mean by "dynamically generated code" wrt protobuf?
02:18:48  <bnoordhuis>tjfontaine: protobuf (thrift too) generates c++ / java / etc. code that you have to compile
02:19:07  <tjfontaine>oh oh oh, right yes yes
02:19:20  <bnoordhuis>it should be relatively straightforward (theoretically anyway) to generate machine code on the fly
02:19:40  <tjfontaine>quite, indeed
02:19:55  * kohaiquit (Ping timeout: 240 seconds)
02:23:04  <mmalecki>kohai y u no rejoin? silly bot.
02:30:33  * xaqquit (Remote host closed the connection)
02:34:32  <mmalecki>I have a feeling we could remove `process.createChildProcess` :)
02:36:34  * indexzerojoined
02:38:08  <mmalecki>we could remove this whole chunk ihmo https://github.com/joyent/node/blob/master/src/node.js#L434-463
02:38:28  <mmalecki>bnoordhuis: also, indexzero is here, if you have any questions about that proxying
02:38:42  <mmalecki>indexzero: actually!
02:38:55  <mmalecki>indexzero: bnoordhuis has another more generic idea
02:39:05  <indexzero>mmalecki: Back up. What are we talking about?
02:39:17  <mmalecki>indexzero: boundary patch
02:39:20  <indexzero>oh
02:39:39  <indexzero>what does that block of code have to do with the boundary?
02:39:50  <mmalecki>indexzero: nothing, it's unrelated
02:40:08  <indexzero>bnoordhuis: What's your idea? pgriess had the best approach, but it requires digging around in code I don't understand at all
02:40:36  <indexzero>https://github.com/joyent/http-parser/pull/89#issuecomment-3948543
02:40:44  <mmalecki>indexzero: also, hope you're feeling better :)
02:40:55  <indexzero>mmalecki: somewhat. Still a little under the weather
02:41:13  <indexzero>I get this kind of URI every year, I think I might have beat it
02:41:34  <mmalecki>indexzero: ah. you should be resting
02:41:50  <indexzero>can't when there is work to be done
02:41:54  <indexzero>I've been through worse
02:42:06  <indexzero>in college I was really sick during my finals once and just powered through
02:42:12  <indexzero>I later found out I took all my exams with a pneumonia
02:42:30  <mmalecki>oh wow. that's badass
02:43:48  <mmalecki>indexzero: 9:19 < bnoordhuis> mmalecki: i was thinking of a counter that gets updated after each byte¬
02:43:51  <mmalecki>19:19 < bnoordhuis> that would allow callbacks to track where exactly in the byte stream they are¬
02:44:01  <mmalecki>indexzero: that's the idea
02:44:22  <indexzero>mmalecki bnoordhuis: I don't care where in the byte stream I am, just where the boundary is
02:44:32  <indexzero>if the counter indicates which byte I am it
02:44:33  <indexzero>*at
02:44:40  <indexzero>I still need to determine if that byte is the boundary
02:44:48  <indexzero>which is unnecessary since that logic is exposed by the parser
02:44:56  <mmalecki>indexzero: yeah, we'd use callbacks to do that. but it seems expensive to me
02:45:10  <indexzero>mmalecki there is actually a work around I'm considering
02:45:16  <indexzero>which doesn't need either of these patches
02:45:22  <indexzero>the parser.onBody approach works
02:45:40  <indexzero>it's just that we should remove the socket.ondata listener once that callback fires
02:45:59  <mmalecki>indexzero: nice hack you have there
02:46:02  <indexzero>so it's ondata{0…n} + onBody{n…m}
02:46:07  <indexzero>only one extra callback
02:46:17  <indexzero>where n is the boundary, and m is the message length
02:46:24  <indexzero>in chunks
02:49:03  <mmalecki>indexzero: that'd work, I guess. we'd have to check performance impact tho
02:49:06  <mmalecki>indexzero: also, http://piscisaureus.no.de/log/2012-02-15#16:50:49.653
02:49:56  <indexzero>that's illy to me
02:49:57  <indexzero>*silly
02:50:04  <indexzero>there isn't much required to make this work
02:50:19  <indexzero>turns out, this "hack" is actually what node core http does
02:50:55  <indexzero>and we could make node **dramatically** faster by using the boundary
02:51:03  * indexzerorealizes the OH SNAP moment
02:51:12  <indexzero>both this function
02:51:12  <indexzero>https://github.com/joyent/node/blob/master/lib/http.js#L1229-1271
02:51:25  <indexzero>and this function: https://github.com/joyent/node/blob/master/lib/http.js#L121-129
02:51:31  <indexzero>are called on every chunk from a socket
02:52:01  <indexzero>in UPGRADE situations the first handler is removed
02:52:16  <indexzero>but in other situations we wait for end
02:52:33  <indexzero>if we knew if the parser had hit body, we should be able to remove the ondata handler
02:52:53  <indexzero>I may just be postulating
02:53:13  <indexzero>you probably need to execute every chunk on the parser to handle trailing headers
02:56:38  * TooTallNatequit (Quit: Linkinus - http://linkinus.com)
02:56:46  <mmalecki>trailing headers complicate this thing :/
02:57:31  <indexzero>mmalecki: Yeah. I guess since we can't do better than node core it's a non-issue
02:58:41  <bnoordhuis>https://github.com/bnoordhuis/node/commit/1d8950d <- tls ci reneg attack mitigation, including tests this time
02:58:54  <bnoordhuis>mmalecki: you rang?
02:59:22  <mmalecki>bnoordhuis: yeah, ^
02:59:44  <bnoordhuis>eh, it's 4 AM here - i'm calling it a day
03:00:24  <mmalecki>oh well, sounds like a good idea
03:00:32  <indexzero>bnoordhuis: Before you crash
03:00:33  <indexzero>https://github.com/joyent/http-parser/pull/89#issuecomment-3994205
03:00:36  <indexzero>I think you're right
03:00:46  <indexzero>after digging around in node.js internals the boundary doesn't help performance
03:00:50  <indexzero>parser.onBody will suffice
03:01:12  <bnoordhuis>so no changes are necessary? that always brightens my day
03:01:24  <mmalecki>my nerdfame, it's gone :(
03:01:39  <mmalecki>but yeah, that's always good
03:01:49  <mmalecki>saving 4 bytes!
03:01:59  <indexzero>bnoordhuis: In fast-proxying scenarios we can beat node.js core since we can ignore rewriting trailing headers though
03:02:01  <indexzero>so that's a plus
03:02:21  <indexzero>i.e. set socket.ondata = null after parser.onBody is called
03:02:58  <bnoordhuis>yeah, trailing headers...
03:03:14  <bnoordhuis>i had to add a hack for that that cost us at least 5% in performance
03:03:23  <bnoordhuis>but i digress
03:04:52  <bnoordhuis>ircretary: tell isaacs https://github.com/bnoordhuis/node/commit/1d8950d <- tls reneg, now with tests
03:04:52  <ircretary>bnoordhuis: I'll be sure to tell isaacs
03:05:02  <bnoordhuis>sleep tight, people
03:05:25  <mmalecki>night Ben
03:06:44  * indexzeroquit (Read error: Connection reset by peer)
03:07:12  <tjfontaine>https://github.com/bnoordhuis/node/commit/1d8950d#L3R32 haha
03:07:32  <mmalecki>lol
03:09:55  * bnoordhuisquit (Ping timeout: 240 seconds)
03:14:30  * isaacsjoined
03:29:36  <mmalecki>woot, first time test suite actually passed for me
03:30:08  <mmalecki>well, maybe not first. but that used to be kind of rare :)
03:38:06  * indexzerojoined
03:41:01  <mmalecki>isaacs: https://github.com/mmalecki/node/commit/66bed2c70b611afcb46d2070e3c700981b0150c8 should go to v0.6 or master?
03:41:37  <isaacs>master
03:41:43  <isaacs>deprecation changes never happen in a stable branch
03:41:55  <isaacs>ie, making something deprecated, moving it from deprecated to gone, etc.
03:42:19  <mmalecki>isaacs: thanks, done https://github.com/joyent/node/pull/2761
03:42:30  <isaacs>also, lgtm
03:42:31  <isaacs>thanks
03:43:45  <mmalecki>awesome. I can go to sleep then!
03:43:56  <mmalecki>(5 am). night everyone!
03:44:16  <isaacs>g'nite :)
03:44:20  * mmaleckichanged nick to mmalecki[zzz]
03:46:21  <CIA-99>node: Maciej Małecki master * r3bc3af0 / src/node.js :
03:46:21  <CIA-99>node: process: remove old notices about removed methods
03:46:21  <CIA-99>node: These methods were removed a long time ago. Keeping these notices here
03:46:21  <CIA-99>node: makes no sense anymore.
03:46:21  <CIA-99>node: Also, removing this part of code slightly speeds up the startup. - http://git.io/Sg-Uxg
03:46:43  <isaacs>mmalecki[zzz]: thanks! ^
03:59:05  * xaqjoined
04:01:38  * travis-cijoined
04:01:38  <travis-ci>[travis-ci] joyent/node#426 (master - 3bc3af0 : Maciej Małecki): The build is still failing.
04:01:38  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/71e9756...3bc3af0
04:01:38  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/685257
04:01:38  * travis-cipart
04:26:24  * indutny_sleepingchanged nick to indutny
04:30:33  * AvianFlujoined
04:47:51  * perezdquit (Quit: perezd)
05:06:29  <indutny>morning
05:10:12  * pieternquit (Quit: pietern)
05:27:04  * orlandovftwjoined
05:27:20  <isaacs>good morning :)
05:39:23  * mikealjoined
05:46:17  * mikealquit (Quit: Leaving.)
05:52:38  * mikealjoined
05:55:35  * felixgejoined
05:55:35  * felixgequit (Changing host)
05:55:35  * felixgejoined
06:03:06  * felixgequit (Quit: felixge)
06:15:38  * felixgejoined
06:15:38  * felixgequit (Changing host)
06:15:38  * felixgejoined
06:20:26  <CIA-99>node: Colton Baker master * rce48579 / (doc/api/readline.markdown lib/readline.js lib/repl.js): (log message trimmed)
06:20:26  <CIA-99>node: Readline proposal and bugfixes. Related: #2737 #2756
06:20:26  <CIA-99>node: - Removed extra newline from .question(); Users can input a
06:20:26  <CIA-99>node: newline if it they require it.
06:20:26  <CIA-99>node: - Removed .close() due to it only emulating closing, causing a bug where
06:20:26  <CIA-99>node: readline is left open to trigger events such as .on('line', ...').
06:20:28  <CIA-99>node: - Removed ._attemptClose()
06:21:14  <indutny>isaacs: done :D
06:22:24  * felixgequit (Quit: felixge)
06:30:39  * AvianFluquit (Quit: Leaving)
06:35:35  * travis-cijoined
06:35:35  <travis-ci>[travis-ci] joyent/node#427 (master - ce48579 : Colton Baker): The build is still failing.
06:35:35  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/3bc3af0...ce48579
06:35:35  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/685605
06:35:35  * travis-cipart
06:35:38  * felixgejoined
06:35:38  * felixgequit (Changing host)
06:35:38  * felixgejoined
06:41:37  * felixgequit (Quit: felixge)
06:54:31  * sh1mmerquit (Quit: sh1mmer)
06:58:44  * felixgejoined
06:58:45  * felixgequit (Changing host)
06:58:45  * felixgejoined
07:00:09  * xaqquit (Remote host closed the connection)
07:03:58  * mralephjoined
07:43:47  * dshaw_1joined
07:43:56  * dshaw_1quit (Client Quit)
07:46:47  * dshaw_quit (Ping timeout: 252 seconds)
07:55:31  * mralephquit (Quit: Leaving.)
07:58:24  * txdvjoined
08:21:03  * benviequit
08:39:37  * dshaw_joined
08:42:45  * benviejoined
08:50:38  * txdvquit (Read error: Connection reset by peer)
08:54:09  * dshaw_quit (Quit: Leaving.)
08:54:16  * txdvjoined
08:59:07  * dshaw_joined
08:59:19  <einaros>hrm
08:59:42  <einaros>the http header parser could use an update for websockets
09:00:55  <einaros>https://github.com/joyent/node/blob/master/lib/http.js#L352
09:01:13  <einaros>that list should be extensible somehow
09:25:11  <CIA-99>node: isaacs json-api-docs * rb88cc7f / (26 files): 'make doc' passing. Still needs more cleanup (+20 more commits...) - http://git.io/KHT46g
09:25:57  <isaacs>einaros: are there other multi-header keys that should be updated for websockets?
09:26:10  <isaacs>einaros: that's an easy thing to update. it doesn't change very often.
09:30:08  <einaros>there are two headers in the rfc (which I've added to http.js + tests now and can pullreq)
09:30:36  <einaros>but the introduction of sec-websocket-something cases in http.js seemed 15% dirty
09:35:09  <isaacs>einaros: sure, pull req it. we can discuss at least.
09:35:25  * isaacschanged nick to isaacs[zzz]
09:35:29  * orlandovftwquit (Ping timeout: 245 seconds)
09:37:47  * indexzeroquit (Quit: indexzero)
09:40:44  * travis-cijoined
09:40:44  <travis-ci>[travis-ci] joyent/node#428 (json-api-docs - b88cc7f : isaacs): The build failed.
09:40:44  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/02dbdcf^...b88cc7f
09:40:44  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/686193
09:40:44  * travis-cipart
09:42:39  * paddybyersjoined
09:44:01  * paddybyersquit (Client Quit)
09:45:32  * paddybyersjoined
09:46:16  <benvie>sometimes it seems like theres should be something between "third party" and "core"
09:47:57  <indutny>developer :D
10:03:22  <isaacs[zzz]>benvie: like what?
10:14:41  * mikealquit (Quit: Leaving.)
10:18:53  * mikealjoined
10:39:28  * isaacs[zzz]quit (Remote host closed the connection)
10:56:15  * dshaw_quit (Quit: Leaving.)
11:03:22  * felixgequit (Quit: felixge)
11:22:01  * igorziquit (Ping timeout: 245 seconds)
12:00:00  * pksunkarapart
12:18:58  * felixgejoined
12:28:23  * mnemocquit (Ping timeout: 252 seconds)
12:29:07  * mnemocjoined
13:08:09  * Sly__joined
13:08:17  <indutny>Sly__: hi!
13:08:21  <indutny>better talk here
13:08:22  <Sly__>Hey, indutny.
13:08:28  <indutny>probably others have something to say
13:08:35  <Sly__>I'm just trying to figure out a work-around for line 758.
13:08:43  <Sly__>self.killed = true; self.killChild();
13:08:53  <Sly__>Obviously not something we want to do on pause, since suspending pauses the stream when it's resumed.
13:09:05  <Sly__>So gotta figure out a way to handle that.
13:09:27  <indutny>probably that can be removed
13:09:42  <indutny>hm...
13:09:51  <indutny>isn't repl calling process.exit after second ^C
13:10:00  <Sly__>Indeed.
13:10:22  <indutny>Sly__: so process.on('exit') will be called in _debugger.js
13:10:45  <indutny>that's some rudiment stuff
13:10:51  <indutny>in debugger then
13:11:08  <indutny>ok, I'll return to your commit later today
13:11:14  <Sly__>process.on('exit', function() { self.killChild(); });
13:11:21  <Sly__>763 in _debugger
13:33:38  * piscisaureus__joined
13:34:01  <Sly__>indutny, PR updated.
13:35:22  * mmalecki[zzz]changed nick to mmalecki
14:00:01  * elijah-mbpquit (Remote host closed the connection)
14:46:51  * AndreasMadsenjoined
14:47:17  <AndreasMadsen>morning
14:47:40  <indutny>morning
14:47:54  * sh1mmerjoined
14:48:32  <AndreasMadsen>indutny: I will try making the process.send('msg', Socket) today or tomorrow
14:48:41  <indutny>AndreasMadsen: cool!
15:03:23  <AndreasMadsen>mmalecki: just hearing that a danish party will create a webpage where the danish population can complain about polish people "stealing" there job. I find it stupid and amusing.
15:04:15  <indutny>hahaha
15:04:16  <mmalecki>AndreasMadsen: wat. that's just retarded.
15:04:36  <indutny>I quite like how offtopic and flame is growing in separate channels simultaneosly
15:04:44  <mmalecki>haha :)
15:09:24  <AndreasMadsen>what channels node.js is a void currently? - I actually thought a lot about which channel I should write it in. Choosed libuv because it's a void, I like void()!
15:10:07  <piscisaureus__>yes - it's the void
15:10:48  * piscisaureus__topic: lib inescapable void
15:11:52  * piscisaureus__topic: lib ultimate void
15:11:53  * elijah-mbpjoined
15:18:10  * bnoordhuisjoined
15:23:38  <bnoordhuis>https://github.com/bnoordhuis/node/commit/f54cfdf <- review?
15:24:04  <bnoordhuis>propagate cluster bind errors, fixes https://github.com/joyent/node/issues/2721
15:27:35  <indutny>big commit message
15:27:36  <indutny>bnoordhuis: ++
15:27:46  <bnoordhuis>:)
15:27:55  <bnoordhuis>bigger is better i'm told
15:28:09  <indutny>bnoordhuis: lgtm
15:28:13  <indutny>if it works :D
15:28:14  <mmalecki>that's what she said!
15:28:17  <mmalecki>hi Ben!
15:28:22  <bnoordhuis>hey maciej
15:28:30  <bnoordhuis>and that was indeed what she said
15:29:17  <AndreasMadsen>bnoordhuis: did you confirm that OS X is still an "issue"?
15:29:24  <mmalecki>bnoordhuis: master branch should startup 1 ms faster :D
15:29:32  <bnoordhuis>AndreasMadsen: i can confirm that OS X is indeed an issue
15:29:44  <bnoordhuis>though i don't know to what you're referring to in particular
15:30:04  <indutny>bnoordhuis: I'm getting fd >0 assertions on osx
15:30:07  <AndreasMadsen>bnoordhuis: https://github.com/joyent/node/issues/2721#issuecomment-3914043
15:30:13  <AndreasMadsen>" but I want to investigate if that OS X bind issue is still, for lack of a better word, an issue."
15:30:18  <bnoordhuis>oh that
15:30:30  <bnoordhuis>well, apparently it is though i've never been able to reproduce it
15:30:38  <bnoordhuis>but crazybert1984 told me it happens on windows too
15:31:29  <bnoordhuis>indutny: where/when is that happening?
15:31:41  <indutny>bnoordhuis: with my sticky-session module
15:31:46  <indutny>bnoordhuis: have you seen it?
15:31:54  <indutny>bnoordhuis: you can reproduce it by doing
15:32:01  <indutny>bnoordhuis: ab -n 10000 -c 200 to that server
15:32:13  <bnoordhuis>sticky sessions...?
15:32:32  <indutny>bnoordhuis: https://github.com/indutny/sticky-session
15:32:36  <indutny>bnoordhuis: try running example
15:32:37  <indutny>sorry, gtg
15:32:43  <indutny>ttyl
15:33:00  <bnoordhuis>have fun, fedor
15:34:53  <AndreasMadsen>indutny: that's wired, sticky-sessions create the TCP server in master and the commit should only change something if .listen was called from a worker. (hmm, remembering something about a .listen overwrite)
15:35:40  <mmalecki>works on production!
15:36:34  <mmalecki>anyone understands this call? https://github.com/flatiron/flatiron/blob/master/examples/http-sample.js#L15
15:36:38  <mmalecki>I don't and I wrote it
15:36:50  <mmalecki>util.inspect needs options object
15:38:52  <mmalecki>bnoordhuis: would it need backward compatibility?
15:38:59  <mmalecki>I don't think it's used much
15:40:05  <mmalecki>also, huh
15:40:06  <bnoordhuis>well... there's a larger issue with util.inspect()
15:40:17  <mmalecki>bnoordhuis: which one?
15:40:31  <bnoordhuis>it checks if the inspected object has a .inspect method and calls that
15:40:34  * AvianFlujoined
15:40:48  <bnoordhuis>but inspect is a pretty common name, it should have been __inspect__ or something
15:41:09  <mmalecki>bnoordhuis: too much python, eh?
15:41:13  <mmalecki>bnoordhuis: __inspect :)
15:41:24  <mmalecki>bnoordhuis: https://gist.github.com/1845715
15:41:35  <mmalecki>seen that?
15:42:18  <bnoordhuis>mmalecki: simple/test-http-full-response failing? yes. that assertion? no
15:42:34  <bnoordhuis>oh wait, simple/test-script-new - yes, seen it
15:42:50  <bnoordhuis>i think it's a change / regression in v8
15:42:53  <mmalecki>bnoordhuis: I'm like 90% it worked yesterday
15:43:00  <mmalecki>*90% sure
15:43:05  <bnoordhuis>no, it's been broken in master for some time
15:43:15  <bnoordhuis>but none of the relevant code in node changes, hence why i think it's a v8 issue
15:43:20  <bnoordhuis>*changed
15:43:29  <mmalecki>ok, so it's just my korsakov?
15:44:31  <bnoordhuis>probably yes
15:45:54  <bnoordhuis>piscisaureus__: https://github.com/joyent/libuv/issues/131#issuecomment-4002823
15:46:11  <piscisaureus__>bnoordhuis: yes, can be closed
15:47:25  <mmalecki>ok, I have to get going
15:47:34  <mmalecki>bnoordhuis: I can do util.inspect fixes tomorrow
15:47:47  <mmalecki>piscisaureus__: also, I'llt try to prototype daemonize
15:47:53  <piscisaureus__>cool
15:48:09  <bnoordhuis>mmalecki: check the issue tracker first, i think there are one or two pull requests already
15:48:41  <mmalecki>bnoordhuis: ok
15:52:44  <DrPizza>in oh so many ways
16:00:36  * mmaleckichanged nick to mmalecki[away]
16:06:08  * xaqjoined
16:06:59  * AndreasMadsenquit (Remote host closed the connection)
16:30:35  * sh1mmerquit (Quit: sh1mmer)
16:31:48  * felixgequit (Quit: felixge)
16:44:54  <bnoordhuis>piscisaureus__: https://github.com/bnoordhuis/node/commit/f54cfdf <- review?
16:45:10  * xaqquit (Remote host closed the connection)
16:45:11  <bnoordhuis>note my awesome ascii graphics
16:45:43  * philipsquit (Excess Flood)
16:46:04  <piscisaureus__>bnoordhuis: open skype
16:46:14  <piscisaureus__>bnoordhuis: they will paste a link in the google hangout in skype
16:46:34  <piscisaureus__>bnoordhuis: oh wait, not today
16:46:50  <piscisaureus__>bnoordhuis: you have to have a google account and make ruben/zef invite you
16:47:14  <bnoordhuis>piscisaureus__: google account as in google plus account?
16:47:16  * philipsjoined
16:47:26  <piscisaureus__>bnoordhuis: yes, I think so
16:47:39  <bnoordhuis>bleh
16:48:21  <bnoordhuis>okay, tomorrow
16:48:30  <bnoordhuis>does it work with google apps accounts?
16:48:42  <piscisaureus__>bnoordhuis *shrug*
16:49:22  <AvianFlu>bnoordhuis, it works with google apps now
16:49:32  <bnoordhuis>AvianFlu: sweet, thanks
16:50:02  <piscisaureus__>bnoordhuis: I invited ben@c9.io
16:50:20  <bnoordhuis>of course it doesn't work on linux...
16:50:23  * bnoordhuisfires up his mac
16:51:24  * bnoordhu1sjoined
16:52:00  * bnoordhu1squit (Client Quit)
16:52:38  <piscisaureus__>bnoordhuis: we already started. but try to join anyway
16:52:43  <piscisaureus__>it takes some practice :-)
16:55:52  <Sly__>bnoordhuis, yes. G+ works with Google Apps accounts.
16:55:57  <Sly__>Your administrator has to enable it, though.
16:56:37  <bnoordhuis>Sly__: i think our admin has
16:56:49  <bnoordhuis>need to install plugins too, it seems
16:57:21  <Sly__>Yeah. You have to install the Google Talk plugin for voice/video, if I'm not mistaken.
16:57:26  <piscisaureus__>bnoordhuis: that's not so painful. it was very fast for me
16:57:27  <Sly__>Because it uses the G!Talk servers for hangouts.
17:03:07  * stephankjoined
17:04:39  * isaacs[zzz]joined
17:05:12  * isaacs[zzz]changed nick to isaacs
17:05:14  <bnoordhuis>ey, it works
17:05:25  <piscisaureus__>bnoordhuis: yeah, you're late
17:05:35  <piscisaureus__>bnoordhuis: you will be next and last
17:05:37  <bnoordhuis>better late than never
17:05:43  <Sly__>Welcome back, isaacs.
17:05:47  <piscisaureus__>bnoordhuis: ask zef to invite you next time
17:06:56  <bnoordhuis>piscisaureus__: will do
17:07:16  <isaacs>bnoordhuis: heh, i just came across that bit of the docs last night and was going to ask about that
17:07:25  <isaacs>thanks
17:07:50  <bnoordhuis>isaacs: the starttls bit?
17:07:55  <isaacs>yeah
17:08:25  <bnoordhuis>i had that on my mental to do list for a few days now, decided i had better act on it lest i forget :)
17:08:56  * xaqjoined
17:10:22  * dapjoined
17:11:33  <indutny>bnoordhuis: o, any luck?
17:12:36  <bnoordhuis>indutny: in general or with something in particular?
17:12:52  <indutny>bnoordhuis: in general you've a lot of luck
17:12:55  <indutny>:D
17:13:02  <indutny>so I won't be asking
17:13:11  <indutny>with fd >0
17:13:19  <CIA-99>node: koichik v0.6 * ref50bd2 / doc/api/tls.markdown : docs: removed unnecessary STARTTLS section - http://git.io/jU201w
17:13:50  <Sly__>Welcome back, indutny.
17:13:54  <indutny>Sly__: hi!
17:14:19  <bnoordhuis>indutny: hook it up to gdb and inspect the backtrace when the assertion triggers
17:14:31  * pieternjoined
17:15:05  <indutny>bnoordhuis: oh, right
17:15:07  <indutny>I can do that
17:15:57  <indutny>oh, as it usually do
17:16:00  <indutny>it works with gdb
17:16:01  <CIA-99>node: Ben Noordhuis v0.6 * r3415427 / (5 files in 4 dirs): (log message trimmed)
17:16:01  <CIA-99>node: tls: mitigate session renegotiation attacks
17:16:01  <CIA-99>node: The TLS protocol allows (and sometimes requires) clients to renegotiate the
17:16:01  <CIA-99>node: session. However, renegotiation requires a disproportional amount of server-side
17:16:01  <CIA-99>node: resources, particularly CPU time, which makes it a potential vector for
17:16:01  <indutny>:D
17:16:02  <CIA-99>node: denial-of-service attacks.
17:16:02  <CIA-99>node: To mitigate this issue, we keep track of and limit the number of renegotiation
17:16:59  <indutny>actually it works fine now
17:17:07  <indutny>oh
17:17:38  * bnoordhuisis off to dinner
17:17:57  <indutny>haha
17:22:23  * travis-cijoined
17:22:23  <travis-ci>[travis-ci] joyent/node#429 (v0.6 - ef50bd2 : koichik): The build passed.
17:22:23  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/d91bc7c...ef50bd2
17:22:23  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/687970
17:22:23  * travis-cipart
17:25:52  * travis-cijoined
17:25:52  <travis-ci>[travis-ci] joyent/node#430 (v0.6 - 3415427 : Ben Noordhuis): The build passed.
17:25:52  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/ef50bd2...3415427
17:25:52  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/687990
17:25:52  * travis-cipart
17:31:48  * elijah-m_joined
17:32:35  * orlandovftwjoined
17:34:44  * elijah-mbpquit (Ping timeout: 265 seconds)
17:48:48  * sh1mmerjoined
17:49:17  * xaqquit (Remote host closed the connection)
18:01:00  * xaqjoined
18:24:42  * TooTallNatejoined
18:25:43  * dshaw_joined
18:31:40  * orlandovftwquit (Ping timeout: 248 seconds)
18:33:55  * igorzijoined
18:36:14  * elijah-m_quit (Remote host closed the connection)
18:41:27  * wankdankerquit (Read error: Connection reset by peer)
18:42:04  * mikealquit (Quit: Leaving.)
18:43:50  * AvianFluquit (Ping timeout: 248 seconds)
18:45:04  * mikealjoined
18:45:22  * isaacsquit (Remote host closed the connection)
18:55:37  * indexzerojoined
18:55:50  * dshaw_quit (Quit: Leaving.)
18:58:08  * xaqquit (Remote host closed the connection)
19:08:04  * `3rdEdenjoined
19:12:03  * brsonjoined
19:13:13  * indutnychanged nick to indutny_sleeping
19:14:48  * indexzeroquit (Quit: indexzero)
19:20:46  <CIA-99>node: Bert Belder reviewme * r9364699 / src/node.cc :
19:20:47  <CIA-99>node: Revert "Windows: support non-ansi command line arguments"
19:20:47  <CIA-99>node: CommandLineToArgvW doesn't behave exactly the same as the crt, which makes it useless.
19:20:47  <CIA-99>node: This reverts commit ef032cbe85b46584304c665b539b4f7561c4c26c. - http://git.io/ZzgDPg
19:20:47  <CIA-99>node: Bert Belder reviewme * rd23e86b / (node.gyp src/node_main.cc): Windows: another attempt to support unicode argv - http://git.io/QJNikw
19:21:03  <piscisaureus__>isaacs: igorzi: --^ review?
19:24:09  <igorzi>piscisaureus__: lgtm.. we're not using any Win32 functions without *A or *W, right? (just making sure that _UNICODE=1 doesn't cause some unintended side-effects)
19:24:37  <piscisaureus__>igorzi: I am alsways using *A or *W explicitly. And it still compiled fine :-)
19:24:57  * isaacsjoined
19:25:02  <igorzi>piscisaureus__: k
19:25:03  <piscisaureus__>igorzi: I preferred to do without -D_UNICODE=1 but the linker wouldn't pick up the entry point
19:25:58  <piscisaureus__>igorzi: this flag is only applied to node itself (not libuv, v8) so the risk surface is small.
19:26:23  <piscisaureus__>igorzi: hmm. FormatMessage
19:27:31  <igorzi>piscisaureus__: maybe we can use /ENTRY (linker flag) to specify the entry point?
19:27:39  * orlandovftwjoined
19:27:54  <piscisaureus__>igorzi: actually, WinBase.h looks as UNICODE and not _UNICODE :-)
19:28:50  <piscisaureus__>http://blogs.msdn.com/b/oldnewthing/archive/2004/02/12/71851.aspx
19:29:15  * travis-cijoined
19:29:15  <travis-ci>[travis-ci] joyent/node#431 (reviewme - d23e86b : Bert Belder): The build passed.
19:29:15  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/9364699^...d23e86b
19:29:15  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/688506
19:29:15  * travis-cipart
19:29:45  <piscisaureus__>igorzi: what would be the entry point? wmainCrtStartup?
19:29:56  * piscisaureus__has no clue how that works
19:32:21  <igorzi>piscisaureus__: yeah
19:33:12  <DrPizza>what are you trying to do here?
19:33:35  <igorzi>piscisaureus__: so, _UNICODE only affects CRT functions, and i'm pretty sure we're not using any _t* CRT functions
19:34:06  <piscisaureus__>DrPizza: http://git.io/QJNikw
19:34:09  <piscisaureus__>igorzi: yeah
19:34:29  <piscisaureus__>igorzi: I will also fix any stray non-explicit winapi calls in node itself
19:35:11  <piscisaureus__>igorzi: this _UNICODE stuff was probably really cool back in 1998. Nowadays it can only trigger bugs.
19:36:27  <DrPizza>always use _UNICODE
19:36:29  <DrPizza>or UNICODE
19:36:33  <DrPizza>or whatever the #defines are
19:36:44  <DrPizza>it's the default now in vs2010
19:36:47  <DrPizza>maybe in vs2008 too
19:37:05  <piscisaureus__>DrPizza: well, gyp doesn't set it :-)
19:38:05  <DrPizza>does crt not just do getcommandline (or whatever it is) and then commandlinetoargvw?
19:38:34  <piscisaureus__>DrPizza: no it has slightly different parsing
19:38:45  <piscisaureus__>DrPizza: it does some special stuff for argv[0]
19:39:05  <DrPizza>ugh
19:39:07  <DrPizza>is it useful stuff?
19:39:40  <piscisaureus__>DrPizza: so "c:\program files\"foo.exe bla comes out as argv[0]=c:\program files\foo.exe argv[1]=bla
19:40:00  <piscisaureus__>DrPizza: instead of argv[0]=c:\program files"foo.exe bla
19:40:11  <DrPizza>ugh
19:40:16  <DrPizza>so it is actually useful
19:40:30  <piscisaureus__>DrPizza: it seems reasonable
19:40:53  <DrPizza>yes
19:41:00  <piscisaureus__>Parses a Unicode command line string and returns an array of pointers to the command line arguments, along with a count of such arguments, in a way that is similar to the standard C run-time argv and argc values.
19:41:08  <piscisaureus__>They take similar very literally :_)
19:41:11  <DrPizza>heh
19:41:19  <piscisaureus__>"We never said it was exactly the same"
19:41:26  <DrPizza>ugh
19:41:33  <piscisaureus__>"We only swapped the interpretation of spaces and dots"
19:41:43  <piscisaureus__>"Still pretty similar huh"
19:43:10  * elijah-mbpjoined
19:43:31  <DrPizza>so ifyou use regular main() it's giving you ansi and not utf-8?
19:47:35  <piscisaureus__>DrPizza: yes.
19:47:59  <piscisaureus__>DrPizza: well, thinking about it, defining _MCBS may change that
19:48:16  <piscisaureus__>er, _MBCS
19:48:35  * pfox___joined
19:49:25  <pfox___>howdy! hello from #rust .. quick question: do calls to uv_async_send() generate callbacks after uv_run() ?
19:49:38  <pfox___>or do the "pokes" only work post-uv_run() ?
19:50:04  <piscisaureus__>pfox___: they ar for using from another thread
19:50:23  <pfox___>indeed
19:50:46  <pfox___>but if you have a loop handle and call uv_async_send() from another thread before uv_run() ..
19:50:58  <pfox___>will a callback be processed post uv_run()?
19:51:01  <piscisaureus__>pfox___: no, then it doesn't work
19:51:04  <piscisaureus__>pfox___: ues
19:51:05  <piscisaureus__>yes
19:51:46  <piscisaureus__>pfox___: but... you should keep in mind that uv_async might collapse multiple uv_async_send calls into one callback
19:52:04  <piscisaureus__>pfox___: which is likely if you do if before uv_run()
19:56:02  * indexzerojoined
19:56:35  * AndreasMadsenjoined
19:59:33  <CIA-99>node: Bert Belder reviewme * rd52f502 / (node.gyp src/node_main.cc): Windows: another attempt to support unicode argv - http://git.io/G1DPGw
19:59:33  <CIA-99>node: Bert Belder reviewme * r67c76f5 / (src/node.cc src/platform_win32.cc): Make win32 ansi api usage explicit - http://git.io/rbE42Q
19:59:47  <piscisaureus__>I don't think _MCBS does much
20:00:28  <piscisaureus__>igorzi: so what do you want? use /ENTRY or keep it like this? Also, I added another commit (^) that makes all *A apis explicit
20:00:35  <piscisaureus__>I'd like you to review that too
20:00:44  <DrPizza>why do you need /ENTRY
20:01:38  * xaqjoined
20:01:47  * AvianFlujoined
20:01:55  <DrPizza>or rather, what are you doing that's preventing it from picking the right entrypoint automatically
20:03:15  * dshaw_joined
20:03:18  * txdvquit (Ping timeout: 248 seconds)
20:03:42  * dshaw_1joined
20:03:44  * dshaw_quit (Read error: Connection reset by peer)
20:05:56  * txdvjoined
20:06:15  <piscisaureus__>DrPizza: I don't know. I had to define _UNICODE to make it work without /ENTRY
20:06:26  <piscisaureus__>It said it couldn't find _main
20:06:33  <DrPizza>oh, that much is possible
20:06:41  <DrPizza>but if you're using wmain you should define _UNICODE
20:07:01  <piscisaureus__>DrPizza: but igor was somewhat concerned that we might accidentally be switching from char to wchar apis
20:07:12  <piscisaureus__>DrPizza: which is a valid concern :-)
20:07:21  <isaacs>piscisaureus__: building to review now
20:07:33  <DrPizza>piscisaureus__: are you not explicitly calling A APIs every time?
20:07:38  <DrPizza>although it's a shame, because W APIs are faster
20:07:41  * travis-cijoined
20:07:41  <travis-ci>[travis-ci] joyent/node#432 (reviewme - 67c76f5 : Bert Belder): The build was broken.
20:07:41  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/d23e86b...67c76f5
20:07:41  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/688723
20:07:41  * travis-cipart
20:07:56  <piscisaureus__>DrPizza: yeah, well, I just added a commit that does that
20:07:59  <DrPizza>all those string conversions you do
20:08:03  <DrPizza>carefully measuring out the buffer
20:08:05  <DrPizza>then converting
20:08:08  <piscisaureus__>yes
20:08:10  <DrPizza>just so the operating system can convert back
20:08:13  <piscisaureus__>that's dumb
20:08:20  <piscisaureus__>I prefer to use W
20:08:27  <DrPizza>but W is sadly awkward on unix
20:08:47  <piscisaureus__>igorzi: read this first: http://blogs.msdn.com/b/oldnewthing/archive/2004/02/12/71851.aspx
20:08:52  <piscisaureus__>er, not igorzi
20:08:54  <DrPizza>piscisaureus__: how complex is crt's commandline to argv processing?
20:09:00  <piscisaureus__>DrPizza: read this first: http://blogs.msdn.com/b/oldnewthing/archive/2004/02/12/71851.aspx
20:09:12  <DrPizza>piscisaureus__: I am wondering if maybe just use main(), grab th ecommandline, crack it yourself
20:09:16  * dshaw_1changed nick to dshaw_
20:09:41  <piscisaureus__>DrPizza: it's not very complex. I considered that.
20:09:46  <piscisaureus__>DrPizza: but this also works :-)
20:13:01  <DrPizza>I guess
20:13:11  <DrPizza>overriding the entry point just leaves a bad taste in my mouth
20:15:04  * indexzeroquit (Read error: Connection reset by peer)
20:17:39  <isaacs>piscisaureus__: baller.
20:17:40  <isaacs>works
20:20:12  * xaqquit (Read error: Connection reset by peer)
20:20:31  * xaqjoined
20:21:27  * mralephjoined
20:25:18  <piscisaureus__>platform-win32.cc is suck a mess. It's really the dungeons of node source code.
20:25:42  * dshaw_quit (Quit: Leaving.)
20:26:13  <mraleph>dap: hi. I remember there was a review you wanted me to land. somehow I lost the URL. can you send it again?
20:26:43  <isaacs>piscisaureus__: all software platforms have dungeons.
20:26:43  <dap>mraleph: sure, it was http://codereview.chromium.org/9361008/
20:26:56  <isaacs>piscisaureus__: if code is truly clean, it's because it's small.
20:32:00  <mraleph>dap: thanks!
20:35:01  <CIA-99>node: Bert Belder reviewme * r045b19e / (src/node.cc src/platform_win32.cc):
20:35:01  <CIA-99>node: Make win32 ansi api usage explicit
20:35:01  <CIA-99>node: Use widechar versions in a couple of places.
20:35:01  <CIA-99>node: Don't use C-style cast in C++ code. - http://git.io/XywAnA
20:35:10  <piscisaureus__>DrPizza: ^-- does that make you happy?
20:35:44  <DrPizza>examining
20:35:55  <piscisaureus__>DrPizza: it's not very exciting.
20:35:55  <DrPizza>man, I wish I could tell my C++ compiler to just ban C casts
20:36:05  <piscisaureus__>heh
20:36:10  <piscisaureus__>lint my friend
20:36:15  <DrPizza>'static' is unnecessary in c++
20:36:22  <DrPizza>or is this a method?
20:36:24  <DrPizza>I can' tell from context
20:37:33  * xaqquit (Remote host closed the connection)
20:37:43  <piscisaureus__>I didn't change that
20:38:22  <DrPizza>no, it just seems strange ot have it
20:38:28  <DrPizza>I see that various functions are marked static
20:39:13  <piscisaureus__>we take pull requests :-)
20:39:15  <DrPizza>is that cast even necessary?
20:39:18  <piscisaureus__>I am not very good at c++
20:39:21  <piscisaureus__>DrPizza: which?
20:39:46  <DrPizza>FormatMessageA(... reinterpret_cast<LPSTR>(&errmsg)
20:39:52  <DrPizza>isn't LPSTR already char**?
20:40:02  <DrPizza>or is it just char*?
20:40:03  <piscisaureus__>DrPizza: no, heh
20:40:15  <piscisaureus__>DrPizza: the function takes a char* but we are providing a char**
20:40:37  <DrPizza>ugh so LPSTR is not pointer to string as it claims
20:40:39  <DrPizza>just string
20:40:52  <piscisaureus__>DrPizza: LPSTR is char* yes
20:41:14  <piscisaureus__>DrPizza: FormatMessage switches semantics based on the ALLOCATE_BUFFER flag
20:41:26  <DrPizza>oh right
20:41:35  <piscisaureus__>DrPizza: instead of putting the message in the buffer, it allocates memory for is and puts a pointer to that in the buffer
20:41:40  <DrPizza>yeah
20:41:54  <DrPizza>I vaguely remember now
20:42:00  <piscisaureus__>DrPizza: ok, gtg for a few minutes. ttyl
20:44:09  * travis-cijoined
20:44:09  <travis-ci>[travis-ci] joyent/node#433 (reviewme - 045b19e : Bert Belder): The build was fixed.
20:44:09  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/67c76f5...045b19e
20:44:09  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/688848
20:44:09  * travis-cipart
20:44:18  <DrPizza>piscisaureus__: looks ok to me, the static thing is a more general issue
20:45:48  * mikealquit (Quit: Leaving.)
20:46:56  * piscisaureus__quit (Ping timeout: 276 seconds)
20:48:47  * mikealjoined
20:49:22  * xaqjoined
20:53:31  * mikealquit (Client Quit)
21:00:17  * txdvquit (Ping timeout: 252 seconds)
21:01:27  * xaqquit (Remote host closed the connection)
21:03:06  * txdvjoined
21:04:11  * brsonquit (Ping timeout: 244 seconds)
21:07:54  * brsonjoined
21:08:36  * piscisaureus_joined
21:09:09  * AndreasMadsenquit (Remote host closed the connection)
21:19:19  <piscisaureus_>isaacs: so is the reviewme branch good to land?
21:19:21  <CIA-99>node: Bert Belder reviewme * r66438e9 / (src/node.cc src/platform_win32.cc):
21:19:21  <CIA-99>node: Make win32 ansi api usage explicit
21:19:21  <CIA-99>node: Use widechar versions in a couple of places.
21:19:21  <CIA-99>node: Don't use C-style cast in C++ code. - http://git.io/NVRIkg
21:20:49  <piscisaureus_>igorzi: I am kind of waiting for your ack, actually. Do you want to use /ENTRY or is this ok?
21:22:47  <DrPizza>piscisaureus_: anyway, in C, any function declared and defined in a .c file has its name automatically exported, unless the function is marked as "static". this is due to C using implicit declarations etc.
21:23:00  <igorzi>piscisaureus_: this is ok i think
21:23:09  <DrPizza>piscisaureus_: you had to mark your internal implementation functions as "static" or else they could accidentally conflict with other functions in other .c files
21:23:15  <DrPizza>piscisaureus_: in C++, that's no longer the case
21:23:25  <DrPizza>names are only visible if a declaration is visible
21:23:51  <piscisaureus_>DrPizza: yeah we should change this at some point
21:24:01  <DrPizza>I mean it's harmless enough
21:24:01  <piscisaureus_>DrPizza: but it's "another" cleanup
21:24:05  <DrPizza>just not vernacular C++
21:24:08  <DrPizza>yeah I know
21:25:50  * mikealjoined
21:26:12  * AvianFluchanged nick to AvianFlu|FUD
21:26:46  <einaros>https://github.com/joyent/node/pull/2764 - yay or nay?
21:27:21  <einaros>I'm finalizing support for websocket extensions in ws; that is the last step
21:28:24  * travis-cijoined
21:28:24  <travis-ci>[travis-ci] joyent/node#434 (reviewme - 66438e9 : Bert Belder): The build passed.
21:28:24  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/045b19e...66438e9
21:28:24  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/689064
21:28:24  * travis-cipart
21:29:07  <`3rdEden>einaros yay :$
21:29:49  <CIA-99>node: Bert Belder v0.6 * r9364699 / src/node.cc :
21:29:49  <CIA-99>node: Revert "Windows: support non-ansi command line arguments"
21:29:49  <CIA-99>node: CommandLineToArgvW doesn't behave exactly the same as the crt, which makes it useless.
21:29:49  <CIA-99>node: This reverts commit ef032cbe85b46584304c665b539b4f7561c4c26c. - http://git.io/ZzgDPg
21:29:49  <CIA-99>node: Bert Belder v0.6 * rd52f502 / (node.gyp src/node_main.cc): Windows: another attempt to support unicode argv - http://git.io/G1DPGw
21:29:50  <CIA-99>node: Bert Belder v0.6 * r8f2694b / (src/node.cc src/platform_win32.cc):
21:29:50  <CIA-99>node: Make win32 ansi api usage explicit
21:29:51  <CIA-99>node: Use widechar versions in a couple of places.
21:29:52  <CIA-99>node: Don't use C-style cast in C++ code. - http://git.io/54sxOw
21:29:59  <isaacs>piscisaureus_: yeah, looks good to me
21:30:04  <isaacs>thanks!
21:30:08  <piscisaureus_>nice
21:30:27  <isaacs>ok, i'm gonna branch v0.6.11-release right now off 8f2694b
21:30:53  <isaacs>now we can all focus on actually getting things done in master, and hopefully put 0.6 behind us asap.
21:31:01  <piscisaureus_>kewl
21:31:03  <piscisaureus_>isaacs: yeah
21:31:23  <piscisaureus_>isaacs: btw - why did this http CONNECT support make it in master?
21:31:32  <piscisaureus_>er, in 0.6
21:31:59  <isaacs>piscisaureus_: becasue it's preventing microsoft and others from using 0.6, and it's very low-risk
21:32:09  <piscisaureus_>igp
21:32:19  <piscisaureus_>igorzi: what do you guys need CONNECT for?
21:32:22  <isaacs>doesn't actually add much functionality, just exposes the underlying socket object
21:32:25  <isaacs>igp?
21:32:34  <piscisaureus_>typo
21:32:47  <isaacs>oh, start of igorzi, got it :)
21:33:24  <piscisaureus_>isaacs: can't get used to this mac keyboard
21:33:56  <einaros>side note added to pullreq: node is currently not capable of hosting 100% conformant websocket implementations
21:34:15  <piscisaureus_>isaacs: 2764 lgtm, and if CONNECT could make it into 0.6 that could too imho :-)
21:34:48  <isaacs>what's 2764?
21:34:56  <igorzi>piscisaureus_: the hook to do CONNECT is already in 0.6
21:35:00  * AvianFlu|FUDquit (Ping timeout: 240 seconds)
21:35:08  <piscisaureus_>igorzi: yes, I saw that
21:35:13  <isaacs>piscisaureus_: also, it's not adding CONNECT, it's just exposing the socket object from http so that you can reuse it for a https request on the same connection.
21:35:20  <piscisaureus_>isaacs: https://github.com/joyent/node/pull/2764
21:35:32  <isaacs>oh! yes.
21:35:34  <isaacs>i wanted to get this in
21:35:39  <isaacs>it's a bugfix.
21:36:13  <isaacs>thanks for reminding me
21:36:31  <`3rdEden>einaros the only reason that it's not 100% conformant is because of the utf8 issues right?
21:37:06  * paddybyersquit (Quit: paddybyers)
21:37:20  <isaacs>einaros: Can you sign the CLA, please? http://nodejs.org/cla.html
21:37:30  <einaros>already have
21:37:32  <einaros>sent to emily
21:37:41  * paddybyersjoined
21:37:44  <isaacs>einaros: oh, signed with a physical paper and pen thing?
21:37:45  * travis-cijoined
21:37:45  <travis-ci>[travis-ci] joyent/node#435 (v0.6 - 8f2694b : Bert Belder): The build passed.
21:37:45  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/3415427...8f2694b
21:37:45  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/689149
21:37:45  * travis-cipart
21:38:09  <einaros>`3rdEden: no, that's a javascript issue. can't be fixed by node or v8.
21:38:53  <isaacs>i would totally love to turn on --harmony_unicode in node by default if there was such an option.
21:38:55  <einaros>`3rdEden: this is related to the extension specification needing multiline header support (in addition to a ridiculously rich header parser, but that falls on me)
21:39:46  <einaros>isaacs: I sent a pdf earlier today by email. signed and scanned.
21:40:09  <isaacs>einaros: sweet. checking up on it now. emily confirms, but i like to see it before pulling in, just to be safe.
21:57:18  * AvianFlujoined
22:00:59  * piscisaureus_quit (Ping timeout: 245 seconds)
22:05:25  * xaqjoined
22:14:09  <CIA-99>node: Ben Noordhuis v0.6 * r2c07712 / (lib/http.js test/simple/test-http-server-multiheaders.js): http: allow multiple WWW-Authenticate headers - http://git.io/_Gnk3w
22:14:09  <CIA-99>node: einaros v0.6 * r83fd1c1 / (lib/http.js test/simple/test-http-server-multiheaders.js): Add WebSocket RFC6455 multiheader fields to the http parser. - http://git.io/WcA83w
22:16:54  * mikealquit (Quit: Leaving.)
22:22:18  * travis-cijoined
22:22:18  <travis-ci>[travis-ci] joyent/node#436 (v0.6 - 83fd1c1 : einaros): The build passed.
22:22:18  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/8f2694b...83fd1c1
22:22:18  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/689367
22:22:18  * travis-cipart
22:28:57  * perezdjoined
22:29:26  * piscisaureus_joined
22:30:56  * pfox___quit (Ping timeout: 276 seconds)
22:31:53  <isaacs>einaros: ^ thanks!
22:36:51  <bnoordhuis>sup homies?
22:38:57  <isaacs>yo
22:39:03  <einaros>isaacs: great, thanks :)
22:40:04  <isaacs>bnoordhuis: what's up with the explicit v8 locker thing?
22:40:13  <isaacs>bnoordhuis: should that be in 0.6.11?
22:40:33  <bnoordhuis>isaacs: no
22:40:41  <isaacs>ok
22:40:48  <bnoordhuis>i discussed it with marcel laverdet and he's fine with putting it off until 0.8
22:41:15  <bnoordhuis>isaacs: you backported that www-authenticate patch?
22:43:51  <isaacs>bnoordhuis: yeah, it's just making a header duplicate-friendly that should have been anyway
22:44:07  <bnoordhuis>okay, sure
22:44:15  <isaacs>i consider that a bugfix.
22:44:27  <isaacs>i'd like an api that is'nt so flaky, though
22:44:40  <isaacs>maybe for 0.8, we can organize that mess a little bit.
22:44:46  <bnoordhuis>i can live with koichi's proposal to concatenate all headers
22:44:54  <bnoordhuis>on a side note: https://github.com/bnoordhuis/node/commit/f54cfdf <- review?
22:45:13  <bnoordhuis>fix for https://github.com/joyent/node/issues/2721
22:46:02  <bnoordhuis>actually, i think fedor already acked it
22:46:16  <isaacs>bnoordhuis: at first glance it looks ok. what's andreasmadsen think of it? i've got a cluster patch from him in my queue still.
22:46:29  <bnoordhuis>he was okay with it too
22:46:32  <isaacs>ok, sure.
22:46:39  <bnoordhuis>https://github.com/joyent/node/issues/2721#issuecomment-3914301
22:46:41  <isaacs>if fedor and he both ok'd it then i'm kewl with it
22:47:02  <isaacs>just don't want to let things in that might mess with the stuff he's got planned, but this looks pretty straightforward.
22:47:20  * mikealjoined
22:48:33  <CIA-99>node: Ben Noordhuis v0.6 * r30e462e / (4 files in 2 dirs): (log message trimmed)
22:48:33  <CIA-99>node: cluster: propagate bind errors
22:48:33  <CIA-99>node: This commit fixes a bug where the cluster module failed to propagate EADDRINUSE
22:48:33  <CIA-99>node: errors.
22:48:33  <CIA-99>node: When a worker starts a (net, http) server, it requests the listen socket from
22:48:33  <CIA-99>node: its master who then creates and binds the socket.
22:48:34  <CIA-99>node: Now, OS X and Windows don't always signal EADDRINUSE from bind() but instead
22:50:15  <isaacs>bnoordhuis: oh, that was for 0.6?
22:50:32  <piscisaureus_>isaacs: yes, +1 for putting that in 0.6
22:50:37  <isaacs>kewl
22:50:51  <isaacs>i'm also updating uv to it's v0.6 branch. anything that ought to be in there?
22:50:56  <isaacs>(that isn't already, i mean)
22:51:32  <bnoordhuis>the tty drain patch?
22:51:48  <isaacs>bnoordhuis: yeah, that's the main motivation.
22:51:50  <bnoordhuis>that's included if you update to v0.6's current HEAD
22:51:57  <isaacs>and some UV_UNKNOWNs
22:51:58  <isaacs>kewl
22:52:07  <bnoordhuis>FIN is what causes 'end' to be emitted for TCP streams. If I remember correctly, you'll have to listen on the 'close' event for RST. <- true and quite confusing
22:52:26  <piscisaureus_>yes
22:53:21  <bnoordhuis>don't know if there's anything we can really do about it
22:53:25  <piscisaureus_>isaacs: I can add an EPIPE mapping for windows if you care
22:53:33  <CIA-99>node: Ben Noordhuis v0.6.11-release * r30e462e / (4 files in 2 dirs): (log message trimmed)
22:53:33  <CIA-99>node: cluster: propagate bind errors
22:53:33  <CIA-99>node: This commit fixes a bug where the cluster module failed to propagate EADDRINUSE
22:53:33  <CIA-99>node: errors.
22:53:33  <CIA-99>node: When a worker starts a (net, http) server, it requests the listen socket from
22:53:33  <CIA-99>node: its master who then creates and binds the socket.
22:53:34  <CIA-99>node: Now, OS X and Windows don't always signal EADDRINUSE from bind() but instead
22:53:35  <CIA-99>node: isaacs v0.6.11-release * r2bbdde7 / (5 files in 4 dirs): Upgrade uv to b8649fd - http://git.io/-MBIkg
22:53:54  <isaacs>piscisaureus_: EPIPE would be nice, sure
22:54:05  <piscisaureus_>isaacs: that does in libuv btw
22:54:14  <piscisaureus_>a sec - it's a one-liner
22:54:21  <isaacs>right, of course.
22:54:22  <piscisaureus_>But I have to look up the code
22:54:30  <isaacs>ok
22:56:53  * indexzerojoined
22:57:04  * indexzeroquit (Client Quit)
22:57:08  * travis-cijoined
22:57:09  <travis-ci>[travis-ci] joyent/node#437 (v0.6 - 30e462e : Ben Noordhuis): The build passed.
22:57:09  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/83fd1c1...30e462e
22:57:09  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/689501
22:57:09  * travis-cipart
22:59:29  <piscisaureus_>ok, patch done, testing in node
22:59:41  <bnoordhuis>isaacs, piscisaureus_: https://github.com/joyent/node/pull/2766/files <- path.split(), good addition?
23:00:22  <piscisaureus_>D:\node4>debug\node test\simple\test-stdout-close-catch.js
23:00:22  <piscisaureus_>ok
23:00:24  <piscisaureus_>fixed :-)
23:01:09  <CIA-99>libuv: Bert Belder v0.6 * r86ebe48 / src/win/error.c : Windows: add error mappings that map to EPIPE - http://git.io/NZHFGw
23:01:22  <piscisaureus_>^-- isaacs: roll back if not lgty :-)
23:01:43  <piscisaureus_>isaacs: otherwise, this makes test-stdout-close-catch pass instead of fail with UNKNOWN
23:01:50  * travis-cijoined
23:01:51  <travis-ci>[travis-ci] joyent/node#438 (v0.6.11-release - 2bbdde7 : isaacs): The build passed.
23:01:51  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/83fd1c1...2bbdde7
23:01:51  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/689530
23:01:51  * travis-cipart
23:02:53  * travis-cijoined
23:02:54  <travis-ci>[travis-ci] joyent/libuv#98 (v0.6 - 86ebe48 : Bert Belder): The build is still failing.
23:02:54  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/b8649fd...86ebe48
23:02:54  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/689572
23:02:54  * travis-cipart
23:05:02  <piscisaureus_>bnoordhuis: what does path.split().device return on unix?
23:05:17  <bnoordhuis>piscisaureus_: nothing
23:05:26  <piscisaureus_>bnoordhuis: oh, that's nice
23:06:21  <piscisaureus_>bnoordhuis: ok - you should verify that :-)
23:06:59  <bnoordhuis>hmm, it sets device:'/'
23:07:00  <piscisaureus_>bnoordhuis: I kind of agree with this approach - it is better from a cross-platform pov than people that suggest that we should split naively at \ or /
23:07:08  <piscisaureus_>ok, that's better even
23:07:21  <piscisaureus_>bnoordhuis: I think it should be called path.parse
23:07:33  <bnoordhuis>is it? / is not a device
23:07:46  <piscisaureus_>and the names are too long; it should just be 'unc', 'absolute', 'dirs'
23:07:51  <bnoordhuis>also, this is wrong -> directories: [ 'home', 'bnoordhuis', 'src', 'nodejs', '' ],
23:07:53  <piscisaureus_>bnoordhuis: ok, the name should probably be "root"
23:08:10  <piscisaureus_>(instead of device)
23:08:26  <piscisaureus_>and it needs some consistent styling
23:08:45  <bnoordhuis>yeah, and tests
23:08:52  <piscisaureus_>not random newlines and `{foo:bar, foo: bar}`
23:09:30  <piscisaureus_>bnoordhuis: also, this is not really path.split. I think it should be called `path.parse`
23:09:43  <bnoordhuis>i'll comment on the issue
23:10:01  <bnoordhuis>piscisaureus_: what should be named "root"?
23:10:01  <piscisaureus_>bnoordhuis: commenting means we want to have it.
23:10:09  <piscisaureus_>bnoordhuis: "device" -> "root"
23:10:12  <bnoordhuis>oh right
23:10:27  <piscisaureus_>bnoordhuis: on unix it is always "/" (when the path is absolute)
23:10:29  <bnoordhuis>if you don't want it, close it :)
23:10:40  <piscisaureus_>bnoordhuis: on windows it is "c:", "d:\", or "\\unc\share\"
23:10:49  <piscisaureus_>bnoordhuis: ask isaacs
23:10:57  <bnoordhuis>isaacs: aye or nay?
23:11:39  <tjfontaine>hmm, what about mount points as devices
23:11:58  <piscisaureus_>bnoordhuis: imho, it's -1 for being superfluous, but +.5 since it is platform-dependent and +.5 because people keep asking for it
23:12:29  <bnoordhuis>piscisaureus_: so +0 from you
23:12:40  <bnoordhuis>tjfontaine: when/why would you care about that?
23:12:44  <piscisaureus_>bnoordhuis: okay, let's make it +.2 from me :-)
23:12:50  <piscisaureus_>tjfontaine: what do you mean?
23:12:52  <bnoordhuis>noted :)
23:13:16  <tjfontaine>bnoordhuis: some utilities restrict access to a "single filesystem"
23:13:24  <piscisaureus_>tjfontaine: note that this just extracts info from a string - it doesn't stat() or statvfs() or anything
23:13:25  <bnoordhuis>i'm lawful neutral myself on this one
23:14:09  <tjfontaine>I don't think "/" serves anyone much good on unix for device, other than to say "we added this for windows"
23:14:21  <piscisaureus_>tjfontaine: same for 'unc' :-)
23:15:56  <tjfontaine>at least on linux you could map to /proc/mounts I would imagine there's a relatively sane way to match that across unix-like platforms
23:16:40  <isaacs>piscisaureus_: EPIPE looks good, thanks
23:16:56  <isaacs>i'm kind of undecided on path.split
23:17:06  <isaacs>i mean, we need *something*
23:17:46  <isaacs>but if we're going to say that path.split is the counterpart to path.join, then it should just do string.split, using '/' on unix, and /\/|\\/ on windows
23:18:01  <isaacs>maybe omitting empty bits in the middle.
23:18:10  <isaacs>what we really want is a path.parse, which is more like url.parse
23:18:21  <isaacs>and on unix, you only ever get a path bit.
23:18:45  * isaacsjust scrolled back and saw piscisaureus_ saying the same thing.
23:19:07  <isaacs>so either we're actually in agreement, or you're subliminally controlling my thoughts.
23:19:14  <isaacs>:)
23:19:40  <isaacs>if we have path.parse, then we should add path.format, as well, and make it actually a nice 1:1 mapping to how url does with urls.
23:20:22  <piscisaureus_>isaacs: those are not mutually exclusive. In fact, if I were controlling your thoughts I would most likely make you agree with me.
23:20:36  <bnoordhuis>require('uri').parse and require('uri').format?
23:21:10  <isaacs>piscisaureus_: really? it'd be more subtle if you said something you don't quite agree with, then make me think what you actually want, then concede, and use your concession to get me to give up something on my end.
23:21:20  <isaacs>that would be the long-game strategic move, anyway
23:21:40  <isaacs>bnoordhuis: let's not even speak the word 'uri' here
23:21:53  <isaacs>that's an old dead horse that took way too many beatings as it is.
23:21:55  <bnoordhuis>urn?
23:22:03  * isaacshead asplode
23:22:04  <isaacs>no.
23:22:10  <bnoordhuis>haha
23:22:34  <isaacs>by unfortunate accident of history, unix paths don't tell you when your'e crossing device boundaries, and windows paths are as complicated as urls.
23:23:17  <tjfontaine>and by device you mean filesystem :)
23:24:36  <isaacs>tjfontaine: er, yeah. different mounts.
23:24:46  <isaacs>where "mv" becomes "copy and delete"
23:24:49  * piscisaureus__joined
23:24:53  <isaacs>rather than rename
23:26:25  <piscisaureus__>And if that wasn't enough, windows doesn't guarantee that when the "device" stays the same you're not crossing device boundaries :-
23:27:23  <TooTallNate>some straight Inception going on right now
23:27:25  <tjfontaine>right, since you can mount across there, so does it really mean anything, should really be named prefix instead?
23:27:37  * piscisaureus_quit (Ping timeout: 240 seconds)
23:28:18  <piscisaureus__>tjfontaine: that's why I suggested to name it "root" a couple of messages back :-)
23:28:35  <tjfontaine>ah I didn't quite catch your drift at that point
23:30:15  <isaacs>ugh.
23:30:23  <isaacs>anyway, i don't want the path module doing io.
23:30:43  <isaacs>but a strictly string-munging path.parse()/path.format() would be really nice.
23:30:55  <isaacs>it's fundamentally different from urls.
23:31:15  <isaacs>we already have path.resolve
23:31:25  <isaacs>and most of the bits to parse paths on windows are already there.
23:31:49  <bnoordhuis>isaacs: one for joyent's legal department: http://www.openssl.org/support/faq.html#LEGAL1
23:32:13  <bnoordhuis>the bundled openssl includes idea, rc5, etc.
23:32:14  <piscisaureus__>It is unfortunate that nobody really seems to grasp the power of path.resolve :-)
23:32:57  <bnoordhuis>'including' is probably not so bad, 'building and using' may be another thing
23:34:43  <isaacs>piscisaureus__: as someone who has probably dealt with paths a *lot* on windows and unix, i have to say, it is one of my favorite methods in node.
23:34:51  <isaacs>piscisaureus__: the other stuff is cool too, http, whatever.
23:34:52  <isaacs>but man.
23:34:53  <isaacs>paths.
23:34:56  <tjfontaine>bnoordhuis: dunno, sounds like another vote for dynamic over static linking :)
23:34:59  <isaacs>that shit is just unnecessarily awful.
23:35:04  <isaacs>path.resolve is awesome.
23:35:17  * elijah-mbpquit (Remote host closed the connection)
23:35:48  <isaacs>./config no-idea <--lol
23:36:33  <CIA-99>node: isaacs v0.6.11-release * r7a1a62e / (5 files in 4 dirs): Upgrade uv to 86ebe48660e - http://git.io/AKgTwQ
23:38:44  <bnoordhuis>TooTallNate: https://github.com/joyent/node/issues/2754 <- i don't understand
23:39:28  <bnoordhuis>where/when would your child process absolutely need a pty instead of a pipe or socketpair?
23:40:00  <isaacs>holy moly: [02:10|% 100|+ 336|- 1]: Done
23:40:04  <isaacs>that's pretty nice
23:40:34  * felixgejoined
23:40:34  * felixgequit (Changing host)
23:40:34  * felixgejoined
23:40:45  <TooTallNate>bnoordhuis: it's just a matter of how processes check to see if they should output ANSI or regular text
23:41:01  <TooTallNate>bnoordhuis: so there's situations where i would like the child process to also write colors to its output
23:41:02  * felixgequit (Client Quit)
23:41:22  <isaacs>TooTallNate: does the program have some kind of way to force colors, like --color=always on the cli or something?
23:41:27  <isaacs>TooTallNate: that's what npm does.
23:41:51  <TooTallNate>isaacs: ideally yes, but that's rarely the case
23:41:55  <isaacs>i think ls and less have similar options
23:41:57  <isaacs>and grep
23:42:01  <TooTallNate>bnoordhuis: isaacs: here's a use-case: http://stackoverflow.com/questions/7725809/preserve-color-when-executing-child-process-spawn
23:42:18  <TooTallNate>which is also what I would like to do with node-gyp
23:42:28  <bnoordhuis>ah, windows...
23:42:41  <TooTallNate>hahaha
23:43:11  * stephankquit (Quit: *Poof!*)
23:43:38  <bnoordhuis>piscisaureus__: ^
23:43:49  <bnoordhuis>isaacs, piscisaureus__: what was the verdict on path.split?
23:44:00  <piscisaureus__>bnoordhuis: we dont know yet
23:44:02  <piscisaureus__>er, I ~
23:44:19  <piscisaureus__>TooTallNate: what's up with that stack overflow issue?
23:44:20  <isaacs>bnoordhuis: good idea, wrong api shape.
23:44:32  <isaacs>bnoordhuis: i'll reply on the issue.
23:44:36  <bnoordhuis>isaacs: cool
23:44:49  * travis-cijoined
23:44:49  <travis-ci>[travis-ci] joyent/node#439 (v0.6.11-release - 7a1a62e : isaacs): The build passed.
23:44:49  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/2bbdde7...7a1a62e
23:44:49  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/689779
23:44:49  * travis-cipart
23:44:49  <TooTallNate>piscisaureus__: there's no way for cp.spawn() to spawn the child such that it will output colors
23:44:50  <isaacs>we *do* need something like this.
23:45:01  <TooTallNate>piscisaureus__: they check "isatty" or equivalent
23:45:08  <piscisaureus__>TooTallNate: yes, pass customFDs: [0, 1, 2]
23:45:40  <TooTallNate>piscisaureus__: that's not always the use-case though: https://github.com/joyent/node/issues/2754
23:46:41  <isaacs>TooTallNate, piscisaureus__: right, so, there are cases where you want to get at the output in a stream object, but also have 'isatty' work in the child.
23:46:41  <piscisaureus__>TooTallNate: PTYs can't be made to work on windows. It is an unix-only concept.
23:47:06  <piscisaureus__>TooTallNate: that can't be done on windows. On unix you would have to create a pty, indeed.
23:47:34  <isaacs>i think this something that should maybe be folded into the direct-access-to-fd issue, and perhaps a broader conversation about our unix-vs-windows support philosophy.
23:47:37  <TooTallNate>isaacs: right. piscisaureus__: bummer :(
23:48:11  <isaacs>i don't want to start adding API features that will never work on windows. at the same time, it seems a bit annoying to a lot of people to disable things on unix just becasue windows can't do them.
23:48:14  <TooTallNate>isaacs: then unix users create their own forkpty fd and use that with cp.spawn()?
23:48:25  <isaacs>TooTallNate: or something, i don't know.
23:48:44  <piscisaureus__>TooTallNate: on unix colors are crafted by writing ansi escape codes. If you can trick the child process into outputting them, you can just read them and forward them to process.stdout
23:48:50  <isaacs>at the same time, i also don't want to start having node be just a dumping ground for all things unix.
23:49:03  <bnoordhuis>require('posix')!
23:49:05  * bnoordhuisducks
23:49:06  <isaacs>sure.
23:49:11  <isaacs>actually, that's not such a bad idea.
23:49:30  <piscisaureus__>TooTallNate: on windows colors are created with special syscalls that only work for console FDs
23:49:49  <isaacs>but, like, maybe we extend our stdio: { in, out, err } to let it take an arbitrary FD or handle, and if it doesn't work on windows, we ENOTSUP it.
23:50:07  <DrPizza>that sounds too subtle to me, isaacs
23:50:16  <isaacs>TooTallNate: does that python pty trick work on windows?
23:50:18  <DrPizza>IMO it needs to be a more explicit opt-in to non-universal behaviour
23:50:24  <TooTallNate>isaacs: i haven't tried yet
23:50:36  <isaacs>TooTallNate: i'd be surprised (and very curious!) if it does.
23:50:57  <piscisaureus__>isaacs: well, on windows we can also give the child process an arbitrary FD.
23:51:09  <piscisaureus__>isaacs: but in many cases the child process will just choke on it.
23:51:22  <DrPizza> fds are fundamentally a unix-ism too
23:51:30  <DrPizza>a unix-ism that the CRT makes a weak show of supporting
23:51:34  <DrPizza>but a unix-ism all the same
23:51:39  <isaacs>i don't want to get distracted right now on the specific issue of file descriptors.
23:51:48  <piscisaureus__>isaacs: +1
23:52:00  <isaacs>the point is, we need a nice clean rule about "This is how we handle unix-specific stuff in windows"
23:52:06  <isaacs>that can make the fd problem less of a problem.
23:52:16  <DrPizza>require('posix');
23:52:17  <piscisaureus__>DrPizza: on windows you have HANDLEs. These are very similar to FDs
23:52:24  <isaacs>maybe that's require('posix').createPty or some such
23:52:27  <isaacs>i dunno
23:52:56  <DrPizza>piscisaureus__: yes, in many ways, though there are lots of places where they differ
23:52:58  <isaacs>if we can hand off arbitrary handles to child procs, and abstract the fd/handle differences away from the javascript layer, then that could work really nicely.
23:53:04  <DrPizza>piscisaureus__: a handle isn't necessarily something read-writable
23:53:07  <DrPizza>it might merely be waitable
23:53:19  <DrPizza>whereas fds are always somewhat file-like
23:53:26  <TooTallNate>isaacs: i'll try python's pty on windows in a few. got a Goldeneye tourney to attend to first :p
23:53:30  <piscisaureus__>DrPizza: yup. child processes will always assume that they can WriteFile to it
23:53:30  <isaacs>nice :)
23:53:33  <isaacs>TooTallNate: good luck.
23:53:36  * mralephquit (Quit: Leaving.)
23:53:38  <TooTallNate>haha thanks
23:54:10  <isaacs>DrPizza: i don't want to copy the whole child_process API over to require('posix') just to support FD-passing, which is a very common thing to do on unix.
23:54:12  <DrPizza>piscisaureus__: I mean it might not matter for these purposes, since we can probably ensure that a mutex handle (or w/e) never gets passed to a child
23:54:15  <piscisaureus__>DrPizza: that won't work even for stuff that *is* writable, e.g. sockets and files and overlapped mode.
23:54:27  <DrPizza>well it will "work"
23:54:31  <DrPizza>it just might not do what you want!
23:54:40  <piscisaureus__>DrPizza: well, it will return ERROR_PENDING
23:54:43  <isaacs>failing crisply with ENOTSUP is way better than randomly-working undefined behavior.
23:55:03  <piscisaureus__>DrPizza: which most programs will just treatr as a real error and die
23:55:11  <DrPizza>ugh, probably true
23:55:11  <isaacs>i mean, how common is it to pass arbitrary file descriptors to child procs?
23:55:20  <isaacs>in windows, i mean
23:55:29  <DrPizza>never
23:55:30  <piscisaureus__>umm, node does it :-)
23:55:46  <isaacs>sure, but apart from our crazy unix programs that are ported over to windows :)
23:55:50  <DrPizza>I mean in regular windows programs, it's just not a standard paradigm
23:55:59  <DrPizza>I think it's the preserve of ported programs
23:55:59  <isaacs>how many windows devs have said to us "I need to pass fd's to child procs!"
23:56:01  <isaacs>none of them
23:56:06  <benvie>they're all "HANDLES" but isn't there internally to Windows different kinds of handles or different handle pointer maps or whatever for the different types?
23:56:15  <DrPizza>windows programs, if they want interop, they pass a pipe name on the command-line
23:56:21  <DrPizza>or use a well-known name
23:56:26  <isaacs>DrPizza: exactly
23:56:28  <piscisaureus__>isaacs: well, msft did when they were doing the fastcgi stuff for iisnode (which was subsequently canned)
23:56:32  * paddybyersquit (Quit: paddybyers)
23:56:41  <piscisaureus__>but "normal" windows devs don't, I agree
23:57:02  <isaacs>throwing ENOTSUP if you pass a socket FD to a child proc is probably fine on windows, then
23:57:08  <isaacs>on unix? this is *very* common.
23:57:13  <isaacs>the shell has syntax for it, even.
23:57:27  <piscisaureus__>isaacs: the windows shell has, too
23:57:37  <DrPizza>2&>1 works in cmd
23:57:40  <isaacs>there are established unix programs that node cannot interact with because it doesn't have this feature now.
23:57:56  <isaacs>DrPizza: right but does >&3 <&4 etc?
23:58:04  <benvie>they do actually
23:58:08  <isaacs>wow.
23:58:12  <DrPizza>I think they should
23:58:16  <benvie>some programs have different channels or whatever they call them
23:58:18  <DrPizza>it's just, people don't writ eprogrmas that use them
23:58:26  <piscisaureus__>DrPizza: node -e "process.stdin.writable=true;process.stdin.write('hi')" 0>&1
23:58:36  <piscisaureus__>&3 and &4 don't work
23:58:38  <piscisaureus__>just 0,1,2
23:58:39  <benvie>there's actually some whole things I'm not familiar with but I know it exists for those "alternate channels" or whatever they call it
23:58:46  <DrPizza>piscisaureus__: in CRT, or node specifically?
23:58:53  <benvie>usually they don't but they can if a program has some registered thing there
23:58:59  <DrPizza>oh I guess cmd doesn't know how to pass things to CRT
23:59:01  <DrPizza>(or does it?)
23:59:01  <piscisaureus__>no, cmd.exe doesn't parse 3>&1
23:59:13  <DrPizza>huh
23:59:24  <DrPizza>but CRT lets you pass more than 0, 1, 2, doesn't it?
23:59:37  <isaacs>also, keep in mind, ENOTSUP can mean "ENOTSUP(yet)"
23:59:44  <DrPizza>it's all a mess
23:59:55  <isaacs>like, "this isn't supported on your OS. sorry. we'll get around to making it work later."