Commit Graph

418 Commits

Author SHA1 Message Date
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