Ryan Dahl
c970968ee6
better option parsing for socket.write()
2010-12-15 15:15:27 -08:00
Ryan Dahl
92789b16e5
Fix global leaks
2010-12-04 16:36:21 -08:00
Ryan Dahl
e232f6e735
more lint
2010-12-01 20:28:28 -08:00
Ryan Dahl
ec1589875c
Stop watcher before calling .set() in Stream.prototype.resume
2010-12-01 12:52:34 -08:00
Ryan Dahl
a6f6532dfb
Fix test-securepair-server
2010-11-23 18:30:52 -08:00
Ryan Dahl
2320497992
Revert "Merge branch 'writev'"
...
This reverts commit cd9515efd9
, reversing
changes made to df46c8e698
.
Too slow. Needs more work.
2010-11-20 20:55:15 -08:00
Ryan Dahl
1f18648394
Fix typo
2010-11-18 16:47:38 -08:00
Ryan Dahl
2ba3c10d62
Only try to flush big buffers once
2010-11-18 16:47:38 -08:00
Ryan Dahl
849792e46b
Add todo about test-pipe.js and throwing on resume()
2010-11-18 16:47:38 -08:00
Ryan Dahl
544877d12e
Fix socket.end() problem on non-empty queue
2010-11-18 16:47:38 -08:00
Ryan Dahl
3884b4185a
Small clean ups
2010-11-18 16:47:38 -08:00
Ryan Dahl
02039c9b53
'connect' event may disconnect socket
2010-11-18 16:47:38 -08:00
Ryan Dahl
fa556a1425
Add callback to socket.write(), fix test-sendfds
2010-11-18 16:47:38 -08:00
Ryan Dahl
a6d8425382
make sure unix sockets are tagged correctly
2010-11-18 16:47:38 -08:00
Ryan Dahl
5d6a03c9fe
Don't append buckets of zero length
2010-11-18 16:47:38 -08:00
Ryan Dahl
10ff559ec3
Add IOWatcher.flush()
...
To be called if sockets get too much data. This is to force a flush before
the tick ends.
2010-11-18 16:47:37 -08:00
Ryan Dahl
7c3c5c6861
Maintain queueSize for each socket
2010-11-18 16:47:37 -08:00
Ryan Dahl
5a84461e46
Also do ondrain callback for socket (needed by http)
2010-11-18 16:47:37 -08:00
Ryan Dahl
e1250a3333
Reset _eof on socket reuse
2010-11-18 16:47:37 -08:00
Ryan Dahl
5ba0be6166
Don't send null data segments
2010-11-18 16:47:37 -08:00
Ryan Dahl
dcc547d798
Dumper net.js integration
2010-11-18 16:47:37 -08:00
Ryan Dahl
df46c8e698
Rip out the old TLS implementation
2010-11-18 16:46:37 -08:00
Ryan Dahl
cf05257fb7
Test for server.listen() more carefully, fix bug
2010-11-16 15:33:21 -08:00
Ryan Dahl
4144024e6b
Test and fix for self-assigned port from net.Server
2010-11-15 20:22:54 -08:00
Ryan Dahl
f1391f33cd
Add missing require('fs')
2010-11-01 14:56:21 -07:00
Ryan Dahl
1eb547fec1
Lazy load modules in net.js
2010-10-28 13:15:53 -07:00
Ryan Dahl
5171da5a6c
Remove a little redundancy
2010-10-28 13:11:42 -07:00
Ryan Dahl
65dced730f
Handle one more onReadable call from crypto
...
MUST get rid of this calledByIOWatcher stuff. Hopefully will be able to when
securepair stuff lands.
2010-10-28 12:34:48 -07:00
Ryan Dahl
73cfda12bb
Abstract out a Server.prototype.pause method
2010-10-28 11:42:22 -07:00
Ryan Dahl
ad61d77fa3
Abstract out net.Server.prototype._rejectPending
...
Does the same timeout action for maxConnections as it does for EMFILE.
2010-10-28 11:33:35 -07:00
Jonas Pfenniger
74d0a077ec
Module-level EMFILE handling
...
All net servers now share the same dummy socket. The ulimit warning is
throttled for all servers.
2010-10-28 11:12:59 -07:00
Ryan Dahl
67652ddf27
Refactor callbacks in net.Stream for fewer closures
2010-10-27 16:43:16 -07:00
Ryan Dahl
38dde9684f
Add extra anti-DoS tech to net.Server
2010-10-27 12:09:16 -07:00
Ryan Dahl
ac54272218
Gracefully handle EMFILE
...
Implementing a tip from Marc Lehmann:
http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#The_special_problem_of_accept_ing_wh
Keep an extra FD around for every server. When you hit EMFILE, destroy that
FD, accept a connection, close it; in this way you can clear the connection
queue and let people know that you're overload.
No more timeout needed.
2010-10-27 02:12:25 -07:00
Ryan Dahl
5cc29b80f2
Move idle timers into its own module
2010-10-26 14:53:17 -07:00
Ryan Dahl
2470d2ee92
allowHalfOpen disabled by default
...
Users too often would forget to add
socket.on('end', function () {
socket.end();
});
Which is a mistake. Therefore we default to this behavior and
only optionally let people handle the 'end' case themselves.
2010-10-26 01:10:18 -07:00
Micheil Smith
8da020d39e
Update node_net.cc to make us of node_constants.cc
...
also affects dgram which uses a constant from node_net.cc
2010-10-25 12:14:47 -07:00
Ryan Dahl
0ac2ef924f
Do not spin on aceept() with EMFILE
...
When a server hit EMFILE it would continue to try to accept new connections
from the queue. This patch introduces a timeout of one second where it will
stop trying to accept new files. After the second is over it tries again.
This is a rather serious bug that has been effecting many highly concurrent
programs. It was introduced in 4593c0, version v0.2.0.
TODO: A test for this situation. Currently I test it like this
termA% cd projects/node
termA% ulimit -n 256
termA% ./node benchmark/idle_server.js
termB% cd projects/node
termB% ./node benchmark/idle_clients.js
And watch how the server process behaves.
2010-10-23 12:28:20 -07:00
Ryan Dahl
d9a5edb2b0
Fix test-net-eaddrinuse
2010-10-23 11:22:24 -07:00
Jorge Chamorro Bieling
99e19aa398
Remove unneeded function wrappers
2010-10-21 17:11:59 -07:00
Johan Euphrosine
5d400cfd3a
net listen should emit eaddrinuse error
2010-10-18 17:00:13 -07:00
Joshua Peek
73b29d79b9
Don't flush net writeQueue on end() if its still connecting
2010-10-13 02:37:53 -07:00
Ryan Dahl
6691aca229
Allow people to set backlog. Need a better API.
2010-10-13 01:47:29 -07:00
Micheil Smith
a3604cf233
Removed deprecated methods from lib/net.js
2010-10-11 16:20:08 -07:00
Micheil Smith
83db91be41
Removed deprecated alias to lib/fs.js
2010-10-11 16:20:04 -07:00
Ryan Dahl
7e24a05cba
Fix test-http-buffer-sanity
2010-10-11 16:00:36 -07:00
Micheil Smith
e38eb0c5a4
Soft migration of sys -> util, Removal of deprecated utils module.
2010-10-11 15:21:36 -07:00
Ryan Dahl
1d3142a882
TCP clients should buffer writes before connection
2010-10-10 23:09:14 -07:00
Ryan Dahl
bc695475b9
Add Stream base class with stream.pipe
2010-10-10 17:27:03 -07:00
Joshaven Potter
3d4e4d8909
syntax fixes to pass jslint
2010-10-06 20:40:57 -07:00
Ryan Dahl
f323f34353
writeable -> writable
2010-09-29 16:12:30 -07:00
Ryan Dahl
9911629de0
Fix style in node_crypto.cc
2010-09-28 19:17:09 -07:00
Ryan Dahl
163485c8aa
Rename some SecureStream methods
2010-09-28 11:38:27 -07:00
Ryan Dahl
7bd94712a8
lazy load crypto binding
2010-09-28 11:27:13 -07:00
Ryan Dahl
d89f8dce28
fix style in net.js
2010-09-28 11:27:09 -07:00
Ryan Dahl
069d973d74
Remove require('buffer') in built-in libraries.
2010-09-28 02:31:31 -07:00
Ryan Dahl
01b3418e2e
Move IOWatcher and Timer to process.binding
2010-09-17 00:15:54 -07:00
Paul Querna
c8f9728de7
Move dns.isIP to net.isIP
...
Add tests and docs.
2010-09-16 17:27:10 -07:00
Ryan Dahl
251d03197f
Remove deprecation warnings in net module
2010-09-16 15:02:12 -07:00
Bradley Meck
d5214b3627
Allow Strings for ports on net.Server.listen
2010-08-30 13:27:38 -07:00
Ryan Dahl
4fdebab005
Safe constructor: net.Server, net.Stream
2010-08-27 15:38:46 -07:00
Ryan Dahl
4593c04959
Implement net.Server.maxConnections
...
Simplify EMFILE behavior.
2010-08-15 14:01:55 -07:00
Illarionov Oleg
cde80d9859
Fix OpenSSL 100% CPU usage on error
2010-08-15 13:23:09 -07:00
Matt Ranney
f7c5334195
Check for socket on Unix domain connect.
...
Change scope to context in REPL docs.
2010-07-26 19:02:15 -07:00
Peter Griess
94cd83ef34
Doc fixes for FD related features, upgrade.
...
- Add docs for 'fd' events, Server.listenFD(), Stream.write(...[, fd])
and http.Client 'upgrade' event.
2010-07-03 08:18:42 +02:00
Blake Mizerany
8c8534046c
fix whitespace errors
2010-06-29 23:59:24 -07:00
Ryan Dahl
7b119f8b38
Fix error message
2010-06-23 09:09:15 -07:00
Ryan Dahl
6bed15e074
Refactor: Utf8Decoder -> StringDecoder
...
Instead of just decoding Utf8, this will proxy requests to buffer.toString()
for other encodings. This makes for a simpler interface.
2010-06-15 18:19:27 -07:00
Peter Griess
4b48042c17
Wrap FD in closure before emitting from Stream.
...
- Without this, recvMsg can be invoked before the event emitter gets a
chance to run. In this case, recvMsg.fd will be overwritten and the
original caller can end up emitting null.
2010-06-15 15:10:30 -07:00
Ryan Dahl
14414f81f3
Soft deprecation of 'listening' event.
...
Add callback param to listen() instead
2010-06-15 12:38:25 -07:00
Peter Griess
de6d663a67
Add 'type' parameter to net.Server.listenFD()
...
This is needed in case the provided socket is not the default 'tcp4' type
(i.e. and needs different read/write/etc methods). With this patch, one can
call listenFD(sock, 'unix') to bind to existing UNIX domain sockets.
2010-06-08 18:09:17 -07:00
Peter Griess
a0134ff0f8
add net.Server.listenFD
...
Now that FD passing is in master, it'd be great to be able to use a received
socket (which has already had bind(2) and listen(2) called on it) to fire up a
new net.Server instance. This patch adds a net.Server.listenFD() method which
will start up the accept watcher on the provided FD.
2010-06-07 10:13:30 -07:00
Ryan Dahl
62d9bff06b
Fix ability to disable TCP timeouts with setTimeout(0)
2010-06-03 11:01:47 -07:00
Peter Griess
8f0b4e9111
Send and receive file descriptors through net.Stream.
...
a) create a layer of indirection in net.Stream to allow swapping in
different read/write implementations and
b) emit an 'fd' event when file descriptors are received over a UNIX pipe,
as finally as a tangential benefit
c) remove a bunch of conditionals from the primary codepaths for
ease-of-reading.
2010-06-02 18:16:53 -07:00
Ryan Dahl
74b7fa29a1
Refactor HTTP
...
Allow throttling from outgoing messages.
2010-05-27 20:41:57 -07:00
Ryan Dahl
cbd2c3945b
Throwing in a callback should kill the process
...
There is a difference between errors which happen to a socket - like
receiving EPIPE - an exceptional situation but ultimately okay and the
situation where code throws in a callback - which is not okay.
Fixes test/simple/test-http-exceptions.js
TODO: explain this in docs.
2010-05-20 15:23:36 -07:00
Felix Geisendörfer
ed5f1162fa
Use Utf8Stream for net Streams with utf8 encoding
2010-05-18 01:02:15 -07:00
Ryan Dahl
d2cff34fa3
Idle timeout changes
...
- setTimeout should active the timeout too. (test-net-set-timeout tests
this.)
- 'timeout' event is not automatically followed by an 'error' event. That
is the user is now responsible for destroying the stream if there is an
idle timeout.
2010-05-12 10:06:13 -07:00
Ryan Dahl
1d28cfcfb9
Better logic for testing if an argument is a port
...
If you did server.listen('123') it would open a socket in the current
directory called 123. Now it will interpret it as a port.
2010-05-09 12:10:42 -07:00
Ryan Dahl
d044e2de07
Lazy load crypto
...
The whole program is being slowed down by the large CA string in crypto.
Why?
2010-05-04 14:21:14 -07:00
Rhys Jones
afce4c3ae8
Added default CAs, updated openssl verify behaviour, added crypto and https documentation
2010-05-04 14:12:54 -07:00
Paulo Matias
430cfd1825
Read all records to always empty the OpenSSL reading buffer.
2010-05-03 16:11:42 -07:00
Ryan Dahl
301b44d45d
Chunk strings together on Stream buffer
2010-04-29 12:00:37 -07:00
Ryan Dahl
e235aae018
Fix bug in socket write optimization
...
Thanks to tlb@tlb.org for finding it!
2010-04-26 20:26:43 -07:00
Ryan Dahl
16f02403f8
Catch errors from stream events in net.js
...
Pipe into 'error' event.
2010-04-23 14:08:54 -07:00
Ryan Dahl
6abdf051d3
Unhandled 'error' events kill program
...
By default 'error' throws. addListener to prevent this.
2010-04-22 17:22:06 -07:00
Julian Lamb
5f8f561d61
add setKeepAlive function, which enables and sets the TCP keep-alive timer
2010-04-20 16:34:21 -07:00
Rhys Jones
e6a1091cc6
Merge branch 'master' into openssl
2010-04-15 10:56:42 +01:00
Ryan Dahl
2ad587cc35
Default to UTF8 on stream write
2010-04-15 02:09:51 -07:00
Ryan Dahl
5281f29012
Use new method of getting chars written for UTF8
2010-04-15 02:09:51 -07:00
Rhys Jones
d27d6dcc6f
Merge branch 'master' into openssl
2010-04-15 06:21:15 +01:00
Rhys Jones
fbad5dc062
Updated https support
2010-04-15 06:17:22 +01:00
Ryan Dahl
684740c232
net.js: Slice the right buffer in _writeOut
2010-04-14 00:41:56 -07:00
Rhys Jones
144200435f
Merge branch 'master' into openssl
...
Conflicts:
lib/net.js
wscript
2010-04-14 07:31:33 +01:00
Ryan Dahl
71dc232f93
Use === instead of == for END_OF_FILE compares
...
This caused a very hard to track down bug. Thanks to Mikeal Rogers for this
fix. Unfortunately we were unable to put together a test case.
2010-04-13 15:56:08 -07:00
Micheil Smith
57ea07ac91
Moving the http.js, net.js FreeList to being standalone.
2010-04-12 16:57:45 -07:00
Rhys Jones
80174392bb
Moved Credentials into crypto module. Added node_crypto into crypto module
2010-04-12 21:25:16 +01:00
Ryan Dahl
4681e34c1e
Fix a race condition or two in net.js
...
When making a TCP connection, readyState returns 'opening' while resolving
the host. However between the resolving period and the establishing a
connection period, it would return 'closed'. This fixes it.
This change also ensures that the socket is closed before the 'end' event is
emitted in the case that the socket was previously shutdown.
2010-04-12 12:38:11 -07:00
Matt Ranney
715e119eea
Fix typo in comments.
2010-04-11 15:47:29 -07:00
isaacs
57fbb627ca
trailing whitespace fixes
2010-04-11 14:48:23 -07:00
Ryan Dahl
9331218449
Servers shouldn't die on EMFILE
2010-04-09 10:44:13 -07:00
Ryan Dahl
08a09bb50a
Use some more Binary/F methods for Buffer
2010-04-08 16:31:02 -07:00
Ryan Dahl
50c70ac714
Update stream API: forceClose() -> destroy(), close() -> end()
2010-04-08 12:24:29 -07:00
Ryan Dahl
7a6b5635eb
Revert "Enable TCP timeout by default"
...
Causing programs to not exit gracefully.
This reverts commit cb84cde4d4
.
2010-04-08 07:19:42 -07:00
Ryan Dahl
cb84cde4d4
Enable TCP timeout by default
2010-04-08 00:59:57 -07:00
Ryan Dahl
d923c94a0c
Remove udns
2010-04-07 18:25:37 -07:00
Ryan Dahl
33e774eeba
Use c-ares in lib/net.js
2010-04-07 16:05:07 -07:00
Ryan Dahl
eac3dc9d5f
Bugfix: net.js flushing, _doFlush typo
2010-04-07 11:47:46 -07:00
Ryan Dahl
53dd9fe200
Fix bug in buffer.utf8Write() which included \u0000
2010-04-05 18:10:36 -07:00
Ryan Dahl
1b758ef268
Allow stream to write on close
2010-04-05 16:50:05 -07:00
Ryan Dahl
129310676d
Fix style in SSL patch
2010-04-02 17:30:49 -07:00
Rhys Jones
fb3a9cd0d8
Initial openssl support for net2
2010-04-02 17:13:54 -07:00
Ryan Dahl
ae805f1057
Emit 'error' on tcp connection DNS error
2010-04-02 16:15:53 -07:00
Ryan Dahl
53530e981a
Fix test-http-chunked. Need to check for \0 at end of utf8 strings
2010-04-02 14:55:28 -07:00
Ryan Dahl
b9106b0ecd
Use AF_INET sockets instead of always AF_INET6
...
You can get AF_INET6 still, it's just not the only choice.
2010-04-02 13:20:56 -07:00
Ryan Dahl
fdae14070c
Move buffer constants at the top of net.js
...
Remove some cruft.
2010-04-01 16:46:37 -07:00
Ryan Dahl
e232cf3100
Hack to support UTF8 writes again!
2010-04-01 16:24:36 -07:00
Ryan Dahl
3197cf291d
Better flushing
...
Lost Utf8 support. Waiting for http://codereview.chromium.org/1539013
2010-04-01 15:53:48 -07:00
Herbert Vojcik
da16128bf6
missing return after forceClose
2010-03-31 08:13:03 -07:00
Ryan Dahl
d1b78c3f5d
More efficient Stream.write
2010-03-27 14:07:43 -07:00
Ryan Dahl
7ed80451ca
Increase pool.used before making 'data' event
2010-03-26 08:35:12 -07:00
Ryan Dahl
8e9ec4abea
Fix idle timeouts
...
Remove process.now because it doesn't provide enough precision.
2010-03-23 20:54:19 -07:00
Ryan Dahl
3238944c7a
Don't use sys.puts for debug in net.js
2010-03-23 18:10:13 -07:00
Ryan Dahl
c66a0a739f
recvBuffer -> pool
2010-03-19 23:09:16 -07:00
Ryan Dahl
04001fb591
Don't deprecate readyState, yet
2010-03-19 21:51:07 -07:00
Ryan Dahl
139c91e892
Support old 'binary' encoding in net.js
2010-03-19 21:25:29 -07:00
Ryan Dahl
025116f8d0
Move Buffer into own module
2010-03-19 20:58:24 -07:00
Ryan Dahl
ac684f3583
Add legacy 'binary' encoding/decoding methods to Buffer
2010-03-19 20:33:09 -07:00
Ryan Dahl
776c3e2b29
Add note about Buffer abstraction
2010-03-19 12:08:57 -07:00
Ryan Dahl
3a993d8897
Buffer.utf8ByteLength -> Buffer.byteLength
2010-03-19 12:02:59 -07:00
Ryan Dahl
3e969f0f74
Random net.js clean ups
2010-03-19 11:46:35 -07:00
Ryan Dahl
f8c3b6009d
Remove send fd functionality
...
It was broken anyway. It will go into its own class later.
2010-03-19 11:34:26 -07:00
Ryan Dahl
90295d9fce
[net2] inline write on empty write buffer for performance
2010-03-19 02:24:16 -07:00
Ryan Dahl
916e057fea
Add 'opening' readyState
2010-03-18 14:33:42 -07:00
Ryan Dahl
1332cafb7c
s/Socket/Stream/g
2010-03-17 16:31:24 -07:00
Ryan Dahl
04c06b9149
child process now use net.Socket
2010-03-17 14:00:17 -07:00
Ryan Dahl
953fa3a5f5
Move net2 bindings out of process
2010-03-15 16:44:50 -07:00
Ryan Dahl
fdf46a65c9
Use streams for stdout and stdin
2010-03-15 15:11:40 -07:00
Ryan Dahl
cbfd4da818
Merge branch 'master' into net2
...
Conflicts:
src/node.cc
2010-03-15 14:34:01 -07:00
Ryan Dahl
96f08cf05c
Work on net2 http client
2010-03-12 18:39:02 -08:00
Ryan Dahl
aa6eaae0aa
Simplify Socket constructor
2010-03-12 13:06:05 -08:00
Ryan Dahl
3adf7a3dcf
TCP timeout opt-in instead of opt-out
...
For speed, idle connections are super cheap.
2010-03-12 12:39:37 -08:00
Ryan Dahl
b94af8d6b1
Only print readyState deprication message once
2010-03-12 12:34:25 -08:00
Ryan Dahl
ca862d75de
[net2] Add Socket.setTimeout
...
Still seeing crashes and performance problems.
2010-03-11 12:43:32 -08:00
Ryan Dahl
0918bb2070
Adjust a few more tests to work with net2
2010-03-09 18:37:23 -08:00
Ryan Dahl
c1a0ade7e7
Further net2 compatibilities
2010-03-09 16:27:49 -08:00
Ryan Dahl
264a67aed2
Update net.js for new stream API
2010-03-09 11:59:42 -08:00
Ryan Dahl
7bd3280cc2
process.inherits -> sys.inherits in net.js
2010-03-02 10:59:19 -08:00
Ryan Dahl
16e32c8fd9
Allow for net reconnects
2010-02-26 12:13:49 -08:00
Ryan Dahl
b6edae5671
Expose errno exception creation
2010-02-08 07:36:40 -08:00