Commit Graph

1457 Commits

Author SHA1 Message Date
Max Romanov 5bfdebb9e4 Introducing Java Servlet Container beta. 2019-02-28 18:02:42 +03:00
Max Romanov ec7319d32c Various libunit fixes.
This patch contains various logging improvements and bugfixes found
during Java module development.
2019-02-28 15:52:36 +03:00
Max Romanov b92dc6036c Removing app data debug message.
This message produces too many noise in log and complicates analysis.
2019-02-28 14:37:39 +03:00
Max Romanov 0c917b4d34 Reusing fragmented message buffers.
Fragmented message non-mmap buffer chain not freed nor reused before
this fix.

This closes #206 on GitHub.
Thanks to 洪志道 (Hong Zhi Dao).
2019-02-28 13:39:31 +03:00
Andrey Zelenkov 4b92586530 Tests: "Host" header tests. 2019-02-27 20:41:30 +03:00
Andrey Zelenkov 8488666d60 Tests: routing. 2019-02-27 19:46:27 +03:00
Andrey Zelenkov bd77c9a4d2 Tests: read_timeout option introduced.
Also, increased default select() timeout from 1s to 5s.
2019-02-27 19:43:14 +03:00
Andrey Zelenkov 4de2c8b567 Tests: added "Host" and "Connetion" headers where necessary.
Also minor header organizing.
2019-02-27 19:15:02 +03:00
Alexander Borisov 379e4c75fd Perl: added processing for IO:Handle-like object.
The application can return the body as an IO:Handle-like object
without file descriptor.
2019-02-27 17:27:41 +03:00
Valentin Bartenev 5c9fe8c306 Added trailing zero to version string.
While it looks nicer without zero 3-rd version number, this should
improve interoperability.  Version string can be parsed or used for
sorting.  And it is easier to handle and less confusing when there
is constant number of version parts.

Moreover, NPM also expects version format with 3 parts.
So ".0" has already been used in Node.js module version.
2019-02-27 17:25:28 +03:00
Valentin Bartenev e929d08201 Fixed processing of SERVER_NAME after 77aad2c142a0.
Previously, the nxt_router_prepare_msg() function expected server host among
other headers unmodified.  It's not true anymore since normalization of the
Host header has been introduced in 77aad2c142a0.

The nxt_unit_split_host() function was removed.  It didn't work correctly with
IPv6 literals.  Anyway, after 77aad2c142a0 the port splitting is done in router
while Host header processing.
2019-02-27 17:25:07 +03:00
Valentin Bartenev a881c31abd Controller: added "routes" configuration. 2019-02-27 16:50:37 +03:00
Valentin Bartenev c24c0deb19 Controller: added "pass" configuration option. 2019-02-27 16:44:52 +03:00
Igor Sysoev d4ccaae900 Initial routing implementation. 2019-02-27 16:41:11 +03:00
Igor Sysoev 95c9bba33b Introduced nxt_memcpy_upcase(). 2019-02-26 19:48:44 +03:00
Igor Sysoev ce650ea0f7 Introduced nxt_conf_array_qsort(). 2019-02-26 19:48:41 +03:00
Igor Sysoev 547082171e Introduced nxt_conf_array_elements_count(). 2019-02-26 19:48:38 +03:00
Igor Sysoev 444b9ffea9 Keepalive mode is disabled on HTTP header parsing errors. 2019-02-26 19:12:16 +03:00
Valentin Bartenev ce6ce15c20 Fixed violation of the strict aliasing rules in 5d0edd35c4ce.
In order to reduce number of operations over rb-tree and process them in
batches simultaneously, all the timers changes are temporary stored in array.
While processing of these changes, the same memory is also used for storing
pointers to postpone timers adding.

As the same block of memory has been referenced by two different types of
pointers (nxt_timer_change_t * and nxt_timer_t **), some compilers may reorder
operations with these pointers and produce broken code.  See ticket #221 on
GitHub for a particular case.

Now the same "nxt_timer_change_t" structure is used in both cases.

Also, reverted the -fno-strict-aliasing flag, which has been introduced in
ef76227ec159 as a workaround for this issue.
2019-02-26 17:42:20 +03:00
Andrei Belov aa7478267a Packages: yet another fix added, missed in a7af31b69692. 2019-02-26 14:53:28 +03:00
Andrei Belov 79e3185f33 Packages: fixed packages build, broken in 00d8049418cf. 2019-02-26 14:39:08 +03:00
Max Romanov bd1eb7b502 RPC error message size fixed.
In case of RPC error, special error message passed to handler.
Field 'size' expected to be 0 in this case because in contains fake
empty buffer.
2019-02-25 18:09:37 +03:00
Valentin Bartenev d8c0a0dbe2 Disabled useless code in nxt_router_listen_socket_error().
It doesn't do anything useful, among creating a JSON message and logging it
to debug log.  Besides that it causes segmentation fault if the RPC handler
is triggered with an empty buffer due to exiting of the main process.
2019-02-25 15:10:44 +03:00
Valentin Bartenev c5563d142d Removed surplus check for NUL in nxt_http_validate_host().
Such header fields are already rejected by HTTP parser.
2019-02-23 14:48:33 +03:00
Alexander Borisov 608e09e9de Improvement and unification of version processing in build scripts.
This also eliminates expressions that incompatible with BSD make, thus fixing
installation of Node.js module on FreeBSD (broken by dace60fc4926).
2019-02-22 16:31:44 +03:00
Igor Sysoev c96b2baca5 TLS certificates should be freed per listener.
This fixes memory leak if configuration uses more than one TLS cerificate.
2019-02-22 17:32:38 +03:00
Sergey Kandaurov 3280b826e3 Initializing incoming buffer queue in a proper place.
In case nxt_unit_tracking_read() failed, execution would jump to the error path,
where it could try to release buffers from uninitialized yet incoming_buf queue.
2019-02-21 16:30:59 +03:00
Andrey Zelenkov 499096a55a Tests: one more alert skipped in test_json_application_many. 2019-02-20 20:46:23 +03:00
Andrey Zelenkov 955050aea3 Tests: skip sendmsg()/recvmsg() alerts for all tests.
Currently, these alerts may appear in the log when any application exits.
2019-02-20 20:28:29 +03:00
Andrey Zelenkov 09fb847cc7 Tests: removed test_http_header_transfer_encoding_chunked. 2019-02-20 20:24:05 +03:00
Andrey Zelenkov b2ca342902 Tests: JSON array allowed. 2019-02-20 20:20:02 +03:00
Andrey Zelenkov ac10bf8c7b Tests: fixed ports range. 2019-02-20 20:19:55 +03:00
Valentin Bartenev 2d4697dbbe Validation and normalization of request host. 2019-02-19 20:25:25 +03:00
Igor Sysoev acb5b0aad7 Ignoring HUP signal in main process. 2019-02-18 18:34:20 +03:00
Igor Sysoev bb11e9036f Fixed memory leak on response body sending failure. 2019-02-18 17:28:55 +03:00
Valentin Bartenev 2a6b54c230 Rejecting requests with duplicate "Content-Length". 2019-02-18 16:51:30 +03:00
Andrei Belov 1ba49d9250 Packages: added "-fno-strict-aliasing" flag on CentOS 6 x86_64.
Closes #221 on GitHub.
2019-02-14 17:21:37 +03:00
Andrei Belov 43ad6be2f0 Packages: removed unit-perl on CentOS 6.
CentOS 6 has Perl version 5.10, which is unsupported by Unit.
2019-02-14 17:21:36 +03:00
Andrey Zelenkov ab40732c08 Tests: added tests for "Content-Length" header. 2019-02-14 16:09:58 +03:00
Andrey Zelenkov 0e5aaf60d4 Tests: headers with equal header fields allowed. 2019-02-14 16:09:54 +03:00
Andrey Zelenkov 7ce9f61cb6 Tests: minor fixes. 2019-02-14 16:09:19 +03:00
Valentin Bartenev 0f008918b3 Merged with the 1.7 branch. 2019-02-11 15:42:16 +03:00
Valentin Bartenev fc2af29bd3 Added tag 1.7.1 for changeset 0f04ef991fbc 2019-02-07 17:48:13 +03:00
Valentin Bartenev 6680fd5b8c Generated Dockerfiles for Unit 1.7.1. 2019-02-07 17:46:46 +03:00
Valentin Bartenev 9a9277b227 Added version 1.7.1 CHANGES. 2019-02-07 17:46:46 +03:00
Valentin Bartenev a2cbe890a1 Rejecting requests with invalid "Content-Length". 2019-02-07 17:40:27 +03:00
Valentin Bartenev 83dd67d216 Rejecting requests with invalid "Content-Length". 2019-02-07 17:40:27 +03:00
Andrey Zelenkov d60fbc6d44 Tests: large configuration tests. 2019-01-28 17:17:23 +03:00
Andrey Zelenkov 7dddfe2143 Tests: added test for reading body from IO::Handle-like object. 2019-01-28 17:16:50 +03:00
Andrey Zelenkov eced6bc972 Tests: removed blocking mode customization for sockets.
This customization was added in 0e12b17e512d and left unused.
Also, set blocking mode by default for all sockets.
2019-01-28 15:11:50 +03:00