Ryan Dahl
a695065305
Add failing test for stdout flush on exit
2010-02-07 18:05:58 -08:00
Ryan Dahl
96f42745ff
Merge branch 'master' into net2
2010-02-05 19:00:26 -08:00
Ryan Dahl
fe85062046
Bugfix: blocked pumping in stdio coupling
...
This should fix the test in c05b5d8
by Mikeal Rogers.
2010-02-05 17:14:14 -08:00
Mikeal Rogers
c05b5d8b59
Adding test for bug in stdio.
...
http://groups.google.com/group/nodejs/browse_thread/thread/10fda8eaf7276642/e5d5147f2b666abd
2010-02-05 10:58:00 -08:00
Felix Geisendörfer
b73f61a137
Simplified module system
...
createModule got removed as it was unnecessary and caused issues by
doing its own cache checks independent of loadModule. Internal modules
are now the only globally cached modules, all other modules are only
cached by inheriting their parent modules cache.
Credits: Module specific cache and a few other diffs by Blaine Cook
431662d25c
http://romeda.org/blog/2010/01/hot-code-loading-in-nodejs.html
http://thread.gmane.org/gmane.comp.lang.javascript.nodejs/1994
2010-02-04 14:08:39 -08:00
Ryan Dahl
173a8c9842
Disable dns and fs-sendfile tests.
2010-02-03 10:05:24 -08:00
Ryan Dahl
0b07f32819
Merge branch 'master' into net2
2010-02-03 10:00:39 -08:00
Ryan Dahl
33509bdbe5
eof -> end
2010-02-01 18:19:14 -08:00
Felix Geisendörfer
ac2abe5b1e
Bugfix: Handle Content-Type headers with charset
...
Some HTTP clients include a charset parameter in the Content-Type, e.g:
multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY
This patch makes the multipart parser more forgiving towards unexpected
information included in the Content-Type header.
2010-01-29 18:04:48 -08:00
Ryan Dahl
785531691b
Add buffer.unpack
2010-01-29 09:57:47 -08:00
Ryan Dahl
49451c1dab
Merge branch 'master' into net2
2010-01-29 00:58:43 -08:00
Ryan Dahl
4347906b7f
Fix require() in test-buffer.js
2010-01-27 18:45:07 -08:00
Ryan Dahl
bf803f478b
Reimplment Buffers
2010-01-27 15:40:09 -08:00
Ryan Dahl
30b0522157
Bugfix: HTTP client automatically reconnecting
...
Test case by tlynn.
2010-01-27 09:34:45 -08:00
Blaine Cook
cd6397cc45
Add support for MX, TXT, and SRV records in DNS module.
2010-01-25 09:03:27 -08:00
Felix Geisendörfer
c86c614cac
Bug Fix: Late promise promise callbacks firing
...
Late promise bindings would fire regardless of the outcome of the
promise.
Test case by: Jonas "zimbatm" Pfenniger <jonas@pfenniger.name>
2010-01-24 14:20:17 -08:00
Ryan Dahl
dda1d681f7
Provide buffer in HTTPParser callbacks.
2010-01-24 14:12:15 -08:00
Ryan Dahl
42ee16978e
Implement new http-parser binding using Buffer
2010-01-24 11:21:45 -08:00
David Sklar
6f738d6e7a
Adjust passing-FDs test to wait until socket is really writeable
2010-01-22 14:37:30 -08:00
Felix Geisendörfer
a76c7a89ce
Implemented __dirname
...
It seems that the current __filename module global is mainly used to
determine the directory the current module is in. To make that
easier, this patch adds support for a __dirname module global
directly.
2010-01-22 10:10:15 -08:00
Ryan Dahl
653bf580bf
Merge branch 'develop' into net2
...
Conflicts:
src/node.cc
2010-01-20 15:24:38 -08:00
Ryan Dahl
faefb3f5a4
test-http-eof-on-connect missing require('./common')
2010-01-20 10:06:44 -08:00
Felix Geisendörfer
bfd3144861
Make unhandled Promise errors throw an exception
...
A promise will throw an exception unless an error handler is attached in the
same "tick" that the error is emitted. This is to avoid silent promise
failures.
2010-01-19 14:29:57 -08:00
Felix Geisendörfer
f64371fccb
Support late callback binding for Promises
...
Listeners attached with addCallback / addErrback will now be executed
right away if the promise has already fired.
2010-01-19 14:29:49 -08:00
Felix Geisendörfer
f2274840a9
Removed Promise.cancel()
...
The current implementation was bad and nobody is using it. Has a chance
of getting re-implemented by somebody who has an actual need for it.
2010-01-19 14:29:38 -08:00
Micheil Smith
6e3d12f617
Allow optional params to setTimeout, setInterval
2010-01-18 10:41:03 -08:00
Ryan Dahl
8abeffa9ea
Add process.nextTick()
...
This is a replacement for the common hack:
setTimeout(cb, 0);
It's much more efficient.
2010-01-18 10:32:36 -08:00
Ryan Dahl
aeb7d6d168
Add process.IdleWatcher
...
With priorities. Will be used for process.nextLoop().
2010-01-18 10:12:04 -08:00
Ryan Dahl
70293a43c9
API: Move Promise and EventEmitter into 'events' module
2010-01-15 12:46:08 -08:00
Ryan Dahl
02e52ef8e9
Merge branch 'master' into net2
2010-01-12 16:59:14 -08:00
Ben Williamson
a3631a383b
Added regression test for issue #44
2010-01-11 16:43:23 -08:00
David Sklar
a876df6c71
Initial take on passing FDs between processes
2010-01-09 01:28:19 -08:00
isaacs
988174a629
Add tests for path module.
2010-01-09 00:31:51 -08:00
Ryan Dahl
53413598b6
Fix another problem with the EIO interface
...
Should call eio_poll() when given a done_poll signal as well.
Bug report and test case by Kris Zyp <kriszyp@gmail.com>
2010-01-08 22:20:23 -08:00
Benjamin Thomas
947c577c0d
Fix bug in the url module's url_parse method if 'parseQueryString' is true
2010-01-06 02:12:11 -08:00
Ryan Dahl
f80cc69c23
libeio bugfix part 3
...
Finally (hopefully) fix the issue that Felix reported. It's only appearing
on macintosh (test/mjsunit/test-eio-race3.js)
The trick/hack is to call eio_poll() again before reentering the event loop.
Additionally this commit implements a more complex method of calling
eio_poll(), occasionally dropping to an ev_idle watcher.
See also:
3f39772834
http://lists.schmorp.de/pipermail/libev/2010q1/000855.html
http://groups.google.com/group/nodejs/browse_thread/thread/9f8db11c792a68bb/a89705f68971f53c
2010-01-06 01:27:31 -08:00
Felix Geisendörfer
7d947f8723
Clean up multipart test case
2010-01-05 20:15:03 -08:00
Felix Geisendörfer
f86c1783b7
Handle bad requests in simplified parser API
2010-01-05 22:37:51 +01:00
Felix Geisendörfer
aa73ed973c
Added test case for the simple multipart API
...
So far this didn't have any test coverage.
2010-01-05 22:28:03 +01:00
Felix Geisendörfer
d9a81374b2
Throw exception for invalid multipart streams
...
When using the multipart parser with an regular http request, the
parser did not complain and just never finished.
2010-01-05 22:23:56 +01:00
Ryan Dahl
04dd2d51be
libeio bugfix: want_poll should be called if breaking on maxreq
...
Reported by shansen and hassox
http://github.com/ry/node/issues#issue/38
Will send upstream.
2010-01-04 23:26:58 -08:00
isaacs
2b3d9e4ad0
Use "url" module instead of "uri" module in http.js.
...
Deprecate the URI module and remove tests for it.
- Rename "uri" to "url".
- Use the "url" module instead of the "uri" module.
- Remove the url parsing from http.js
- Update http.cat with the changed field names.
- Update tests for changes to http.js
- Update documentation for changes in http.js
2010-01-04 21:22:46 -08:00
isaacs
7ff04c1f86
Add URL and QueryString modules, and tests for each.
...
Also, make a slight change from original on url-module to put the
spacePattern into the function. On closer inspection, it turns out that the
nonlocal-var cost is higher than the compiling-a-regexp cost.
Also, documentation.
2010-01-04 21:03:54 -08:00
Tim Caswell
fd184ee2fa
Rename "Dynamic Property" to "Getter/Setter" in sys.inspect.
2010-01-03 21:15:21 -08:00
Tim Caswell
6c68a9679b
Fix inspect to not trigger dynamic properties
...
but to display them as special. Add unit tests to match
2010-01-02 18:18:01 -08:00
Tim Caswell
732c6f2036
Fix inspect for the special case of an Object that inherits from Array, but has other properties.
2009-12-31 09:57:29 -08:00
Ryan Dahl
20eec646b3
[net2] add unix server to ping-pong test
2009-12-30 11:51:43 -08:00
Ryan Dahl
a8ede8dd9e
[net2] port ping pong test
2009-12-30 10:58:46 -08:00
Ryan Dahl
e2569c402f
Add some tests to test-buffer.js
2009-12-29 21:12:28 +01:00
Ryan Dahl
630bb7a012
Rename blob to buffer.
2009-12-29 21:12:28 +01:00
Ryan Dahl
dd35637603
Fix assert.js code style
2009-12-29 20:10:59 +01:00
Ryan Dahl
0d7e88a429
Bugfix: libeio race condition
...
Process at most 10 pending responses from the thread pool in one go.
10 was chosen arbitrarily.
Test and report by Felix Geisendörfer <felix@debuggable.com>
2009-12-29 19:11:04 +01:00
Michaeljohn Clement
3d24e119e0
don't chunk responses to HTTP/1.0 clients, even if they send Connection: Keep-Alive (e.g. wget)
2009-12-23 22:24:29 +01:00
isaacs
4dcdfaf929
Fix require("../blah") issues
...
Added some more tests, and refactored the uri and path modules to use the
same normalization logic, so that nothing is relying on flaky regexps.
http://groups.google.com/group/nodejs/browse_thread/thread/34779f8c10098c5e
http://groups.google.com/group/nodejs/browse_thread/thread/1aa0146b92582679#msg_9822c03998cb4064
2009-12-22 17:22:12 +01:00
Ryan Dahl
0981e7f663
Fix test-readdir.js
...
Was broken because I added "throws_error.js" to the fixtures directory.
Problem appeared in bfa36136da
.
2009-12-19 00:45:01 +01:00
Ryan Dahl
bfa36136da
require() should throw error if module does.
...
Reported by Kris Zyp
http://groups.google.com/group/nodejs/browse_thread/thread/1feab0309bd5402b
2009-12-18 23:58:04 +01:00
isaacs
4526308560
Update to fix failing test. Rewrite of the resolveObject function, and some tweaks to format.
2009-12-18 19:02:27 +01:00
isaacs
2f9722cca0
Pull in the uri.js from Narwhal and create tests, stripping out the cruft from a previous code-surgery.
2009-12-18 18:56:59 +01:00
Ryan Dahl
89a3fa93a0
add missing semicolon
2009-12-09 15:59:53 +01:00
Xavier Shay
756544fd28
sys.inspect prints out special chars correctly (\n, \u0001, etc...)
2009-12-07 10:05:18 +01:00
Felix Geisendörfer
876b6d2183
Make process.mixin copy over undefined values
...
This is not a bug in process.mixin, but I think it is undesirable
behavior. Right now process.mixin will not copy over keys with undefined
values. To me that is an unexpected filtering that should not happen
unless specifically called for.
2009-12-06 19:21:20 +01:00
Felix Geisendörfer
f080de5380
Two bug fixes for process.mixin
...
Bug #1 occurred when trying to use process.mixin on a function and
produced a fatal exception.
Bug #2 occurred when trying to do a deep merge with an object containing
one or more objects with a nodeType property. In those cases the deep
copy for this part of the object was not performed and a shallow one was
performed instead.
Both of these bugs were artifacts of the jQuery.extend port.
2009-12-06 19:21:06 +01:00
Christopher Lenz
f8ba9c3bc9
Add http.Client.prototype.request()
...
Change the http.Client API so that it provides a single request() method
taking an optional parameter to specify the HTTP method (defaulting to
"GET"), instead of the five methods get(), head(), post(), del() and put().
2009-12-06 18:36:32 +01:00
Xavier Shay
34c02357ff
sys.inspect is totally more awesome now
...
- No longer relies on JSON.stringify, so it can output nulls and functions
- Handles circular references better
- Has tests
2009-12-06 12:19:23 +01:00
Ryan Dahl
8141448fe5
Don't use promises internally in DNS module
2009-12-06 09:26:09 +01:00
Ryan Dahl
c5d82380f4
Bugfix: Don't use chunked encoding for 1.0 requests.
...
http://groups.google.com/group/nodejs/browse_thread/thread/b2edb76691b1848c
2009-12-05 08:37:46 +01:00
Karl Guertin
4f679fd8d0
Dependency free assert module with unit tests
2009-12-05 01:05:16 +01:00
Felix Geisendörfer
530328f12b
CommonJS testing for node.js
...
Refactored test suite to use the assert module for testing rather than
mjsunit.
2009-12-05 01:05:16 +01:00
Michaeljohn Clement
485823f3e4
fixed HTTP duplicated header bug
...
added test case for HTTP duplicated header bug on keepalive
2009-12-05 00:56:22 +01:00
Rhys Jones
5b1a535cd8
Add HTTP client TLS support
2009-11-30 16:51:20 +01:00
choonkeat
44d5f212fe
Stat::Callback has 2 arguments for callback: current stat info and previous stat info
...
http://groups.google.com/group/nodejs/msg/f8e51a8e0c74bd85
2009-11-28 15:13:12 +01:00
Friedemann Altrock
0433d828cf
add process.umask()
2009-11-22 19:52:52 +01:00
Friedemann Altrock
2d54d664ff
Promises should not be able to be canceled more than once.
2009-11-22 19:18:24 +01:00
Felix Geisendörfer
27fcae738a
Reduce multipart memory footprint
...
Multipart parts kept the first chunk of data after their headers in
memory, even so that was no longer needed.
2009-11-22 15:09:55 +01:00
Rhys Jones
b6dda61249
Initial TLS support
2009-11-22 04:03:53 +01:00
Felix Geisendörfer
528c449901
Multipart improvements
...
Multipart parts now have a name and filename property. Those are the
same as:
part.headers['content-disposition'].name
part.headers['content-disposition'].filename
This patch also updates and improves the docs for the multipart module.
2009-11-21 17:16:06 +01:00
Ryan Dahl
0b441462ab
Speed up test-wait-ordering.js
2009-11-18 15:55:02 +01:00
Ryan Dahl
6cb0e0e5f5
Test runner should only run test-*.js
2009-11-17 15:05:10 +01:00
Ryan Dahl
6e6562e551
Fix stat handler test for macintosh
2009-11-17 15:05:01 +01:00
Ryan Dahl
8d2f9e83a4
Add process.watchFile() process.unwatchFile()
...
This is an interface to libev's ev_stat watcher.
2009-11-17 14:07:48 +01:00
Felix Geisendörfer
2b252acea4
Implement process "uncaughtException" event
...
This event can be used to overwrite the default exception mechanism which
reports the exception and kills the node process.
See google group post:
http://groups.google.com/group/nodejs/browse_thread/thread/9721dc3a2638446f
2009-11-14 23:46:37 +01:00
Felix Geisendörfer
bffee5eda4
Bugfix for sendBody() and chunked utf8 strings
...
Http expects chunked byte offsets and ignores the encoding specified in the
header. This patch makes node behave accordingly.
Bug report:
http://groups.google.com/group/nodejs/browse_thread/thread/ab701d49cb059317
2009-11-11 18:53:05 +01:00
Felix Geisendörfer
7371fcb312
Temporary function to determine str byte length
...
Will need a better place later on
2009-11-11 18:42:46 +01:00
Felix Geisendörfer
a021db151a
Bug fix for test-remote-module-loading.js
...
Fix bug that caused test-remote-module-loading.js
to use the installed version of the http library
rather than the build one.
2009-11-07 20:07:55 +01:00
Ryan Dahl
6c9ec1ac40
Use '127.0.0.1' instead of 'localhost' for keep-alive test
...
ab seems to have to problem resolving 'localhost' on Urban's computer.
2009-11-07 17:31:42 +01:00
Ryan Dahl
9cfa4fd7d6
Output stderr from test-remote-module-loading.js
...
There is a small problem with test-remote-module-loading.js.
When it starts a child "node", the child uses the default require.paths
instead unshifting the build lib/
2009-11-07 15:08:46 +01:00
Ryan Dahl
b833aa48e9
Add test to ensure the server can handle keep-alive
2009-11-06 13:42:56 +01:00
Ryan Dahl
51c1526b6a
Revert "Upgrade http parser, change node as needed."
...
Something is broken in how keep-alive is working. Reverting until I can fix
it.
This reverts commit b893859c34
.
2009-11-06 12:44:20 +01:00
Brandon Beacher
47fcf785ac
Added process.chdir()
2009-11-03 19:22:37 +01:00
Ryan Dahl
b3b3cfe007
Move memoryUsage() into C on Linux
2009-11-03 13:00:42 +01:00
Ryan Dahl
3a70129a9c
Add sys.memoryUsage()
2009-11-03 01:30:01 +01:00
Felix Geisendörfer
43d651daef
The return of relative module loading
2009-11-02 21:26:55 +01:00
Felix Geisendörfer
7069bee982
The return of absolute Module loading
2009-11-02 21:20:44 +01:00
Felix Geisendörfer
8fd472b9a1
The return of remote module loading
2009-11-01 15:39:49 +01:00
Ryan Dahl
7a2e784ad7
Module refactor - almost CommonJS compatible now
...
API change summary:
* require("/sys.js") becomes require("sys")
* require("circle.js") becomes require("./circle")
* process.path.join() becomes require("path").join()
2009-10-31 19:10:30 +01:00
Ryan Dahl
57890465bd
A few more node->process changes
2009-10-30 05:49:23 +01:00
Ryan Dahl
ad0a4cefb8
Namespace EVERYTHING under process; introduce GLOBAL
...
http://groups.google.com/group/nodejs/browse_thread/thread/1034fd2ad2cd93e8
2009-10-29 23:36:41 +01:00
Felix Geisendörfer
659954d842
The return of Promise.cancel() with some additional tests & docs
2009-10-29 11:24:08 +01:00
Ryan Dahl
c536728335
Move node.dns.* into /dns.js
2009-10-28 23:02:52 +01:00
Ryan Dahl
3d8b14e6f7
node.fs.* moved into "/posix.js"
...
use require("/posix.js") to access them.
2009-10-28 22:45:46 +01:00
Ryan Dahl
efe34f5023
Only allow a promise to fire once, remove promise.cancel()
...
promise.cancel() is due to return at some point.
2009-10-28 15:37:03 +01:00
Ryan Dahl
04e53cab90
Rename node.libraryPaths to require.paths
...
to be more inline with CommonJS.
2009-10-25 22:51:57 +01:00
Ryan Dahl
b893859c34
Upgrade http parser, change node as needed.
...
The latest version of http-parser is a bit more stringent EOF semantics.
2009-10-15 19:18:18 +02:00
Ryan Dahl
3456a16f71
Accept string representations of signals in node.kill and child.kill
2009-10-15 15:45:04 +02:00
Brandon Beacher
334d56d2be
Added external interface for signal handlers.
...
Also process.pid and node.kill().
2009-10-15 14:40:52 +02:00
Connor Dunn
2dbd0d3806
Add node.fs.sendfile()
2009-10-14 18:51:23 +02:00
Felix Geisendörfer
0dbf2d7792
Implemented Promise.timeout() and Promise.cancel()
2009-10-12 16:17:42 +02:00
Ryan Dahl
f623fd7658
Normalize HTTP headers.
...
"Content-Length" becomes "content-length".
2009-10-07 16:56:19 +02:00
Ryan Dahl
b76d853f0d
Fix test-signal-handler.js on macintosh - pause before exit.
2009-10-07 15:39:39 +02:00
Felix Geisendörfer
abbc624f52
Multipart test now uses a fixture instead of CURL
2009-10-07 02:03:24 +02:00
Brandon Beacher
f068251494
Added signal handler.
...
To be used internally. Needs an exposed interface.
2009-10-07 01:23:29 +02:00
Ryan Dahl
82465fc4b1
Do not use /bin/sh to create child processes.
...
Instead directly call execvp(). This change is needed for the
soon-to-be-added signal handlers because the /bin/sh parent process does not
pass all signals to it's children, particularly SIGUSR1 on Linux.
The parameters of createChildProcess had to be changed slightly.
utils.exec() also has a changed implementation. A bug involving quoted
arguments was knowingly introduced into utils.exec(). Will fix later.
2009-10-07 01:08:33 +02:00
Ryan Dahl
8185e1fd25
Remove include() add node.mixin()
...
include() should not be used by libraries because it will pollute the global
namespace. To discourage this behavior and bring Node more in-line with
the current CommonJS module system, include() is removed.
Small scripts like unit tests often times do want to pollute the global
namespace for ease. To avoid the boiler plate code of
var x = require("/x.js");
var foo = x.foo;
var bar = x.bar;
The function node.mixin() is stolen from jQuery's jQuery.extend. So that it
can be written:
node.mixin(require("/x.js"));
Reference:
http://docs.jquery.com/Utilities/jQuery.extend
http://groups.google.com/group/nodejs/browse_thread/thread/f9ac83e5c11e7e87
2009-10-05 15:46:31 +02:00
Ryan Dahl
522909bcbf
Parse queryString into req.uri.params
2009-10-05 14:52:26 +02:00
Ryan Dahl
a8c0211e73
Bugfix: require() and include() should work in callbacks.
...
Removing requireAsync and includeAsync from global scope for now as a
temporary fix. Reported by Yuffster.
2009-09-29 19:28:54 +02:00
Ryan Dahl
095470854b
Move tcp library to /tcp.js
2009-09-28 18:48:18 +02:00
Ryan Dahl
f6657c3c9d
Move http library to /http.js
2009-09-28 12:36:36 +02:00
Ryan Dahl
7abad8b7b3
API: Move node.puts(), node.exec() and others to /utils.js
2009-09-28 12:06:30 +02:00
Felix Geisendörfer
27c750154e
Multipart stream parser
2009-09-27 16:58:56 +02:00
Ryan Dahl
106287c368
Tighten window on timer test.
2009-09-23 16:40:04 +02:00
Ryan Dahl
e0ec0036ca
Add connection.setNoDelay() to disable Nagle algorithm.
2009-09-23 15:36:34 +02:00
Ryan Dahl
07792afe0a
Remove "raw" encoding. Rename "raws" to "binary".
...
Deprecation warnings have been added to help the conversion to this new API.
2009-09-21 12:27:22 +02:00
Ryan Dahl
cd70d4a9c0
Add "/file.js" buffered disk I/O object.
...
This is similar to the class node.File which was removed in
82cb1b5acb
.
Needs documentation.
2009-09-20 20:42:23 +02:00
Ryan Dahl
4b8f503fac
Move mjsunit.js to system module directory.
2009-09-20 18:19:33 +02:00
Ryan Dahl
c8b143bf30
Absolute path names for require() refer to node.libraryPaths
2009-09-19 17:21:12 +02:00
Jon Crosby
e57c16bc2d
Add failing spec for node.fs.write
2009-09-17 14:58:01 +02:00
Ryan Dahl
083d150bc4
Add node.exec()
2009-09-15 15:42:16 +02:00
Ryan
dbe116ddfe
API: Change arguments of emit(), emitSuccess(), emitError()
...
Instead of
myemitter.emit("event", [arg1, arg2, arg3]);
the API is now
myemitter.emit("event", arg1, arg2, arg3);
This change saves the creation of an extra array object for each event.
The implementation is also slightly more simple.
2009-09-12 14:21:37 +02:00
Ryan
241950c1df
Add isDirectory(), isFile(), isSocket(), ... methods to stats object.
...
Thanks to Felix Geisendörfer for the initial patch.
2009-09-11 13:41:47 +02:00
Ryan
8890070b88
Introduce "raws" encoding. Raw String.
...
This allows you to have binary data imported into your application via
strings instead of arrays of numbers! This needs testing before release.
2009-09-09 17:22:20 +02:00
Ryan
1a2696f10a
Almost completely remove onExit and onLoad.
...
They were deprecated in 723c7d9f7c
and
31265be4a6
.
Still retaining error message.
2009-09-07 14:45:48 +02:00
Ryan
9dbd92476e
Bugfix: Trap exceptions in URIParser.
...
A user was able to crash chat.tinyclouds.org by sending it a malformed URL!
Not good.
2009-09-04 17:42:00 +02:00
Ryan
1bd5277233
Add test-mkdir-rmdir.js
2009-09-04 11:46:31 +02:00
Ryan
b6eed30379
Sort files in readdir test.
2009-09-03 21:59:31 +02:00
Ryan
9b3e2ae192
Add node.fs.readdir()
2009-09-03 21:32:27 +02:00
Ryan
aefbd57514
Add stack to promise.wait().
...
The problem was that if promise A was waiting and promise B was created and
then also told to wait (from some callback coming off the event loop), and
then promise A finished, promise B's wait would return. Promise A's wait
would not return until promise B was finished. This is incorrect.
To solve this issue properly, one probably needs to allocate separate
execution stacks. I use, instead, Poor Man's Coroutines. We continue to use
the main execution stack and force promises created most recently to return
first.
That is even if Promise A finishes first, neither wait() returns. Not until
Promise B finishes, will its wait() return. After that is complete, Promise
A's wait() will return.
This introduces the problem of growing the "wait stack" infinitely. Thus
I've added a strong warning to the documentation only to use this operation
sparingly. require() and include() seem to be the proper use case for such a
thing: they are called usually at program start up - they don't take too
long to finish and they won't be called so often.
Let's experiment with this stop-gap. If the infinite promise stack becomes a
problem for many, then I will remove promise.wait() entirely or perhaps only
use it for thread pool events.
2009-09-03 10:48:39 +02:00
Ryan
afd9e714d3
Stack traces for mjsunit errors, better error reporting function.
...
The error reporting function tries to look at the "stack" element of the
exception.
2009-08-31 18:42:50 +02:00
Ryan
7beea2cd5f
Upgrade evcom; Add setTimeout method to node.tcp.Connection
...
The default timeout is 60 seconds, but it can now be changed.
evcom upgrade includes fixes to force_close.
2009-08-31 18:26:50 +02:00
Ryan
ad9d683f9f
API: rename node.Process to node.ChildProcess
...
This is to avoid confusion with the global "process" object, especially for
the instances of node.Process.
2009-08-26 22:36:45 +02:00
Ryan
116f4dea05
lint
2009-08-26 22:14:45 +02:00
Ryan
723c7d9f7c
Replace onExit() with process.addListener("exit")
...
- Update documentation.
- Depreciation message for onExit().
2009-08-26 22:14:44 +02:00
Ryan
31265be4a6
Depreciate onLoad
2009-08-26 22:14:44 +02:00
Ryan
18d0511777
promise.block() renamed to promise.wait()
...
promise.wait() now returns the arguments of the "success" event. If there
was only a single argument, then it is returned. If there was more than
one, they are returned as an array. If there was an error, it is thrown.
See documentation.
2009-08-26 17:28:49 +02:00
Ryan
db42ad959d
API: All EventEmitters emit "newListener" when listeners are added.
...
The "newListener" event will also be emitted for listeners to "newListener".
Maybe useful?
2009-08-25 17:28:06 +02:00
Ryan
19f182a39f
Experimental support for Promise.block()
2009-08-25 04:25:35 +02:00
Ryan
82cb1b5acb
API: Remove buffered file object (node.File)
...
With the addition of non-libeio stdio (17c6a67f15
)
this class is no longer being used internally. It has proved buggy and isn't
full-featured enough to be very useful. Since it's implemented entirely in
javascript it will be easy for someone to extra into their own library if
needed.
2009-08-25 01:18:44 +02:00
Ryan
8658999c7d
Refactor node.Process to take advantage of evcom_reader/writer.
2009-08-25 01:06:49 +02:00
Ryan
17c6a67f15
Introduce node.stdio
...
Remove old stdout, stderr, stdin objects.
2009-08-24 21:20:26 +02:00
Ryan
0727fcc9ed
Speed up test-tcp-throttle.js
2009-08-24 21:11:02 +02:00
Ryan
316e2833f0
Use flat object instead of array-of-arrays for HTTP headers.
...
E.G. { "Content-Length": 10, "Content-Type": "text/html" } instead of
[["Content-Length", 10], ["Content-Type", "text/html"]].
The main reason for this change is object-creation efficiency.
This still needs testing and some further changes (like when receiving
multiple header lines with the same field-name, they are concatenated with a
comma but some headers ("Content-Length") should not be concatenated ; the
new header line should replace the old value).
Various thoughts on this subject:
http://groups.google.com/group/nodejs/browse_thread/thread/9a67bb32706d9efc#
http://four.livejournal.com/979640.html
http://mail.gnome.org/archives/libsoup-list/2009-March/msg00015.html
2009-08-23 12:32:49 +02:00
Ryan
368ea93bfe
Upgrade evcom - fix API issues.
2009-08-19 17:41:32 +02:00
Ryan
7aaab320b3
API: tcp.Connection "disconnect" event renamed to "close".
...
More semantic, since the event will be emitted on connection error,
when the connection was ever established.
2009-08-14 12:51:46 +02:00
Ryan
dd5ae3183b
Enable test-tcp-many-clients.
2009-08-13 15:05:02 +02:00
Ryan
3b0408ec1c
Sync evcom after refactor; fix binding issues
2009-08-13 13:47:16 +02:00
Ryan
738d20f6f0
(evcom) Add fix for pausing against big buffers.
...
discussion:
http://groups.google.com/group/nodejs/browse_thread/thread/11a920da4d0ed21d
2009-08-10 12:32:54 +02:00
Ryan
94e8721771
Add connection.readPause() and connection.readResume()
2009-08-09 19:12:12 +02:00
Ryan
75fc21537a
Bugfix: response.setBodyEncoding("ascii") not working.
...
This is same error that was fixed in 216fb3b9b2
.
Reported by Felix Geisendörfer.
2009-08-09 18:04:10 +02:00
Ryan
9b3baf3d50
Bugfix: node.encodeUtf8 was broken. (Connor Dunn)
...
http://groups.google.com/group/nodejs/browse_thread/thread/5ad0660a0959d885#
2009-08-06 13:17:30 +02:00
Ryan
e111ccc014
Add Felix Geisendörfer's HTTP stress test.
...
Does not pass on Macintosh and FreeBSD.
2009-08-05 11:17:26 +02:00
Ryan
4f46c47773
node.fs.File was not passing args to promise callbacks.
...
Reported by Jacob Rus.
2009-07-31 19:48:19 +02:00
Ryan
9d3ed1bb92
Bugfix: negative integers in raw encoding stream.
...
Add test. Reported by Tim Caswell.
2009-07-31 19:16:08 +02:00
Ryan
b27f8ba06d
Default to chunked for client requests without C-Length.
...
Also add test. Reported by Felix Geisendörfer.
2009-07-31 18:34:27 +02:00
Ryan
41d89f611f
Add DNS API.
...
Missing functional tests. I'm not sure how to do tests because I don't want
to rely on the fact that users have an internet connection.
2009-07-28 12:36:41 +02:00
Ryan
d41197e02c
Disable test-tcp-many-clients.js. It's broken on macintosh - don't want to fix right now.
2009-07-27 15:30:07 +02:00
Ryan
b1588e78d9
Fix utf8 scripts, add test. Thanks Urban.
2009-07-20 21:22:19 +02:00
Ryan
1b6bbc619d
Bugfix: Server-side clients not attached between creation and on_connect.
...
Solution is to manually add Attach() to OnConnection.
For client side it seems there is no Detach() being called after NS
resolution? Otherwise I would have removed it. That was another bug.
Note: We don't want to modify evnet's behavior to have on_connect called
directly when the socket is accepted. evnet needs to support SSL, and
on_connect is supposed to signal that the SSL connection is established. The
point here is that being "connected" and being "attached" to the event loop
are two different things. SSL stuff may be transmitted when a socket is not
"connected" but it must always be attached.
2009-07-15 17:36:30 +02:00
Ryan
5e2a6f8c46
Upgrade evnet to fix close() bug. Add test for bug.
...
evnet wasn't properly closing sockets if they didn't have data to write.
2009-07-15 07:54:08 +02:00
Ryan
041af82b8c
Bugfix: Sockets not properly reattached if reconnected during disconnect event.
...
The problem was that Connection::on_close was calling Detach() directly
after executing the "disconnect" event. Since we had a boolean attach count,
this was leaving sockets detached even if they had reattached in during the
event.
* Added many asserts in http.cc and net.cc to ensure that sockets are
connected when they should be.
* Changed ObjectWrap to use a reference count instead of boolean attached_
value.
* Fixed similar bug in Timer.
2009-07-13 16:38:55 +02:00
Joshaven Potter
4b9f26c51a
validate js
2009-07-01 02:33:08 +02:00
Ryan
7879e7fd25
small cleanups
2009-06-30 13:58:30 +02:00
Ryan
8047b912c0
Change 'new node.tcp.Connection' to 'node.tcp.createConnection'
2009-06-30 13:56:52 +02:00
Ryan
d56552dc66
Remove node.Process constructor from API
2009-06-30 13:46:35 +02:00
Ryan
e4ba665c87
Fix ref/unref problem. Was doing opposite of what I should.
2009-06-29 20:53:54 +02:00
Ryan
88ad880556
Add new test for node.fs.stat()
2009-06-29 14:11:26 +02:00
Ryan
d428eff023
Snakecase events .
2009-06-29 13:18:30 +02:00
Ryan
e876d6629e
Fix unused variable warnings.
2009-06-28 20:11:55 +02:00
Ryan
65324866bc
Implement Promises for file i/o
2009-06-28 19:08:27 +02:00
Ryan
ed926da691
Remove onEvent compatibility
2009-06-28 19:08:26 +02:00
Ryan
70fe920fb5
Use events for all HTTP messages.
...
This is a rather large refactor! Mostly for the better side. I've had to
remove some functionality like req.interrupt(). A lot of other work is left
messy or incomplete.
2009-06-28 19:08:26 +02:00
Ryan
ed3d6a63d5
Further expand EventEmitter to TCP and HTTP
...
The constructor for TCP servers can no longer take a connection handler for
purely technical reasons. (The constructor for EventEmitter is implemented
in C++ but addListener is in javascript, and I don't want to make too many
C++ -> Javascript references.) Thus I introduce new constructor methods to
ease the creation of the servers:
node.tcp.createServer()
node.http.createServer()
These work almost the same as the old constructors.
In general we're working towards a future where no constructors are
publicly exposed or take arguments.
The HTTP events like "on_uri" are not yet using the event interface.
onMessage still is a constructor - but this will change soon.
2009-06-28 19:08:26 +02:00
Ryan
5b7fb1003c
Add failing test. Process spawning loop.
...
I think this is the issue Felix Geisendoerfer is reporting:
http://groups.google.com/group/nodejs/browse_thread/thread/efbae1ec1e67786c
2009-06-27 00:11:20 +02:00
Ryan
bdad5e7333
test-process-kill: start process after onLoad
2009-06-24 13:58:17 +02:00
Ryan
7363ccd273
bugfix: Properly exit a process.
...
This requires that onExit() is not called immediately upon receiving a
SIGCHLD. There could still be data in the pipez. So, instead just set a
flag and invoke the pipe watchers.
Sometimes one will not receive an EOF from pipes because the process was
killed by a SIGTERM, or something. If SIGCHLD has been recved but we are
getting EAGAIN, the pipez need to be closed too.
2009-06-24 13:44:12 +02:00
Ryan
3fed1a0954
Use v8's test runner
2009-06-22 14:08:42 +02:00
Urban Hafner
ea290e727d
Finished remote module loading
2009-06-21 16:59:11 +02:00
Urban Hafner
ad15067ea0
Tests and implementation of node.cat()
2009-06-21 16:40:08 +02:00
Urban Hafner
3a44efea69
Merge branch 'master' of git://github.com/ry/node
2009-06-21 16:10:20 +02:00
Ryan
c5b5815ae7
fix error in test-process-simple
2009-06-21 14:07:52 +02:00
Ryan
145072e736
Add test-process-kill.js
2009-06-21 14:06:03 +02:00
Ryan
e71b089cd7
Add test-process-simple.js
2009-06-21 14:02:01 +02:00
Urban Hafner
fc63f840b0
Merge branch 'master' of git://github.com/ry/node
2009-06-19 09:03:24 +02:00
Ryan
89d891f912
Small clean up in test-http-client-race
2009-06-18 14:50:10 +02:00
Ryan
e30e4415ee
Fixes for ipv6
2009-06-18 14:34:49 +02:00
Urban Hafner
ce85f84d15
Implementation of node.http.cat
2009-06-17 08:52:47 +02:00
Urban Hafner
79010540fc
Test case for node.http.cat
2009-06-17 08:01:28 +02:00
Urban Hafner
b581749255
Merge branch 'master' of git://github.com/ry/node
2009-06-16 21:09:37 +02:00
Ryan
d77f757745
Fix test-http-client-race bug
2009-06-16 20:53:15 +02:00
Ryan
194eeac0d9
Add failing test for HTTP Client
...
Reported by Hagen:
http://groups.google.com/group/nodejs/browse_thread/thread/335b565360437b36
2009-06-16 19:56:00 +02:00
Ryan
3b05cf260e
Add "opening" readyState for the resolve period.
2009-06-16 15:50:52 +02:00
Urban Hafner
6b9e5eedf2
Test for remote module loading
2009-06-16 08:20:00 +02:00
Ryan
870b5db46c
Bugfix+Refactor: accessing HTTP connection remoteAddress
2009-06-15 15:29:32 +02:00
Ryan
dcf5e72036
Fiddle with remoteAddress
2009-06-15 14:35:02 +02:00
Ryan
916b9ca715
Add Request objects on the HTTP server can be interrupted.
2009-06-12 17:37:43 +02:00
Ryan
3a0de007aa
onBodyComplete was not getting called in HTTP server
2009-06-12 15:26:06 +02:00
Ryan
1a1406c80e
Add 'localhost' to connect() to test for issue 3
2009-06-11 13:43:00 +02:00
Ryan
f657a6324a
Fix comment/test for Mac getaddinfo() bug.
...
Note: the test case was broken because on Macintosh the client connects
synchronously. This is undesirable but ok for now.
2009-06-11 11:42:43 +02:00
Ryan
88c04e74c9
Add HTTP proxy test. Fix bug in http.Server.
...
was not properly inheriting http.Server from http.LowLevelServer.
2009-06-09 14:10:53 +02:00
Ryan
dca7f7bada
Add http server / http client test.
2009-06-09 10:28:59 +02:00
Ryan
8b49cef10b
Modify the tests to use onExit hook.
...
No need to rely on stdout output now.
onExit callbacks should print stack trace from onExit failure
2009-06-08 19:10:36 +02:00
Ryan
f6a7fe2657
Implement onExit() hook for modules.
...
onExit() is similar to the onLoad() callback. onExit() is called on each
module just before the process exits. This can be used to check state in
unit tests, but not to perform I/O. The process will forcibly exit as soon
as all of the onExit callbacks are made.
2009-06-08 16:17:33 +02:00
Ryan
b6fe4aec50
Module system refactor
...
There is one major API change in the refactor: filename extensions are now
required when requiring or including modules.
Added extra test to test-module-loading.js.
2009-06-08 15:34:15 +02:00
Ryan
5558bc4e6e
Add connection.remoteAddress for server-side node.tcp.Connections.
2009-06-05 20:15:54 +02:00
Ryan
8cfdd326a8
Add "had_error" argument to the "onDisconnect" in node.tcp.Client
...
This is a boolean value which allows one to detect if the socket was closed
due to errors. There is not yet a way to look up the actual error code.
2009-06-04 12:33:19 +02:00
Ryan
ed283dc280
Fix bug: catting non-existent files
2009-06-01 12:56:28 +02:00
Ryan
5c2389fada
Remove error codes from file on_completion callbacks. Use file.onError.
...
The error codes still remain for the two general file system operations:
rename and stat.
Additionally I've removed the actionQueue for file system operations. They
are sent directly into the thread pool.
2009-05-25 13:17:35 +02:00
Ryan
58c13e5192
Namespace File stuff in node.fs
2009-05-21 12:49:41 +02:00
Ryan
0ef5c99973
Add http.ServerRequest.setBodyEncoding. Needs test still.
2009-05-20 10:17:07 +02:00
Ryan
1b54e3d87d
Change encoding setter/getter to setEncoding function.
2009-05-20 10:02:02 +02:00
Ryan
5e37dfca02
Clean up tests. Add docs.
2009-05-19 22:32:41 +02:00
Ryan
82e773630b
HTTP Client: add fix to allow TCP connection to reconnect.
2009-05-19 21:53:26 +02:00
Ryan
6a172d7119
Fix a bug in HTTP server when receiving half-closes.
2009-05-19 20:24:37 +02:00
Ryan
536eceaa2d
Debugging http. Add simple test. (Does not pass.)
2009-05-19 14:50:09 +02:00
Ryan
310eed03e0
Clean up readyState handling. Add test.
2009-05-18 13:53:39 +02:00
Ryan
73fb24f48d
Relatively large update to TCP API. No more "protocol".
...
Instead servers are passed a function which gets called on connection (like
in the original design) which has one argument, the connecting socket. The
user sets up callbacks on that. It's pretty much how I had it originally.
Encoding is now set via v8 getter/setter and can be changed dynamically.
The timeout for all sockets is fixed at 60 seconds for now. Need to fix
that.
2009-05-14 23:47:21 +02:00
Ryan
31ba3cde17
Rename TCP classes to sit in node hierarchy.
2009-05-14 20:34:14 +02:00
Ryan
de6036669d
Add p() like in Ruby.
2009-05-14 18:37:53 +02:00
Ryan
28f86c7aa8
update node.html
2009-05-14 17:36:25 +02:00
Ryan
30450388d6
update oi_socket - modify node code to match
2009-05-05 12:52:18 +02:00
Ryan
09c2ae5c3e
Slight change in tcp connection constructor
...
For server-side sockets, no longer pass the server object to the
js constructor. This is set later with SetAcceptor.
I think the change is a bit strage and convoluted but it allows one give
protocol /classes/ to the c++ constructors instead of protocol instances.
This is nice because derived classes (like HTTP) don't need to copy the
protocol instanciation code.
2009-05-04 12:08:13 +02:00
Ryan
5a071ad72f
Begin refactor of http.cc. Remove libebb add http_parser.
...
And most of http.cc was deleted.
2009-05-03 14:09:16 +02:00
Ryan
bb6057d9ad
rename Connection.disconnect -> Connection.close
2009-05-03 01:11:39 +02:00
Ryan
1713386580
add Connection::SendEOF. modify test accordingly.
2009-05-03 01:01:42 +02:00
Ryan
15d24d8002
Major refactor of network code
...
Here I massively change both the external and internal API of the TCP
sockets and servers.
This change introduces the concept of a protocol object like is found in
Twisted Python. I believe this allows for a much cleaner description of how
a socket behaves. What was once a single object "client" or "connection" is
now represented by two objects: a "connection" and a "protocol".
Well - I don't want to ramble too much because neither API is yet public or
documented. Look the diff of test/test-pingpong.js to see how things have
changed.
2009-05-02 16:34:24 +02:00
Ryan
3886e183fd
Add test for setInterval
2009-04-29 14:12:24 +02:00
Ryan
0f5170339c
remove process.{cc,h} process.exit() now exit()
...
the process object might return in the future but for now it is going away.
2009-04-29 11:09:32 +02:00
Ryan
cf1c58063e
Create a node namespace
...
Part of general reorganization.
2009-04-28 23:09:56 +02:00
Ryan
f17ecf20be
change localhost to 127.0.0.1 because macs suck
2009-04-23 19:04:01 +02:00
Ryan
a4593e3ebd
WAF: fix the debug variant.
...
problem is they both build by default. need a way to disable the debug variant.
2009-04-23 13:18:38 +02:00
Ryan
8514e0627a
improved ping pong test.
2009-04-23 01:14:11 +02:00
Ryan
e6d96e8e66
rename echoserver -> pingpong
2009-04-22 16:05:14 +02:00
Ryan
f3f9a08de1
beef up the echoserver test
2009-04-22 16:04:05 +02:00
Ryan
63ec0454d2
add echo test. remove debug printfs
2009-04-22 15:52:23 +02:00
Ryan
d105d88625
on_load -> onLoad
2009-04-21 16:30:47 +02:00
Ryan
5d57fa5060
clean up timers a bit
2009-04-21 16:24:56 +02:00
Ryan
a0f2b8a0c5
remove debug messages from module loading.
2009-04-21 14:38:55 +02:00
Ryan
408526a1c1
debugging/improving the module framework
2009-04-21 13:52:21 +02:00
Ryan
f5b2a8f072
remove old test files
2009-04-20 18:48:25 +02:00
Ryan
7baacb56a9
ensure socket closure in very old test scripts
2009-04-20 18:46:09 +02:00
Ryan
93f7f0dca0
reimplement module loading
...
still missing several important features and its mostly untested but the script
test/test-test.js is working and thats enough for now.
2009-04-20 02:55:08 +02:00
Ryan
e7dd20dc6e
add File.stat File.exists File.strerror
2009-04-18 10:58:41 +02:00
Ryan
dd691decd2
file system methods to be queued.
2009-04-17 18:54:29 +02:00
Ryan
c8e20fbf81
add file.read only. raw encoding right now.
2009-04-16 21:05:41 +02:00
Ryan
e303d950d9
add stdout stderr global file objects. remove node.blocking.print
2009-04-16 13:58:10 +02:00
Ryan
c0b90ca763
only store fd in javascript (not in c++)
2009-04-16 13:42:34 +02:00
Ryan
470c6342cc
Change symantics of file.open. Now takes a callback argument.
2009-04-16 13:20:35 +02:00
Ryan
7e1350f6e4
add file.write()
2009-04-16 11:37:44 +02:00
Ryan
63a9cd3897
everything is changed. i've waited much too long to commit.
...
this is awful. i'm sorry for being so messy.
2009-04-15 10:08:28 +02:00
Ryan
1e5de42a75
allow null host parameter to listen on localhost
2009-03-13 12:22:35 +01:00
Ryan
a8ac42384d
change HTTPServer constructor. Now: HTTPServer(host, port, onrequest);
2009-03-09 14:09:09 +01:00
Ryan
b4985d1a6e
working towards working keep-alive. need tests
2009-03-06 19:49:52 +01:00
Ryan
db618cb708
add minimal amount about HTTPServer to spec
2009-03-05 14:36:19 +01:00
Ryan
ab248e8422
add test/test_clearTimeout.rb
2009-03-04 12:04:04 +01:00
Ryan
8b71ba5e68
add test_setTimeout
...
Had to disable Init_tcp because it starts an oi_async thread pool and
prevents the node loop from exiting when no watchers remain. Not sure how
to deal with this problem in general because eventually we'll need the
thread pool.
2009-03-04 11:54:20 +01:00
Ryan
9e5eff3b27
add test/test_http_server_echo and 'make test'
2009-03-04 11:35:43 +01:00