00:00:09  <mikeal>ryah: we can assume IPv6 support right?
00:00:58  * dapquit (Quit: Leaving.)
00:01:18  * dapjoined
00:01:53  * dapquit (Client Quit)
00:03:14  <mikeal>review
00:03:15  <mikeal>https://github.com/mikeal/node/commit/a69b3f5e428e1cfdd58aaa3ecc8cb34118b2b5c4
00:10:53  <ryah>mikeal: no - xp doesn't have ipv6
00:11:11  <mikeal>fuckin XP
00:11:30  <mikeal>is there a way to check for XP?
00:11:36  <mikeal>or to check for IPv6 support?
00:12:17  * dapjoined
00:12:32  * dapquit (Client Quit)
00:13:40  <mikeal>cause we can't fix this issue unless we can bind to both v4 and v6 when v6 is available
00:14:43  <ryah>hm
00:14:56  <ryah>there must be some other way...
00:15:05  <mikeal>not really
00:15:36  <mikeal>also, we really do want to bind to both by default
00:15:47  <mikeal>but, just think about it
00:16:01  <mikeal>we don't control what address localhost resolves to now, because we're using the system resolver
00:16:10  <mikeal>which may or may not use v6 if v6 is available
00:16:21  <mikeal>and there is no way to find out until we do a dns resolution
00:16:25  <ryah>i think we might need to reorder the responses from getaddrinfo to return v4 ones first
00:16:33  <mikeal>which we don't do before binding for obvious reasons
00:16:50  <mikeal>then we're part of the problem :)
00:17:04  <mikeal>the operation system is trying to get us to do the right thing and default to v6 when available :)
00:17:07  <ryah>https://github.com/joyent/node/blob/58cb0fa639e7105de1b479a877dbbd492f59f3c2/lib/dns.js#L135
00:17:16  <ryah>^-- it would be interesting to see what addresses is
00:17:18  <ryah>when you get this error
00:17:29  <ryah>we're basically ignoring the rest of them
00:17:41  <ryah>can you stick a console.log in there?
00:17:55  <mikeal>sure
00:17:59  <piscisaureus>I think XP's GetAddrInfo wouldn't return IPv6 addresses
00:18:07  <piscisaureus>unless the v6 stack is there
00:18:19  <piscisaureus>We could use IPv6 by default
00:18:32  <piscisaureus>but we'd have to fix libuv to enable dualstack by default for tcp
00:18:36  <piscisaureus>which we currently dont
00:18:41  <ryah>https://github.com/joyent/node/blob/58cb0fa639e7105de1b479a877dbbd492f59f3c2/src/cares_wrap.cc#L633-653 <-- in this loop we should probably reorder
00:18:47  <ryah>to have ipv4 addreses first
00:19:12  * sh1mmerquit (Quit: sh1mmer)
00:19:41  <piscisaureus>Or in javascript
00:20:04  <ryah>piscisaureus: well.. that requires reparsing the strings to see what type they are
00:20:30  <ryah>which - of course - is not a big deal
00:21:29  <piscisaureus>ryah: I bet `is_v6 = (addr.indexOf(':') != -1) || addr.length > 12` would do
00:22:00  <piscisaureus>oh better even
00:22:13  <piscisaureus>`is_ipv6 = addr.indexOf(':') != -1
00:23:06  <mikeal>ryah: [ '::1', '', 'fe80::1' ]
00:23:27  <piscisaureus>I like dualstack too
00:23:32  <mikeal>i hate this
00:23:50  <mikeal>is there really no way to just check for v6 support?
00:24:09  <ryah>mikeal: process.features.ipv6
00:24:12  <ryah>but it doesn't work yet
00:24:17  <ryah>:)
00:24:22  <mikeal>hehe
00:24:25  <mikeal>when is it going to work?
00:24:29  <ryah>*shrug*
00:24:45  <mikeal>reordering seems like a nasty hack
00:24:46  <ryah>mikeal: just reorder based on AF_INET or AF_INET6 in that loop
00:25:22  <mikeal>i can do it just as easily in javascript
00:25:48  <piscisaureus>addresses.sort(function(a) { return a.indexOf(':') });
00:25:55  <mikeal>wait
00:26:08  <mikeal>where would you want to implement process.features.ipv6?
00:26:15  <mikeal>i should be able to add that
00:26:23  <mikeal>with just
00:26:33  <ryah>come on.. let's just do it in c
00:26:43  <piscisaureus>hehe
00:26:45  <mikeal>addresses.join('').indexOf(':')
00:26:50  <piscisaureus>3> javascript
00:27:07  <mikeal>i would much rather support v6 when the OS wants us to and not support it when it's not available
00:28:10  <piscisaureus>you'd need to add a libuv function I think
00:28:15  <piscisaureus>2 even
00:28:40  <mikeal>you don't like my "resolve localhost and see if it has a v6 address" hack :)
00:29:00  <piscisaureus>*shrug*
00:29:09  <piscisaureus>if it's reliable, then why not
00:29:14  <piscisaureus>but is it reliable
00:29:15  <piscisaureus>?
00:29:50  <mikeal>i just realized it won't work because it needs to be synchronous
00:30:07  <ryah>ipv6 is imaginary
00:30:15  <ryah>you know that, right?
00:30:32  <mikeal>if getaddrinfo doesn't return at least one v6 address then someone is trying to not use v6 even if they do have it
00:30:48  <ryah>http://www.google.com/intl/en/ipv6/statistics/ oh fuck almost 0.4% of the internet
00:30:50  <mikeal>it's real, they have a website :P
00:30:57  <ryah>man
00:31:17  <piscisaureus>probably ipv6 has a bigger market share than node
00:31:45  <mikeal>hahaha
00:31:57  <mikeal>solid argument
00:32:34  <mikeal>we should write a sync wrapper around cares and call it dont
00:32:38  <mikeal>dont.cares()
00:33:21  <mikeal>why do we have to support XP again?
00:33:41  <ryah>mikeal: https://gist.github.com/1314972
00:33:43  <ryah>mikeal: try that
00:34:41  <piscisaureus>mikeal: actually we don't have to support XP
00:34:54  <piscisaureus>mikeal: but node should just work for people that don't do IPv6
00:35:31  <mikeal>wait wait wait
00:35:35  <mikeal>this still isn't ideal
00:36:26  <mikeal>because if someone does listen(80) and they *do* have v6 and it defaults to v6 (but later has a v4 address), you will won't be able to open it in the browser or any other app that pulls the first result of getaddrinfo
00:37:45  <ryah>v6 is imaginary
00:37:55  <rmustacc>So you'd like to see it listen on all IPs resolved by that hostname?
00:38:12  <mikeal>it's real enough to be annoying
00:38:26  <ryah>well it's annoying me having to listen to this
00:38:27  <ryah>:)
00:38:42  <ryah>does the patch work or not?
00:38:53  <mikeal>ryah: that doesn't fix it
00:38:57  <piscisaureus>mikeal: most unices enable dualstack sockets by default so if you listen on ipv6 ipv4 will work too
00:39:24  <ryah>mikeal: what's that array look like with the fix?
00:39:30  <ryah>sorry - i should have tested it
00:39:34  <mikeal>the array is no longer printing
00:39:44  <mikeal>so i think it broken getting "addresses"
00:39:53  <ryah>meh
00:39:56  <rmustacc>piscisaureus: How does that work? How do they map the v6 address to the right corresponding v4?
00:40:43  <piscisaureus>rmustacc: the server sees an ipv6 address
00:41:05  <ryah>meine deutsche verwanten kommt gleisch und ich muss dieses sheiss presentation fertish machen
00:41:18  <mikeal>piscisaureus: that's not how it's working for us on Mac OS X
00:41:18  <piscisaureus>rmustacc: it has the form ::ffff:
00:41:46  <rmustacc>piscisaureus: Are you talking about 6->4 drivers?
00:41:49  <mikeal>piscisaureus: that's not the issue, we *default* to listening on
00:42:06  <mikeal>if localhost resolves to :::1 then we get ECONNREFUSED
00:42:22  <mikeal>when trying to make a client connection to localhost on the default .listen()
00:42:24  <piscisaureus>ach so
00:42:45  <piscisaureus>Well, I guess we should just have a synchronous getaddrinfo binding then :-)
00:42:53  <ryah>stab
00:42:55  <piscisaureus>I mean, it's local anyway
00:42:56  <mikeal>so, my fix was to default to listening on :::*
00:43:22  <mikeal>which listens on all v4 and v6, but for obvious reasons this will break if v6 isn't enabled
00:44:14  <piscisaureus>yes, then process.features.ipv6 + use dualstack would probably work
00:44:36  <mikeal>right
00:44:46  <mikeal>when process.features.ipv6 is in :)
00:45:09  <mikeal>we need a fix before the release, this breaks all the tests I have in 3 libraries
00:46:15  <piscisaureus>rmustacc: see IPV6_V6ONLY @ http://www.kernel.org/doc/man-pages/online/pages/man7/ipv6.7.html
00:48:01  <piscisaureus>mikeal: add it to libuv :-)
00:48:01  <piscisaureus>int uv_have_ipv6() { return uv_allow_ipv6; } <-- windows, add to src/win/winsock.c
00:48:01  <piscisaureus>int uv_have_ipv6() { return 1; } <-- unix, add somewhere
00:48:03  <mikeal>ryah: in your future node operating system IPv6 will truly be imaginary ;)
00:48:33  <rmustacc>Well, you may not actually have IPv6...
00:48:50  <mikeal>i haven't messed with libuv direclty yet at all, and I dont have a lot of time to work on this
00:49:00  <rmustacc>Some setups don't have IPv6 stacks plumbed.
00:49:15  <piscisaureus>rmustacc: yes, the unix implementation was only a stub :-)
00:49:21  <piscisaureus>as you might have guessed
00:49:24  <mikeal>honestly, i think getaddrinfoSync('localhost').join('').indexOf(':') would be acceptable
00:49:26  <rmustacc>Ah, gotcha.
00:49:59  <piscisaureus>rmustacc: on windows we test ipv6 by trying to create a socket. But we do it on libuv initialization since we need to know anyway
00:50:15  <rmustacc>Yeah, makes sense.
00:50:23  <rmustacc>Unix would probably just want to do the same thing.
00:57:29  <mikeal>updated for the future
00:57:29  <mikeal>https://github.com/mikeal/node/commit/493cbbd8572c50297a1e24d8ee309936747e5cba
00:58:08  <mikeal>actually, HEAD has process.features.ipv6 for me on Mac
00:59:09  <mikeal>where does process.features.ipv6 supposedly not work?
00:59:14  <piscisaureus>it's always 1
00:59:18  <piscisaureus>er, true
00:59:31  <piscisaureus>mikeal: look in node.cc @@ GetFeatures
00:59:50  <mikeal>oh i see
01:02:22  * AvianFluquit (Quit: Leaving)
01:05:14  <bnoordhuis>rmustacc: ping
01:06:50  <ryah>pquerna: have you seen http://nacl.cace-project.eu/
01:07:07  <pquerna>no
01:07:08  <pquerna>hot.
01:07:15  <rmustacc>bnoordhuis: pong
01:07:19  <ryah>pquerna: djb
01:07:44  <bnoordhuis>rmustacc: what FILE_* flags ought to work with port_associate(PORT_SOURCE_FILE)?
01:07:56  <pquerna>doesn't actually do TLS though
01:08:09  <bnoordhuis>it only seems to support FILE_ACCESS | FILE_MODIFIED | FILE_ATTRIB
01:08:15  <bnoordhuis>everything else raises EINVAL
01:08:18  <ryah>pquerna: nope - but sounds like an ideal base for selene
01:08:19  <pquerna>hrm, yeah.
01:08:39  <pquerna>yes, looks like a nice dep
01:08:42  <rmustacc>bnoordhuis: I'm not sure. I've never used it really.
01:09:07  <bnoordhuis>rmustacc: okay, np - i'll dig through the kernel
01:10:00  <ryah>djb has the nicest c code
01:10:07  <rmustacc>bnoordhuis: What else do you expect?
01:10:35  <bnoordhuis>rmustacc: at the very least FILE_DELETE | FILE_RENAME_TO | FILE_RENAME_FROM
01:10:54  <rmustacc>From looking at the header file, those may be applied automatically.
01:11:19  <bnoordhuis>yeah, i suppose so
01:13:17  <rmustacc>bnoordhuis: I see where that's occuring.
01:13:21  <rmustacc>Let me take a look.
01:13:31  <rmustacc>I think I can verify those'll get fired no matter what.
01:13:52  <piscisaureus>bnoordhuis: ryah: http://people.gnome.org/~veillard/gamin/
01:14:09  <piscisaureus>maybe has some pointers for proper kqueue suport
01:14:13  <piscisaureus>*support
01:16:38  <bnoordhuis>rmustacc: you were right
01:16:52  <bnoordhuis>the other flags get set when the event is delivered to user land
01:17:16  <rmustacc>Potentially.
01:17:23  <rmustacc>They can also force the return without one of them being set.
01:17:41  * isaacsquit (Read error: Connection reset by peer)
01:17:42  <rmustacc>i.e. if FILE_EXCEPTION comes, it probably doesn't wait for one of the others.
01:17:54  * isaacsjoined
01:18:32  * isaacsquit (Client Quit)
01:19:09  <piscisaureus>bnoordhuis: also, for mac, you could use /dev/fsevents
01:19:18  <bnoordhuis>rmustacc: yes, but FILE_EXCEPTION is one of the FILE_* flags or MOUNTED|UNMOUNTED
01:19:26  <bnoordhuis>piscisaureus: i think fsevents is lion only
01:19:31  <piscisaureus>hmm
01:19:33  <piscisaureus>meh
01:19:37  <bnoordhuis>i did look at fam a while ago btw
01:19:54  <rmustacc>I thoguht fsevents was there whole tree thing?
01:20:04  <rmustacc>Or is that a different thing.
01:20:28  <bnoordhuis>rmustacc: yes, whole tree monitoring
01:20:47  <rmustacc>When I looked at it, it didn't give you what you wanted I thought.
01:20:53  <rmustacc>It just said which directory changed.
01:20:59  <rmustacc>But I never played around with it.
01:20:59  <piscisaureus>that's true
01:21:30  <bnoordhuis>yes, it doesn't, it only tells you that something changed in the watched directory
01:21:40  <bnoordhuis>oh, i was wrong - it's been there since leopard
01:23:55  <mikeal>wow
01:24:07  <mikeal>this actually fixed a ton of core tests for me
01:26:20  <rmustacc>Out for a bit.
01:26:32  <rmustacc>bnoordhuis: If you find something else odd with the port stuff, feel free to shoot me some mail.
01:26:46  <bnoordhuis>rmustacc: cool, will do - thanks
01:27:02  <rmustacc>Catch you folks later.
01:30:03  * brsonquit (Ping timeout: 258 seconds)
01:33:28  <bnoordhuis>igorzi: you finally got your commit bit set? congrats!
01:34:46  <piscisaureus>\o/
01:38:36  <piscisaureus>without any hard feelings, we can also take away Henry's commit bit on libuv
01:42:25  <mikeal>yeah, this branch fixes 57 failing tests on my Mac
01:54:37  * sh1mmerjoined
02:16:24  * ericktjoined
02:31:43  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
03:19:42  * dwwwjoined
03:38:22  <mikeal>ok, new bug
03:50:55  * dwwwquit (Quit: Leaving.)
03:52:00  <CIA-53>libuv: Ben Noordhuis master * r3e4af53 / (include/uv-private/uv-unix.h src/unix/sunos.c): sunos: implement file watcher API - http://git.io/fGxA9Q
03:52:20  <bnoordhuis>^ fails one test, igorzi we should discuss this tomorrow
05:01:09  <CIA-53>node: Ben Noordhuis master * rd7dff34 / tools/gyp/pylib/gyp/generator/make.py :
05:01:09  <CIA-53>node: gyp: support older bash versions
05:01:09  <CIA-53>node: Older bash versions in `sh -c` mode don't parse `export FOO=42` constructs,
05:01:09  <CIA-53>node: they bail out with a "FOO is not an identifier" error message.
05:01:09  <CIA-53>node: This was fixed somewhere between bash 4.1.0 and 4.1.5 but let's support the
05:01:10  <CIA-53>node: older versions anyway. - http://git.io/E4z28Q
05:04:44  * ericktquit (Quit: erickt)
05:12:58  <CIA-53>node: Ben Noordhuis master * r15628f6 / src/platform_sunos.cc :
05:12:58  <CIA-53>node: sunos: don't use exceptions
05:12:58  <CIA-53>node: Don't use exceptions in platform functions. Fix a resource leak
05:12:58  <CIA-53>node: (leaked kstat handle) while we're at it. - http://git.io/RcBeQg
05:12:58  <CIA-53>node: Ben Noordhuis master * r13871fa / node.gyp : build: fix sunos gyp build, include platform file - http://git.io/fGytnA
05:42:15  * dwww1joined
05:42:20  <dwww1>Hi!
05:42:35  <dwww1>Please, explain what the following error means?
05:42:36  <dwww1>src/unix/stream.c:561: uv__read: Assertion `!(0 + ((ev_watcher *)(void *)(&stream->read_watcher))->active)' failed.
05:49:02  <bnoordhuis>dwww1: a read error happened, the user callback was called but it didn't uv_close() the handle
05:49:27  <dwww1>aha
05:49:30  <dwww1>thanks
05:49:51  <igorzi>bnoordhuis: heh.. i don't need to bother you with closing my node issues anymore :)
05:51:11  <rmustacc>bnoordhuis: The comment r.e. sh -c mode not doing some stuff was that on SunOS?
05:51:18  <bnoordhuis>rmustacc: yes
05:51:52  <rmustacc>bnoordhuis: sh isn't bash there...
05:52:09  <rmustacc>It's ksh93.
05:52:30  <bnoordhuis>ah, damn
05:52:40  <rmustacc>Which may be why bashism in sh -c didn't work.
05:53:13  <rmustacc>Well, I dunno if that's an shism, bashism, or something else.
05:53:24  <rmustacc>But that's probably why you saw that.
05:53:29  <bnoordhuis>probably a bourne-ism
05:53:45  <bnoordhuis>ksh... i thought we all stopped using that in 1997...
05:54:05  <rmustacc>Heh, I know some folks who still use it on Linux.
05:54:25  <rmustacc>But, yeah, it changed to ksh93 from ksh89 only a few years back.
05:54:43  <rmustacc>May just want to call bash -c directly.
05:54:52  <rmustacc>Instead of sh -c.
05:54:56  <bnoordhuis>that won't (always) work
05:55:04  <rmustacc>Because you may not have bash?
05:55:08  <bnoordhuis>it could be e.g. dash instead of bash
05:55:20  <rmustacc>Right.
05:55:36  <rmustacc>Well, if the thing actually is valid in old sh, then that's a bug.
05:56:08  <rmustacc>Seems like it should be, but I don't really know what the differences are.
05:56:53  <bnoordhuis>i think it's bourne-ish
05:57:02  <bnoordhuis>csh uses setenv, for example
05:57:24  <bnoordhuis>then again, csh tries very hard to be different wherever possible...
05:57:51  <rmustacc>Yeah, it's definitely bourne-ish. Just not sure if it was original sh, ksh, or bash.
05:59:26  <ryah>groan
05:59:46  <ryah>creating slides is the most agonizing task i have :(
06:07:31  <dwww1>bnoordhuis: i get error code 104 (unlisted in uv-common.c) just before watcher assertion fails
06:08:29  <dwww1>it somehow bound to ECONNRESET on reading stream...
06:14:43  <dwww1>i accomodated, but what is errno == 104?
06:20:10  <bnoordhuis>dwww1: probably ECONNRESET
06:20:23  <bnoordhuis>but you should look in your system's header files if you want to be sure
06:21:21  <ryah>grep 104 /usr/include/sys/errno.h
06:21:26  <dwww1>sure
06:21:54  <dwww1>but we do have ECONNRESET in uv-common.c
06:22:08  <bnoordhuis>yes
06:28:12  <dwww1>ECONNRESET == 104 in my errno.h
06:28:49  <dwww1>ok
06:55:29  * isaacsjoined
07:04:01  <bnoordhuis>[04:29|% 100|+ 298|- 7]: Done <- `make test` on sunos, not too bad
07:35:58  * isaacsquit (Ping timeout: 252 seconds)
07:41:27  * isaacsjoined
07:42:37  <dwww1>does uv queue data from write() calls? or should authors implement reliable write() on their own?
07:43:55  <dwww1>e.g. write(foo_bigger_than_TCP_SND_BUFFER) to a TCP socket can return EBUSY et al., in which case transmission should be repeated
07:51:08  * isaacs_joined
07:51:17  * isaacsquit (Read error: Connection reset by peer)
07:51:17  * isaacs_changed nick to isaacs
07:51:45  <ryah>bnoordhuis++
07:52:13  <ryah>dwww1: libuv has write queues
07:52:30  <ryah>dwww1: hence the callback
07:52:31  <dwww1>how to use them?
07:52:54  <ryah>you dont have a choice - they are being used
07:53:22  <ryah>just don't flood your memory with buffered writes :)
07:53:35  <dwww1>so, i should always pass callback to write() and be happy?
07:54:14  <dwww1>specifying callback means write() should perform actual writing.
07:54:17  <dwww1>^^^?
07:54:48  <dwww1>i just see in node.js the pattern to treat write() as "sync" -- they do res.writeHead('...
07:54:59  <dwww1>'); res.end('bar')
07:55:51  <dwww1>as if they were sure by the time res.end() is called res.writeHead() already successfully transmitted the data
07:58:41  * isaacsquit (Ping timeout: 252 seconds)
07:59:35  * isaacsjoined
08:06:40  * dwww1quit (Remote host closed the connection)
08:37:53  * dwwwjoined
09:07:02  <indutny>dwww: if res.write() returns false
09:07:08  <indutny>dwww: you should wait for 'drain' event
09:07:19  <indutny>but you can still write
09:07:32  <indutny>and all your data will be buffered in memory until it'll be drained
09:11:54  * piscisaureusjoined
09:39:04  * isaacsquit (Quit: isaacs)
09:46:17  <dwww>i see
10:41:58  * piscisaureus_joined
12:08:28  <piscisaureus_>any gyp experts here?
13:19:49  * piscisaureus_quit (Ping timeout: 240 seconds)
13:21:31  * piscisaureus__joined
13:36:48  * dwww1joined
13:59:41  * ericktjoined
14:10:56  <bnoordhuis>piscisaureus__: you had a gyp question?
14:11:13  <piscisaureus__>bnoordhuis: yes but I fixed it already
14:11:37  <piscisaureus__>bnoordhuis: but I don't really understand what the purpose of the common.gypi / node.gyp separation is
14:12:02  <bnoordhuis>piscisaureus__: i think common.gypi is a base template we stole from v8 / chromium
14:12:16  <piscisaureus__>bnoordhuis: apparently common.gypi lets you define build settings for dependencies or something?
14:12:43  <piscisaureus__>at least, I was unable to set a particular flag in node.gyp, but setting it in common.gypi was fine
14:12:48  <piscisaureus__>this is all very obscure
14:12:57  <bnoordhuis>piscisaureus__: what flag and where?
14:13:27  <piscisaureus__>bnoordhuis: I wanted to define BUILDING_V8_SHARED
14:13:39  <piscisaureus__>when building v8 *and* when building node
14:13:39  <bnoordhuis>common.gypi sets target defaults btw, node.gyp does that on a per-target basis
14:14:42  <bnoordhuis>piscisaureus__: the magic sauce is 'target_defaults', that's inherited by all targets
14:15:26  <piscisaureus__>'target_defaults': { 'defines': ['FOO', 'BAR'] } <-- that works?
14:15:56  <bnoordhuis>yes
14:16:06  <piscisaureus__>bnoordhuis: in node.gyp?
14:16:43  <bnoordhuis>piscisaureus__: stick it in common.gypi
14:17:13  <piscisaureus__>bnoordhuis: also, what do we want to export from node.exe to libraries?
14:17:19  <piscisaureus__>bnoordhuis: uv and v8, i assume
14:17:24  <piscisaureus__>c-ares, openssl too?
14:17:35  <bnoordhuis>yes
14:17:36  <piscisaureus__>and some node functions I assume
14:18:08  <piscisaureus__>bnoordhuis: openssl too?
14:18:20  <piscisaureus__>bnoordhuis: http_parser? <-- too much work for now btw
14:18:20  <bnoordhuis>for windows apps? i should think so
14:19:43  <piscisaureus__>The risk is that the node binary gets too big
14:19:59  <piscisaureus__>Right now the linker will scrap all openssl crap that we don't use
14:20:13  <piscisaureus__>but if we mark it as export then that wont work
14:20:25  <dwww1>Does/Will libuv support writev() syscall?
14:21:10  <piscisaureus__>it does
14:21:22  <piscisaureus__>except for files/pipes on windows atm
14:21:31  <piscisaureus__>that will be fixed some day
14:21:33  <dwww1>in particular, web is all about strings, HTTP/1.1 proclaims chunked encoding, and doing chunking requires 3 calls or two concats
14:21:41  <dwww1>oh
14:21:42  <dwww1>cool
14:21:57  <piscisaureus__>dwww1: look at the uv_write signature
14:22:03  <dwww1>aha
14:22:04  <bnoordhuis>piscisaureus__: how much overhead is it (exporting openssl)?
14:22:07  <dwww1>thanks
14:22:12  <piscisaureus__>hmm, not sure yet
14:22:27  <piscisaureus__>bnoordhuis: ^that was for you
14:22:33  <bnoordhuis>i understood that :)
14:22:43  <piscisaureus__>good
14:22:52  <piscisaureus__>bnoordhuis: ^- that was for you
14:23:11  <bnoordhuis>ho ho ho
14:23:30  <piscisaureus__>http://en.wikipedia.org/wiki/Ho_ho_ho
14:23:36  <piscisaureus__>^- for you, bnoordhuis
14:23:52  <bnoordhuis>what's the alternative if people want to use openssl? have them bundle openssl themselves?
14:24:08  <piscisaureus__>link it static to their lib
14:24:10  <piscisaureus__>i guess
14:24:14  <piscisaureus__>or ship a dll
14:24:52  <bnoordhuis>seems like it's good enough for now
14:25:32  * dwwwquit (Remote host closed the connection)
14:26:17  <bnoordhuis>i suspect exporting openssl makes the binary about 2 MB bigger?
14:27:50  <indutny>bnoordhuis: lets do it :D
14:27:51  <indutny>anyway
14:41:13  <bnoordhuis>piscisaureus__: test/pummel/test-https-large-response.js <- passing or failing on windows?
14:41:49  <piscisaureus__>bnoordhuis: used to be passing, but requires Eric's string write patch to not time out
14:41:54  <piscisaureus__>bnoordhuis: don't know about now
14:42:04  <bnoordhuis>piscisaureus__: oh, okay
14:42:41  <piscisaureus__>yes, passes. just tried
14:50:53  <bnoordhuis>okay, thanks
15:12:30  <CIA-53>libuv: Ben Noordhuis master * r339a1ad / test/test-stdio-over-pipes.c : test: fix warning: implicit declaration of function ‘memcmp’ - http://git.io/O3Stqw
15:26:14  <CIA-53>node: koichik master * r0e8a55d / (lib/tls.js test/simple/test-tls-pause-close.js):
15:26:14  <CIA-53>node: tls: does not emit 'end' from EncryptedStream
15:26:14  <CIA-53>node: de09168 and 4cdf9d4 breaks `test/pummel/test-https-large-response.js`.
15:26:14  <CIA-53>node: It is never finished.
15:26:14  <CIA-53>node: Fixes #1936. - http://git.io/M77WDA
15:26:49  <piscisaureus__>bnoordhuis: kan ik je ff bellen?
15:27:01  <bnoordhuis>piscisaureus__: ik denk dat jij dat wel kan
15:27:03  <bnoordhuis>skype?
15:27:24  <piscisaureus__>ja, momentje dan pak ik ff een headset
15:27:58  <bnoordhuis>let me turn off dj paul elstak
15:35:02  <CIA-53>node: koichik master * rcbcaeed / (3 files in 3 dirs):
15:35:02  <CIA-53>node: tls: add address(), remoteAddress/remotePort
15:35:02  <CIA-53>node: Fixes #758.
15:35:02  <CIA-53>node: Fixes #1055. - http://git.io/fKCraA
16:02:20  * dapjoined
16:10:02  * dapquit (Quit: Leaving.)
16:10:24  * ericktquit (Quit: erickt)
16:13:51  * dapjoined
16:16:58  * dapquit (Client Quit)
16:20:33  * isaacsjoined
16:21:28  * dapjoined
16:32:13  * sh1mmerquit (Quit: sh1mmer)
16:40:48  * CoverSlidequit (Read error: Connection reset by peer)
16:49:38  * CoverSlidejoined
16:50:02  * CoverSlidequit (Client Quit)
16:50:06  * CoverSlidejoined
16:50:51  * CoverSlidequit (Client Quit)
17:03:17  * CoverSlidejoined
17:08:03  * brsonjoined
17:18:23  * AvianFlujoined
17:24:35  * ericktjoined
17:25:56  * sh1mmerjoined
17:27:36  <ryah>erickt: i think i changed my mind about udp streams
17:27:58  <ryah>erickt: it will really simplify the interface to unify them all...
17:28:01  <erickt>oh yeah? what changed your mind?
17:28:18  <erickt>that's what I thought :)
17:29:11  <ryah>there are some issue to be worked out though... like how to get the address of a packet
17:29:17  <ryah>when reading
17:29:53  <erickt>so one problem someone mentioned is that sockaddr_storage is quite big, but it wouldn't be that difficult to provide uv_write4_t, uv_write6_t, and etc
17:30:59  <erickt>I was thinking about exposing uv_read and uv_readfrom, so the user chooses if they want the return address. would that work?
17:33:36  <erickt>I'll see if I can revive my fork that started implementing this if you want
17:35:06  <ryah>we can maybe provide our own sockaddr_storage that didn't support AF_UNIX
17:35:10  <ryah>would be quite small
17:35:38  <ryah>relatively small...
17:36:03  <ryah>uv_write4_t and uv_write6_t is better, i think
17:41:43  * pieternjoined
17:50:28  <bnoordhuis>^ bad idea >:(
17:50:35  <bnoordhuis>call in ten minutes?
17:52:49  <ryah>yes
18:01:50  <CIA-53>node: Zachary Scott master * r7fb8c7c / doc/api/appendix_1.markdown : docs: update socket.io url - http://git.io/rqXrNQ
18:01:51  <CIA-53>node: Zachary Scott master * r3961b5a / AUTHORS : docs: update email address - http://git.io/9VUnSg
18:06:04  * piscisaureus__quit (Quit: ~ Trillian Astra - www.trillian.im ~)
18:06:19  * piscisaureus__joined
18:06:25  * piscisaureus__quit (Client Quit)
18:06:33  * piscisaureus__joined
18:19:26  <igorzi>https://gist.github.com/1314430
18:19:44  <igorzi>piscisaureus__: --^
18:27:14  <ryah>igorzi: man. you need to upgrade you skype :)
18:29:00  <piscisaureus__>igorzi: thnx
18:29:11  <igorzi>ryah: yeah :) one of these days i need to attach a debugger to it and see what's going on..
18:29:20  <ryah>igorzi: sorry we're done now. isaac's update was that tar is almost working now - he's working out some header issues - should have unzip working today or tomorrow.
18:29:48  <ryah>*untar
18:30:24  <ryah>bnoordhuis: have you noticed the gyp builds make v8 compile twice?
18:30:27  <ryah>it's so annoying
18:30:47  <bnoordhuis>yes, it does and it is
18:31:02  <bnoordhuis>i think gyp thinks it's cross-compiling when it isn't
18:31:21  <ryah>yes
18:33:29  <piscisaureus__>bnoordhuis: doesn't that have to do with the #host specification in node.gyp?
18:33:36  <piscisaureus__>(building js2c)
18:33:44  * isaacsquit (Quit: isaacs)
18:33:50  <bnoordhuis>piscisaureus__: it may have something to do with it
18:34:00  <piscisaureus__>bnoordhuis: prolly should be #target or something
18:36:40  <CIA-53>node: Ryan Dahl master * rb3ddb89 / (node.gyp src/node.cc wscript): Don't compile in node_dtrace.cc when not supported - http://git.io/1AwqyA
18:37:46  <rmustacc>ryah: I was just looking at your comment about why does the file get generated into src and not somewhere else.
18:37:56  <rmustacc>It's probably because you're not passing an output flag that's necessary for dtrace
18:38:55  <igorzi>bnoordhuis: you want to discuss the file watcher?
18:38:58  <piscisaureus__>okay. train time. ttyl.
18:39:03  <CIA-53>node: Nathan Rajlich master * rb8f3e18 / lib/util.js :
18:39:03  <CIA-53>node: Export the type checking functions from `util.js`.
18:39:03  <CIA-53>node: As per discussion at:
18:39:03  <CIA-53>node: http://groups.google.com/group/nodejs-dev/browse_thread/thread/b08970166e4670cf - http://git.io/9q6mVw
18:39:03  <CIA-53>node: Nathan Rajlich master * ra6a04fb / test/simple/test-util.js : Add test case for the util.js type checking functions. - http://git.io/0iHiZQ
18:39:04  <CIA-53>node: Nathan Rajlich master * r3524f41 / doc/api/util.markdown : Add docs for the type checking functions in `util.js`. - http://git.io/WjsQxg
18:39:08  <bnoordhuis>igorzi: sure, let me look up what the problem was again
18:40:05  <bnoordhuis>igorzi: https://github.com/joyent/libuv/blob/339a1ad252a0f2615e578e2971e0ba4b798b9eea/test/test-fs-event.c#L87
18:40:39  <bnoordhuis>so the way i see it, the fs_event_watch_dir test creates a directory watch_dir
18:40:56  <bnoordhuis>then creates a file watch_dir/file1
18:41:10  <bnoordhuis>then expects a UV_RENAME event
18:41:17  <igorzi>right
18:41:34  <bnoordhuis>that test is passing on linux and the bsds btw
18:42:02  <bnoordhuis>but i don't understand why it should be UV_RENAME
18:42:13  <bnoordhuis>the way sunos reports it, it's a change event
18:42:34  <bnoordhuis>i suppose my question is: can you explain why it's a UV_RENAME?
18:42:49  <igorzi>when this api was conceived, i think we agreed that new file -> UV_RENAME
18:44:03  <igorzi>let me see if i can find that irc log
18:44:48  <bnoordhuis>igorzi: i'll take it on good faith :)
18:45:39  <bnoordhuis>it's kind of unfortunate, sunos doesn't tell you what changed so you don't know there's a new file
18:45:42  <bnoordhuis>but i'll see what i can do
18:45:48  * dwww1part
18:48:24  <igorzi>bnoordhuis: aha.. found it. http://piscisaureus.no.de/log/2011-09-13. see 22:29:42
18:48:50  <igorzi>22:29:42 <ryah> how about condensing the fs events into two events: RENAME, ATTRIBUTE_CHANGE
18:48:51  <igorzi>22:29:48 <ryah> you watch a directory (no subdirectories)
18:48:56  <igorzi>22:29:56 <ryah> get rename and attribute_change events
18:49:00  <igorzi>22:30:11 <ryah> delete = rename
18:49:04  <igorzi>22:30:37 <ryah> create = rename too
18:49:32  <bnoordhuis>yep, found it
19:09:55  <bnoordhuis>okay, i've lots of test failing with `Error: connect ECONNREFUSED` because the server binds to an ipv6 address
19:11:11  * isaacsjoined
19:28:37  <CIA-53>node: Ryan Dahl master * r194511f / src/cares_wrap.cc : Return IPv4 addresses before IPv6 addresses from getaddrinfo - http://git.io/-Lgrcw
19:30:46  <ryah>bnoordhuis: --^
19:33:27  <bnoordhuis>much better
19:36:34  * piscisaureus__quit (Quit: ~ Trillian Astra - www.trillian.im ~)
19:39:25  <CIA-53>node: Nathan Rajlich master * r2dbb470 / lib/util.js : (log message trimmed)
19:39:26  <CIA-53>node: Don't use `instanceof` in lib/util.js "is" checks.
19:39:26  <CIA-53>node: While using `instanceof`, these functions could easily be faked with something
19:39:26  <CIA-53>node: like: Object.create(Date.prototype)
19:39:26  <CIA-53>node: So let's just not use it at all. A little slower, but these functions are only
19:39:26  <CIA-53>node: used in the REPL / for debugging so it's OK.
19:39:27  <CIA-53>node: Fixes #1941.
19:39:27  <CIA-53>node: Nathan Rajlich master * rd4379fc / (3 files):
19:39:28  <CIA-53>node: Add test case for #1941.
19:39:28  <CIA-53>node: Add test for the false-positives from #1942.
19:39:29  <CIA-53>node: Fix test-sys.js. - http://git.io/Ub9UDQ
19:41:50  <igorzi>bnoordhuis ryah: on unix, doing multiple uv_listen calls (on the same tcp handle) doesn't return EALREADY. is that by design?
19:42:28  <bnoordhuis>igorzi: that's how listen(2) works
19:43:49  <igorzi>bnoordhuis: on windows, there's code in uv_listen that won't even try to do listen(), and just fails with EALREADY
19:44:04  <igorzi>piscisaureus__: --^
19:48:51  <igorzi>bnoordhuis: piscisaureus__: on windows, multiple listen() calls succeeds too. so we need to agree to do the same thing in libuv.
19:49:38  <bnoordhuis>igorzi: let's not raise an error, easier
19:50:24  <igorzi>bnoordhuis: that sounds good to me.. but let's wait to hear from piscisaureus__. there must be a reason why it's there..
19:59:16  * bnoordhuisis back in a couple of hours
20:03:49  * bnoordhuisquit (Ping timeout: 258 seconds)
20:04:15  <CIA-53>node: Nathan Rajlich master * rebefe77 / lib/util.js : (log message trimmed)
20:04:15  <CIA-53>node: More bulletproof `util.inspect()` function.
20:04:15  <CIA-53>node: Use the *real* versions of the Date and RegExp functions, from the
20:04:15  <CIA-53>node: prototype. This defends against code like:
20:04:15  <CIA-53>node: var d = new Date()
20:04:16  <CIA-53>node: d.toUTCString = null
20:04:16  <CIA-53>node: util.inspect(d)
20:04:17  <CIA-53>node: Nathan Rajlich master * r4fb2ac5 / test/simple/test-util-inspect.js : Add test cases for #1944. - http://git.io/9Q5Kzw
20:25:08  * piscisaureus_joined
20:25:34  <piscisaureus_>igorzi: uv_listen does not need to return UV_EALREADY
20:25:41  <piscisaureus_>that is very old, go ahead and change it
20:28:45  <igorzi>piscisaureus_: k, thx
20:52:09  <CIA-53>node: Ryan Dahl master * rc5d5401 / (4 files in 3 dirs):
20:52:09  <CIA-53>node: node cluster is now a module instead of CLI interface
20:52:09  <CIA-53>node: This is to make room for master process plugins instead of adding CLI
20:52:09  <CIA-53>node: options as proposed in #1879. - http://git.io/Dk_pag
20:57:23  <CIA-53>libuv: Igor Zinkovsky master * r314d0ee / (4 files in 3 dirs): windows: don't fail uv_listen with UV_EALREADY if already listening. fixes #227. - http://git.io/h3rKBQ
21:11:21  * piscisaureus_quit (Ping timeout: 255 seconds)
21:22:18  * mikealquit (Quit: Leaving.)
21:40:54  * wankdankerjoined
21:50:38  <erickt>ryah: did you find out what bnoordhuis said was a bad idea regarding merging the tcp and udp code?
22:24:34  * AvianFluquit (Quit: Leaving)
22:45:52  * AvianFlujoined
22:51:06  <wankdanker>is anyone here working on or have special interest in the udp code of uv?
22:57:07  * mikealjoined
22:59:25  * piscisaureus_joined
23:21:01  <ryah>hmm
23:21:21  <ryah>i want to run a few benchmarks on the msft cluster...
23:21:27  <ryah>is it difficult?
23:22:24  <ryah>oh nevermind - i found the email
23:22:38  * AvianFluquit (Ping timeout: 260 seconds)
23:36:59  * AvianFlujoined
23:37:32  * piscisaureus_quit (Ping timeout: 258 seconds)
23:42:28  <CIA-53>node: Tj Holowaychuk master * r528c285 / (doc/api/cluster.markdown lib/cluster.js):
23:42:28  <CIA-53>node: cluster: Add some docs, improve cluster.isWorker()
23:42:28  <CIA-53>node: Fixes #1949. - http://git.io/XrbjJw
23:51:34  * mikealquit (Quit: Leaving.)
23:52:27  * sh1mmerquit (Quit: sh1mmer)
23:54:32  * mikealjoined