Commit Graph
100 Commits
Author SHA1 Message Date
Valentin Bartenev 8d844bc2aa Controller: certificates storage interface. 2018-09-20 15:27:08 +03:00
Valentin Bartenev 2dfd8ffc2f Deduplicated string value initializations. 2018-09-20 15:27:06 +03:00
Valentin Bartenev 353db6f361 Fixed more typos.
Thanks to 洪志道 (Hong Zhi Dao).
2018-09-18 16:28:24 +03:00
Valentin Bartenev 4bc7a23ecf Fixed spelling in a comment.
This closes #161 issue on GitHub.
Thanks to 洪志道 (Hong Zhi Dao).
2018-09-10 14:55:15 +03:00
Valentin Bartenev 941616f893 Returning error for "make tests" when "--tests" wasn't configured. 2018-08-08 18:43:46 +03:00
Valentin Bartenev 4b67de4bbb Removed implicit call of nxt_thread() in nxt_thread_tid().
Explicit is better than implicit © The Zen of Python.

The nxt_thread_tid(NULL) call was used only twice in the code
and such behaviour was specific to nxt_thread_tid() function.
2018-07-27 17:52:21 +03:00
Valentin Bartenev de885e10cb Fixed configure process with non-default locale.
Overriding LANG might not work, since it has less precedence than LC_* settings.
LC_ALL has the highest precedence.

This should resolve issue #121 on GitHub.
2018-07-23 19:21:33 +03:00
Valentin Bartenev 7bdbb2cf2a Version bump. 2018-07-16 16:33:06 +03:00
Valentin Bartenev 92a7d9f0c6 Added tag 1.3 for changeset b3cf22b8a17e 2018-07-13 15:15:22 +03:00
Valentin Bartenev 604a904a47 Generated Dockerfiles for Unit 1.3. 2018-07-13 14:45:08 +03:00
Valentin Bartenev a1bf265d52 Added version 1.3 CHANGES. 2018-07-13 14:45:08 +03:00
Valentin Bartenev 8fd32c9394 Removed unused "nxt_app_header_field_t" structure.
It's not used since 3b77edf46701.
2018-07-11 16:53:11 +03:00
Valentin Bartenev 1abdcfb2d8 Controller: added "settings" configuration object.
It has the following structure and default values:

  {
      "http": {
          "header_read_timeout": 30,
          "body_read_timeout": 30,
          "send_timeout": 30,
          "idle_timeout": 180,
          "max_body_size": 8388608
      }
  }
2018-07-09 20:34:51 +03:00
Valentin Bartenev 5a05f569b7 Router: increased HTTP connection related limits. 2018-07-09 20:34:51 +03:00
Valentin Bartenev 7e3de003c7 PHP: fixed request body processing.
The implementation of module was based on the assumption that PHP reads request
body and headers in the particular order.  For the POST request the body goes
before headers and vice versa for all other requests.

But as it appeared later, this order is unspecified and depends on many factors,
including the particular code of PHP application.  Among other factors those
can affect ordering:

 - presence of "Content-Type" header;
 - "variables_order" php.ini setting;
 - "enable_post_data_reading" php.ini setting;
 - reading php://input by application;

and this list can be incomplete.

As a temporary workaround, request body now is always put before headers and it
is gracefully skipped whenever PHP wants to get headers.

This closes #144 issue on GitHub.
2018-07-05 16:43:45 +03:00
Valentin Bartenev 234deb51f4 PHP: fixed setting of individual configuration options.
The previous method changed PHP options only for the first request.
On the request completion the options were rolled back.

This closes #145 issue on GitHub.
2018-07-03 17:12:47 +03:00
Valentin Bartenev 11cecce114 HTTP parser: relaxed checking of fields values.
Allowing characters up to 0xFF doesn't conflict with RFC 7230.
Particularly, this make it possible to pass unencoded UTF-8 data
through HTTP headers, which can be useful.
2018-07-03 15:18:16 +03:00
Valentin Bartenev 0366bfad6d Fixed error message about "spare" value. 2018-07-02 18:19:00 +03:00
Valentin Bartenev 145d895430 Controller: fixed handling of zero Content-Length. 2018-07-02 16:36:59 +03:00
Valentin Bartenev 42e1d8e3b2 Packages: tar building functionality moved into pkg/Makefile. 2018-06-27 18:30:49 +03:00
Valentin Bartenev 1a52d876f7 Introduced nxt_length() macro. 2018-06-25 16:51:47 +03:00
Valentin Bartenev af31012815 More effective implementation of nxt_popcount().
This method requires as many iterations as there are set bits,
while the previous one has to shift up to the position of the
highest bit.
2018-06-21 16:40:02 +03:00
Valentin Bartenev e96374bfa1 Version bump. 2018-06-13 15:42:42 +03:00
Valentin Bartenev 0f0fb35620 Added tag 1.2 for changeset fbe7f5a3867e 2018-06-07 17:48:45 +03:00
Valentin Bartenev b1bdf309e2 Generated Dockerfiles for Unit 1.2. 2018-06-07 17:46:46 +03:00
Valentin Bartenev 9dd0fa87ad Added version 1.2 CHANGES. 2018-06-07 16:43:37 +03:00
Valentin Bartenev 8f278a5fed PHP: added setting of individual configuration options. 2018-06-07 16:17:32 +03:00
Valentin Bartenev 388390888b PHP: added setting of php.ini configuration file path. 2018-06-07 16:17:31 +03:00
Valentin Bartenev 771dc2f55e Exported functions for accessing configuration values. 2018-06-07 16:17:30 +03:00
Valentin Bartenev ceeb301881 Go: specifying command line arguments to the executable.
This closes #110 issue on GitHub.
2018-06-06 16:53:35 +03:00
Valentin Bartenev d7e6e2bd8c Configuration of environment variables for application processes. 2018-05-28 20:55:23 +03:00
Valentin Bartenev 3e8dbfe5ff Added SERVER_SOFTWARE request meta-variable. 2018-05-21 16:14:24 +03:00
Valentin Bartenev 10898568a3 Version bump. 2018-04-27 16:48:14 +03:00
Valentin Bartenev 4814fa7efe Added tag 1.1 for changeset 3f710b55c226 2018-04-26 18:33:11 +03:00
Valentin Bartenev 472e9b2a24 Generated Dockerfiles for Unit 1.1. 2018-04-26 18:31:13 +03:00
Valentin Bartenev 62a89eed60 Added version 1.1 CHANGES. 2018-04-26 18:30:06 +03:00
Valentin Bartenev d1b0f74550 Improved wording in CHANGES. 2018-04-26 16:47:55 +03:00
Valentin Bartenev 17160e9352 Python: added a missing slash in the path to "pyenv.cfg".
This closes #115 issue on GitHub.
2018-04-25 15:11:01 +03:00
Valentin Bartenev 749f7c0340 Support for PEP 405 virtual environments.
This closes #96 issue on GitHub.
2018-04-24 20:49:36 +03:00
Valentin Bartenev 5371891492 Fixed segfault when two modules have the same type and version.
The bug appeared in 217e48a3b091.
This closes #104 issue on GitHub.
2018-04-20 23:57:46 +03:00
Valentin Bartenev a20830ff55 Router: fixed race condition while access log reopening.
In order to reopen access log, the router process creates a memory pool
and allocates a buffer to send RPC message for the main process.

Previously, the memory pool was destroyed when RPC response handler was
called.  It appeared, that the buffer completion handler could be not
triggered by that time and still remained in a queue.

Now the memory pool is destroyed only after both events are happen.
2018-04-19 19:48:58 +03:00
Valentin Bartenev b06a0c95d0 Removed duplicating socket address parsing function.
This also fixes #101 issue on GitHub.  The function previously used to
parse IPv6 address of control socket was broken.  Now the working function
is used instead.
2018-04-18 17:28:22 +03:00
Valentin Bartenev 54ccb32333 Added missing cleanup when nxt_port_socket_write() failed. 2018-04-18 17:28:04 +03:00
Valentin Bartenev ab4f867996 Added missing checks if nxt_port_rpc_register_handler() failed.
This closes #97 issue on GitHub.
Thanks to 洪志道 (Hong Zhi Dao).
2018-04-17 21:13:43 +03:00
Valentin Bartenev 555141f798 Improved "unitd" command line help. 2018-04-13 20:07:02 +03:00
Valentin Bartenev 115949c50f Version bump. 2018-04-13 19:10:15 +03:00
Valentin Bartenev 1c19c6f1ad Added tag 1.0 for changeset 5870dd420309 2018-04-12 19:50:37 +03:00
Valentin Bartenev 8912dea621 Generated Dockerfiles for Unit 1.0. 2018-04-12 19:47:37 +03:00
Valentin Bartenev 32eb649e7c Added version 1.0 CHANGES. 2018-04-12 19:47:33 +03:00
Valentin Bartenev 946cfa32a8 Version bump. 2018-04-12 19:39:25 +03:00
Valentin Bartenev 07b554c2b4 Configure scripts cleanup.
Thanks to 洪志道 (Hong Zhi Dao).
2018-04-11 18:29:48 +03:00
Valentin Bartenev c610b35649 Controller: added "/config" prefix for the configuration object. 2018-04-11 18:23:58 +03:00
Valentin Bartenev da61cfd98b Access log reopening. 2018-04-11 18:23:58 +03:00
Valentin Bartenev 204c394721 Initial access log support. 2018-04-11 18:23:33 +03:00
Valentin Bartenev dc75c83950 Fixed pipelined request processing, broken by 9e16499b63f0. 2018-04-11 12:49:58 +03:00
Valentin Bartenev 41317e37da HTTP parser: saving partial method.
This is useful for log purposes.
2018-04-10 16:51:22 +03:00
Valentin Bartenev 8d697e8004 HTTP parser: saving unsupported version.
This is useful for log purposes.
2018-04-10 16:51:22 +03:00
Valentin Bartenev b1b9c78362 HTTP parser: correct "target" for partial or invalid request line. 2018-04-10 16:51:22 +03:00
Valentin Bartenev eb51264710 Processing of partially parsed HTTP header.
This is useful for log purposes.
2018-04-09 19:16:19 +03:00
Valentin Bartenev 96927e7d0c Controller: fixed a memory leak when PUT operation failed.
Thanks to 洪志道 (Hong Zhi Dao).
2018-04-08 14:08:06 +03:00
Valentin Bartenev c0a423aa74 Fixed NXT_INT64_T_HEXLEN.
This closes #89 issue on GitHub.
Thanks to hongzhidao.
2018-04-05 15:54:08 +03:00
Valentin Bartenev d15b4ca906 Style. 2018-04-05 15:49:41 +03:00
Valentin Bartenev 0665896a55 Style: capitalized letters in hexadecimal literals. 2018-04-04 18:13:05 +03:00
Valentin Bartenev f4cb476feb Version bump. 2018-04-02 17:42:36 +03:00
Valentin Bartenev 9844ecd9ec Added tag 0.7 for changeset d2fcec5b0fa3 2018-03-22 21:09:37 +03:00
Valentin Bartenev 157120bfd1 Generated Dockerfiles for Unit 0.7. 2018-03-22 21:07:06 +03:00
Valentin Bartenev 228d8518c7 Added version 0.7 CHANGES. 2018-03-22 21:07:06 +03:00
Valentin Bartenev e254eecb77 PHP: fixed segfault on initialization.
PHP SAPI can call log handler while initializing.  Particularly, that happens
if there's a problem in loading some extension specified in php.ini file.
On this stage server context is empty, so now nxt_thread_log_error() is used.
2018-03-16 18:19:48 +03:00
Valentin Bartenev 701a54c177 HTTP parser: excluding leading and trailing tabs from field values.
As required by RFC 7230.
2018-03-15 21:08:29 +03:00
Valentin Bartenev 0b628bfe48 HTTP parser: allowing tabs in field values as per RFC 7230. 2018-03-15 21:07:57 +03:00
Valentin Bartenev 3d2f85d9ca HTTP parser: restricting allowed characters in fields values.
According to RFC 7230 only printable 7-bit ASCII characters are allowed
in field values.
2018-03-15 21:07:56 +03:00
Valentin Bartenev 5a003df1fe HTTP parser: fixed parsing of field values ending with space.
This closes #82 issue on GitHub.
2018-03-15 20:52:39 +03:00
Valentin Bartenev f81fa2a921 Python: safety checks for request processing context.
An application can store request related functions and mistakenly call them
outside of request processing.  Previously this resulted in segmentation
fault due to unset nxt_python_run_ctx.  Now an exception will be raised.
2018-03-15 17:11:13 +03:00
Valentin Bartenev cf2767625f Python: fixed crash if start_response() is called inside iteration.
The start_response() uses nxt_python_run_ctx, but it was unset right
after the application call.
2018-03-15 17:10:24 +03:00
Valentin Bartenev bebc5845f8 Capitalization in the "Server" field. 2018-03-13 20:32:47 +03:00
Valentin Bartenev 912a49c609 Reduced number of critical log levels. 2018-03-05 17:32:50 +03:00
Valentin Bartenev 27b00629e1 Fixed race condition while discovering modules.
Previously, the discovery process might exit before the main process
received a list of available modules.
2018-02-14 16:33:35 +03:00
Valentin Bartenev 9646772a00 HTTP: the Date response header. 2018-02-12 16:58:40 +03:00
Valentin Bartenev dc50773e51 Version bump. 2018-02-12 16:58:38 +03:00
Valentin Bartenev 582fd34f35 Added tag 0.6 for changeset 88831b81e384 2018-02-09 19:24:46 +03:00
Valentin Bartenev 87f0dce1f6 Generated Dockerfiles for Unit 0.6. 2018-02-09 19:07:55 +03:00
Valentin Bartenev 061343520d Added version 0.6 CHANGES. 2018-02-09 19:07:55 +03:00
Valentin Bartenev 24d07cfdd2 Made nxt_assert() statements to be compiled only with debug. 2018-02-09 19:07:55 +03:00
Valentin Bartenev fc496c19ac Changed the default number of spare processes to 0. 2018-02-09 19:06:53 +03:00
Valentin Bartenev 9d683d37b1 Fixed starting of applications with specified version.
The "type" option can contain version number that need to be cut off before
calling nxt_app_parse_type().

The bug was introduced in 4979fe09d9cd.
2018-02-09 19:06:53 +03:00
Valentin Bartenev c890f53d10 Version bump. 2018-02-09 19:06:53 +03:00
Valentin Bartenev 7daf2cbfef Added tag 0.5 for changeset 1ba4d13d222b 2018-02-08 19:11:53 +03:00
Valentin Bartenev 01c6f149a6 Generated Dockerfiles for Unit 0.5. 2018-02-08 18:59:02 +03:00
Valentin Bartenev 40a360b640 Added version 0.5 CHANGES. 2018-02-08 18:42:51 +03:00
Valentin Bartenev 31f72401d9 Fixed reading of the rest of body, again.
The last attempt in ee5f278e8c81 wasn't enough.
2018-02-07 18:17:41 +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
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
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
Valentin Bartenev e8aada94de HTTP parser: allowing underscore in header field names. 2018-01-09 16:50:47 +03:00