summaryrefslogtreecommitdiffhomepage
path: root/src/nodejs (follow)
AgeCommit message (Collapse)AuthorFilesLines
2020-08-11Introducing the shared application port.Max Romanov1-13/+9
This is the port shared between all application processes which use it to pass requests for processing. Using it significantly simplifies the request processing code in the router. The drawback is 2 more file descriptors per each configured application and more complex libunit message wait/read code.
2020-08-11Libunit refactoring: port management.Max Romanov2-25/+23
- Changed the port management callbacks to notifications, which e. g. avoids the need to call the libunit function - Added context and library instance reference counts for a safer resource release - Added the router main port initialization
2020-08-07Node.js: correct port data memory release.Max Romanov1-1/+15
According to libuv documentation, uv_poll_t memory should be released in a callback function passed to uv_close(). Otherwise, the Node.js application process may crash at exit.
2020-04-08Node.js: fixing Server.listen() method.Max Romanov1-1/+11
This is required for Express framework compatibility. This closes #418 issue on GitHub.
2020-03-03Node.js: fixing x86 warning about the signed/unsigned comparison.Max Romanov1-2/+1
2020-01-28Node.js: suppress compilation warning.Max Romanov1-1/+1
2019-12-24Node.js: implementing output message drain using SHM_ACK feature.Max Romanov3-26/+188
ServerResponse.write() method tries to write data buffer using libunit and stores buffers to write in a Server-wide output queue, which is processed in response to SHM_ACK message from router. As a side effect 'drain' event implemented and socket.writable flag reflect current state.
2019-11-11Fixing libunit 'off by 2' issue in library.Max Romanov1-9/+12
Name and value in each header are 0-terminated, so additional 2 bytes should be allocated for them. There were several attempts to add these 2 bytes to headers in language modules, but some modules weren't updated. Also, adding these 2 bytes is specific to the implementation which may be changed later, so extending this mechanics to modules may cause errors.
2019-08-20Node.js: introducing websocket support.Max Romanov15-175/+2373
2019-08-06Node.js: returning "this" from writeHead() to allow chaining.Valentin Bartenev1-0/+2
In Node.js version 11.10.0 and later, the writeHead() function returns "this".
2019-06-17Node.js: packaging new nxt_napi.h.Max Romanov1-0/+1
File nxt_napi.h (introduced in 53533ba0097c) added into packaged files list. This closes #261 issue on GitHub.
2019-04-17Node.js: using low-case header names as key in req.headers.Max Romanov1-4/+17
Node.js modules (body-parser, row-body) search low-cased names ('content-length', 'content-type' etc.) to properly assemble request body. This closes #246 issue on GitHub.
2019-04-03Backed out changeset f74d4dd9c3db.Valentin Bartenev1-0/+8
This closes #240 issue on GitHub.
2019-04-02Removing unused variables and assignments.Max Romanov1-8/+5
Warnings introduced in 53533ba0097c commit.
2019-04-01Adding 'connection' to request as an alias to 'socket'.Max Romanov1-4/+11
Adding actual 'remoteAddress' and 'localAddress' into socket object. This closes #232 issue on GitHub.
2019-04-01Introducing close event to notify about server stop.Max Romanov2-0/+25
This closes #236 on GitHub. Thanks to 0xcdcdcdcd.
2019-04-01Adding syntax sugar.Max Romanov5-654/+882
With exceptions and overloads.
2019-03-11Style.Andrey Zelenkov1-1/+1
2019-02-22Improvement and unification of version processing in build scripts.Alexander Borisov1-1/+1
This also eliminates expressions that incompatible with BSD make, thus fixing installation of Node.js module on FreeBSD (broken by dace60fc4926).
2018-12-19Node.js: removed value checking for headers.Alexander Borisov1-8/+0
2018-12-19Node.js: removed unused _implicitHeader() function.Alexander Borisov1-5/+0
2018-12-19Node.js: added check for libunit version at compile time.Alexander Borisov2-6/+12
2018-12-19libunit: added generation of version header file.Alexander Borisov1-1/+1
2018-12-19Node.js: checking for exception after running JS code from C++.Alexander Borisov1-3/+20
2018-12-19Node.js: checking uniqueness of HTTP headers for different case.Alexander Borisov2-24/+62
2018-12-19Node.js: calling write callback asynchronously.Alexander Borisov1-1/+13
2018-12-19Node.js: style fixes.Alexander Borisov1-8/+10
No functional changes.
2018-12-19Node.js: changed the unit-http socket constructor.Alexander Borisov1-5/+10
Third-party file descriptors are not supported. Socket "readable" and "writable" options are set true by default.
2018-12-19Node.js: napi_call_function() replaced with napi_make_callback().Alexander Borisov2-27/+63
The sequence of napi_open_callback_scope(), napi_call_function(), and napi_close_callback_scope() functions calls executes the provided JS code and all functions enqueued by process.nextTick() and Promises during this execution.
2018-12-19Node.js: changed the 'data' event calling sequence for the request.Alexander Borisov1-10/+30
The problem is caused by Promises' inconsistency. The 'date' event could have been triggered before the user has started listening for it. To resolve the issue, we override the 'on' method of the request's emitter.
2018-12-19Node.js: buffering HTTP headers before writing the body.Alexander Borisov1-10/+13
2018-12-12Node.js: removed unused dependency.Valentin Bartenev1-4/+1
2018-11-15Node.js: npm package readme cleanup.Valentin Bartenev1-18/+2
2018-11-15Node.js: res.write() must return a bool value.Alexander Borisov1-1/+1
2018-11-15Node.js: fixed handling of response header fields.Alexander Borisov2-1/+26
This fixes two issues: - values for mutiple header fields with the same name passed as arrays were converted to string; - the type of field value wasn't preserved as required by specification.
2018-11-15Node.js: added correct exit processing.Alexander Borisov2-18/+43
Node.js processes didn't exit after the changes in b9f7635e6be2, as the quit command from port wasn't handled by the module.
2018-11-15Node.js: added reference count increment for the Unit object.Alexander Borisov2-0/+13
We increase the number to the Unit object so that it lives forever. This is necessary so that the garbage collector does not delete the Unit object.
2018-11-06Node.js: socket.js improvements.Andrey Zelenkov1-18/+20
- Fixed handling of the "options" parameter in Socket() constructor; - Now the connect() method returns "this"; - Deduplicated the address() method; - Added missing "callback" argument to the end() method; - Now the destroy() method returns "this"; - Added "timeout" argument type check in the setTimeout() method.
2018-11-01Node.js: fixed typo in naming rawHeaders() method of request.Andrey Zelenkov1-1/+1
2018-10-31Node.js: added async request execution.Alexander Borisov3-91/+173
2018-10-24Node.js: additional type check for response.setHeader value.Alexander Borisov1-6/+6
2018-10-23Added ability to publish Node.js module.Alexander Borisov3-2/+21
2018-10-03Added Node.js support.Alexander Borisov10-0/+1500