Valentin Bartenev
7fe8f72364
HTTP parser: simplified nxt_http_parse_field_value().
...
There's no need in loop after 4ac474b68658.
Found by Coverity (CID 259713).
2018-01-25 10:31:22 +03:00
Sergey Kandaurov
771e9d3cc3
Fixed formatting in nxt_sprintf() and logging.
2018-01-24 15:16:33 +03:00
Sergey Kandaurov
67c64a99fb
Using size_t for the field width type of the "%*s" specifier.
2018-01-24 15:16:32 +03:00
Valentin Bartenev
477e8177b7
HTTP parser: restricting control chars in header fields values.
...
This also fixes an infinite loop here (found with honggfuzz).
2018-01-24 15:02:56 +03:00
Valentin Bartenev
d1f29ed77e
Python: fixed the "wsgi.errors" environment variable name.
...
This closes issue #76 on GitHub.
2018-01-19 19:45:11 +03:00
Valentin Bartenev
01ec9a5dba
Ability to validate configuration options with multiple types.
2018-01-18 15:52:44 +03:00
Max Romanov
2db8e586e5
Reduced duplication of validated app config options.
...
Common options moved to separate array. Application-specific arrays refers
to common options.
2018-01-18 09:08:25 +03:00
Max Romanov
c2918a0014
Introducing pretty NXT_CONF_VLDT_END macro.
2018-01-18 09:08:16 +03:00
Igor Sysoev
37a713c217
HTTP: fixed chunked response on 32-bit platforms.
2018-01-16 11:48:38 +03:00
Valentin Bartenev
0c38ff0e66
Checking for major HTTP version.
2018-01-15 20:50:20 +03:00
Valentin Bartenev
a073616fc3
Improved HTTP version representation.
2018-01-15 20:50:14 +03:00
Valentin Bartenev
3fb140d6d2
HTTP parser: improved error reporting.
2018-01-15 20:49:59 +03:00
Valentin Bartenev
84eba82bc8
Version bump.
2018-01-15 18:37:07 +03:00
Valentin Bartenev
845b373bda
Fixed reading of the rest of body, broken after 5817734dd9b9.
2018-01-12 21:36:24 +03:00
Igor Sysoev
059695eeed
HTTP: request body length was not passed to application.
...
The bug has appeared in changeset 5817734dd9b9.
2018-01-12 17:54:50 +03:00
Max Romanov
fa49d042a8
PHP: Terminating names with zero.
...
Fixing issue introduced in changeset 462:17a2c9b27b57 .
2018-01-12 16:37:42 +03:00
Max Romanov
aad4229cbc
Initializing script_name.start before using.
...
This makes gcc 4.4.6 happy.
2018-01-12 11:19:00 +03:00
Max Romanov
349717fb90
Changing relative php scripts paths to real ones.
...
This is required to run phpMyAdmin.
2018-01-11 22:14:20 +03:00
Igor Sysoev
c105988e51
Fixed DragonFly BSD shared memory implementation.
2018-01-11 17:13:58 +03:00
Igor Sysoev
2fa203f2da
HTTP: fixed large header buffers allocation and deallocation.
...
This closes #74 issue on GitHub.
2018-01-11 09:49:36 +03:00
Igor Sysoev
b09227fa5c
HTTP: request body was not passed to application.
...
The bug has appeared in changeset 5817734dd9b9.
2018-01-11 09:49:35 +03:00
Valentin Bartenev
e8aada94de
HTTP parser: allowing underscore in header field names.
2018-01-09 16:50:47 +03:00
Igor Sysoev
30a83a1159
Using correct pointer and size for memzero operation.
...
Found by Coverity (CID 215689).
2017-12-29 19:42:54 +03:00
Igor Sysoev
4c4981f992
Using correct pointer in test operation.
...
Found by Coverity (CID 215687).
2017-12-29 18:43:55 +03:00
Igor Sysoev
bcbe6df8af
Corrected allocation size of HTTP response header.
2017-12-29 18:43:54 +03:00
Igor Sysoev
965a95d602
Version bump.
2017-12-29 18:43:51 +03:00
Igor Sysoev
8492ba945b
Fixed Go package and PHP module building.
...
Go package and PHP module could not be built after changeset 5817734dd9b9.
2017-12-28 21:07:28 +03:00
Igor Sysoev
dbd7540a04
Removed duplicate declaration.
2017-12-28 20:50:49 +03:00
Igor Sysoev
dc47f02307
Removed duplicate declaration.
2017-12-28 20:12:19 +03:00
Igor Sysoev
795a244bd0
Disabled Nagle algorithm for keep-alive connections.
2017-12-28 20:12:13 +03:00
Igor Sysoev
ecba3d80f9
Fixing memory leak introduced in changeset 5817734dd9b9.
2017-12-28 20:08:15 +03:00
Igor Sysoev
9a6d3c5775
HTTP keep-alive connections support.
2017-12-28 16:01:06 +03:00
Igor Sysoev
497faf1b9a
Changed nxt_mp_retain() and nxt_mp_release() interfaces.
2017-12-28 16:01:06 +03:00
Max Romanov
b59535b22c
Removed unused variable assignment.
...
Found by Coverity (CID 215301).
2017-12-28 15:58:01 +03:00
Max Romanov
47bc1c53d6
Implementing worker stop after limits.requests.
2017-12-27 17:48:53 +03:00
Max Romanov
5196cf4d50
Rescheduling of pending request after configured timeout.
...
New optional configuration parameter introduced: limits.reschedule_timeout.
Default value 1 second. In the case when request is written to the port
socket 'in advance', it is called 'pending'.
On every completed request, the head of pending request is checked against
reschedule timeout. If this request waiting for execution longer than
timeout, it is cancelled, new port selected for this request.
2017-12-27 17:48:04 +03:00
Max Romanov
baa8c9387b
Fixing code style.
2017-12-27 17:47:42 +03:00
Max Romanov
bef2ec483e
Fixing application timeout.
...
Application timeout limits maximum time of worker response in processing
particular request. Not including the time required to start worker,
time in request queue etc.
2017-12-27 17:47:18 +03:00
Max Romanov
ab138c9166
Changing worker selection precedence.
...
This patch increase precedence of non-started worker over busy worker.
1. idle worker;
2. start new worker;
3. busy worker, but can accept request in advance;
2017-12-27 17:46:39 +03:00
Max Romanov
89c0f7c5db
Implementing the ability to cancel request before worker starts processing it.
2017-12-27 17:46:17 +03:00
Valentin Bartenev
45d08d5145
HTTP parser: introduced nxt_http_parse_fields().
2017-12-27 15:45:23 +03:00
Max Romanov
be36cf52c8
Introducing application 'atexit' hook.
...
Finalizing Python interpreter.
This closes #65 issue on GitHub.
2017-12-27 14:02:11 +03:00
Igor Sysoev
2ab29f6cc3
nxt_conn_close() should disable all pending write operations.
2017-12-26 17:31:37 +03:00
Valentin Bartenev
95a9cb94d5
HTTP parser: fixed memory overflow in the collisions test.
...
The level hash uses the NULL value as the indicator of a free entry in a bucket.
So, inserting a NULL value breaks the hash and can lead to a bucket overflow.
In case of the collision counter, the value wasn't initialized, since it's not
needed for the purpose of checking collisions. As a result, it might contain
any garbage from the stack and in some rare cases the value was NULL.
Now the value is initilized.
2017-12-26 17:18:57 +03:00
Valentin Bartenev
8830d73261
HTTP parser: reworked header fields handling.
2017-12-25 17:04:22 +03:00
Max Romanov
392abd03e5
Restoring apps in case of reconfiguration error.
2017-12-25 16:24:54 +03:00
Max Romanov
799cff5f3e
Introducing Unit version check in Go package.
...
To communicate with the Go program, Unit setup environment variable
named NXT_GO_PORTS with value contains Unit version, stream id to confirm
application is started, and Unit ports information. Go Unit package parses
this string and compares runtime version with compile time version. In case
of parse error or version mismatch, ListenAndServe() returns with the error.
2017-12-13 18:12:13 +03:00
Valentin Bartenev
67d72d46f7
HTTP parser: improved detection of corrupted request line.
2017-12-08 19:18:00 +03:00
Valentin Bartenev
20d720dfc5
HTTP parser: slightly improved readability of code.
...
As suggested by Igor Sysoev.
2017-12-08 19:18:00 +03:00
Valentin Bartenev
4be9774540
Fixed protocol version string handling in router.
2017-12-07 17:02:05 +03:00