Commit Graph

475 Commits

Author SHA1 Message Date
Andrey Zelenkov
949ba262cc Style fixes. 2018-02-07 15:34:42 +03:00
Max Romanov
d2c85a2d9e Fixed processing of application response in router.
If the first buffer contained only header and there were other buffers in chain,
those buffers were not processed.  In particular, this broke Perl application
responses with empty body.
2018-02-07 13:47:04 +03:00
Alexander Borisov
79259d1ebd Perl: added more checks for 'body' variable 2018-02-06 21:13:57 +03:00
Andrey Zelenkov
b4e467e669 Fixed configuration checks for "max" property. 2018-02-06 20:31:48 +03:00
Max Romanov
f7195e7016 Fixed typo in assertion statement introduced in 4979fe09d9cd.
Found by Coverity (CID 260375).
2018-02-02 14:08:18 +03:00
Alexander Borisov
960962ddce Added Perl support. 2018-01-31 15:47:00 +03:00
Max Romanov
9cd4fdbdb7 Introducing extended app process management.
- Pre-fork 'processes.spare' application processes;
- fork more processes to keep 'processes.spare' idle processes;
- fork on-demand up to 'processes.max' count;
- scale down idle application processes above 'processes.spare' after
  'processes.idle_timeout';
- number of concurrently started application processes also limited by
  'processes.spare' (or 1, if spare is 0).
2018-01-29 16:17:36 +03:00
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