Andrei Zeliankou
ce4a2bbd05
Tests: style.
2020-05-15 04:20:56 +01:00
Andrei Zeliankou
cf73fb8093
Tests: test_proxy_invalid simplified.
2020-05-15 04:20:45 +01:00
Axel Duch
26f407e24a
Tests: decode uri and args.
2020-05-14 12:29:22 +02:00
Axel Duch
ee1e248f4b
Router: decode uri and args.
2020-05-14 12:29:06 +02:00
Valentin Bartenev
376d758dd7
PHP: implemented "targets" option.
...
This allows to specify multiple subsequent targets inside PHP applications.
For example:
{
"listeners": {
"*:80": {
"pass": "routes"
}
},
"routes": [
{
"match": {
"uri": "/info"
},
"action": {
"pass": "applications/my_app/phpinfo"
}
},
{
"match": {
"uri": "/hello"
},
"action": {
"pass": "applications/my_app/hello"
}
},
{
"action": {
"pass": "applications/my_app/rest"
}
}
],
"applications": {
"my_app": {
"type": "php",
"targets": {
"phpinfo": {
"script": "phpinfo.php",
"root": "/www/data/admin",
},
"hello": {
"script": "hello.php",
"root": "/www/data/test",
},
"rest": {
"root": "/www/data/example.com",
"index": "index.php"
},
}
}
}
}
2020-05-14 13:15:01 +03:00
Valentin Bartenev
0174c971b5
Configuration: URI encoding in the "pass" option.
...
This is useful to escape "/" in path fragments. For example, in order
to reference the application named "foo/bar":
{
"pass": "applications/foo%2Fbar"
}
2020-05-14 13:15:00 +03:00
Andrei Zeliankou
d803ec39bc
Tests: added respawn tests.
2020-05-12 17:59:47 +01:00
Max Romanov
3ec72362b9
Waiting for router instead of reporting to user on config update.
2020-05-12 16:25:24 +03:00
Max Romanov
50f9816daa
Blocking config change when applying the initial router config.
2020-05-12 16:25:16 +03:00
Valentin Bartenev
f291f24938
Version bump.
2020-05-12 11:15:03 +03:00
Andrei Zeliankou
6a9a4fe0d4
Tests: introduced module version specification in prerequisites.
2020-04-24 05:08:56 +01:00
Andrei Belov
af9392af1f
Packages: added Ubuntu 20.04 "focal" support.
2020-04-23 19:55:19 +03:00
Andrei Zeliankou
8f6e6086cb
Tests: skips adjusted.
2020-04-20 14:04:55 +01:00
Valentin Bartenev
9877087756
Added tag 1.17.0 for changeset 4b13438632bc
2020-04-16 18:21:09 +03:00
Valentin Bartenev
4d62989f5c
Generated Dockerfiles for Unit 1.17.0.
2020-04-16 17:49:09 +03:00
Valentin Bartenev
e377820b6c
Added version 1.17.0 CHANGES.
2020-04-16 17:49:09 +03:00
Max Romanov
6bda9b5eeb
Using malloc/free for the http fields hash.
...
This is required due to lack of a graceful shutdown: there is a small gap
between the runtime's memory pool release and router process's exit. Thus, a
worker thread may start processing a request between these two operations,
which may result in an http fields hash access and subsequent crash.
To simplify issue reproduction, it makes sense to add a 2 sec sleep before
exit() in nxt_runtime_exit().
2020-04-16 17:09:23 +03:00
Igor Sysoev
ee62736a11
Fixed memory leak occurring upon failure to accept a connection.
2020-04-15 15:10:14 +03:00
Igor Sysoev
04143c8c7e
Fixed crash that occurs when idle connections are closed forcibly.
2020-04-15 14:54:09 +03:00
Igor Sysoev
e616d0915c
Disabled epoll error processing when socket events are inactive.
2020-04-15 14:54:09 +03:00
Max Romanov
9a422b8984
Completing chained shared memory buffers.
...
After 41331471eee7 completion handlers should complete next buffer in chain.
Otherwise buffer memory may leak.
Thanks to Peter Tkatchenko for reporing the issue and testing fixes.
2020-04-14 16:11:13 +03:00
Andrei Zeliankou
3c58a4bfc1
Tests: added test with rescheduling requests.
2020-04-14 03:02:16 +01:00
Andrei Zeliankou
0bfa09dfa0
Tests: minor fixes and style.
2020-04-14 02:35:04 +01:00
Max Romanov
58cc13ab29
Resolving a racing condition while adding ports on the app's side.
...
An earlier attempt (ad6265786871) to resolve this condition on the
router's side added a new issue: the app could get a request before
acquiring a port.
2020-04-10 16:21:58 +03:00
Valentin Bartenev
c7f5c1c664
Controller: improved handling of unix domain control socket.
...
One of the ways to detect Unit's startup and subsequent readiness to accept
commands relies on waiting for the control socket file to be created.
Earlier, it was unreliable due to a race condition between the client's
connect() and the daemon's listen() calls after the socket's bind() call.
Now, unix domain listening sockets are created with a nxt_listen_socket_create()
call as follows:
s = socket();
unlink("path/to/socket.tmp")
bind(s, "path/to/socket.tmp");
listen(s);
rename("path/to/socket.tmp", "path/to/socket");
This eliminates a time-lapse when the socket file is already created but nobody
is listening on it yet, which therefore prevents the condition described above.
Also, it allows reliably detecting whether the socket is being used or simply
wasn't cleaned after the daemon stopped abruptly. A successful connection to
the socket file means the daemon has been started; otherwise, the file can be
overwritten.
2020-04-08 15:15:24 +03:00
Valentin Bartenev
a6d9efcee1
Controller: fixed cleaning up of control socket file in some cases.
...
Previously, the unix domain control socket file might have been left
in the file system after a failed nxt_listen_socket_create() call.
2020-04-08 15:15:24 +03:00
Valentin Bartenev
555d595f38
Removed unused code related to testing of address binding.
2020-04-08 15:15:24 +03:00
Valentin Bartenev
27c1e26856
Controller: eliminated extra control socket's sockaddr copying.
2020-04-08 15:15:24 +03:00
Max Romanov
ce53d6bdb1
Node.js: fixing Server.listen() method.
...
This is required for Express framework compatibility.
This closes #418 issue on GitHub.
2020-04-08 14:44:53 +03:00
Max Romanov
792ef9d3c7
Fixing 'find & add' racing condition in connected ports hash.
...
Missing error log messages added.
2020-04-06 16:52:11 +03:00
Andrei Zeliankou
a49023229e
Tests: use "return" action in upstream tests.
2020-04-03 01:49:18 +01:00
Andrei Zeliankou
d7aa514d6a
Tests: added notification on "read_timeout" expiration.
2020-04-03 01:46:59 +01:00
Andrei Zeliankou
2bb8b3d88a
Tests: minor fixes.
2020-04-03 01:03:26 +01:00
Valentin Bartenev
be943c9fd4
Fixed build with Clang 10, broken by 32578e837322.
...
This silences the -Wimplicit-int-float-conversion warning.
2020-04-01 18:33:48 +03:00
Andrei Zeliankou
5954839773
Tests: added tests for rational numbers in upstream server weight.
2020-03-30 18:44:50 +01:00
Igor Sysoev
01e957ef64
Rational number support in upstream server weight.
2020-03-30 19:47:01 +03:00
Valentin Bartenev
68c6b67ffc
Configuration: support for rational numbers.
2020-03-30 19:37:58 +03:00
Max Romanov
0935630cba
Fixing application process infinite loop.
...
Main process exiting before app process init may have caused hanging.
2020-03-30 14:18:51 +03:00
Max Romanov
ab7b42a072
Handling change file message in libunit.
...
This is required for proper log file rotation action.
2020-03-30 14:18:41 +03:00
Max Romanov
82b899b136
Attributing libunit logging function for arguments validation.
2020-03-30 14:08:20 +03:00
Andrei Zeliankou
f94e31b294
Tests: added tests for "location" option.
2020-03-27 17:29:45 +00:00
Andrei Zeliankou
6e5b5d2a0b
Tests: added tests for "return" action.
2020-03-27 15:50:09 +00:00
Andrei Zeliankou
5f2d07019c
Tests: increase default "read_timeout" to 60s in message_read().
2020-03-27 15:48:39 +00:00
Valentin Bartenev
c63b498f94
Implemented "location" option for "return" action.
...
This allows to specify redirects:
{
"action": {
"return": 301,
"location": "https://www.example.com/ "
}
}
2020-03-21 01:39:00 +03:00
Valentin Bartenev
35d6f84426
Added nxt_is_complex_uri_encoded()/nxt_encode_complex_uri().
2020-03-27 17:22:52 +03:00
Valentin Bartenev
d4b4cb0438
Updated URI escaping table for better conformity with RFC 3986.
...
Now '>', '<', '"', '^', '\', '}', '|', '{', and '`' are also escaped.
2020-03-27 17:22:52 +03:00
Valentin Bartenev
8d727774e3
Implemented "return" action.
...
The "return" action can be used to immediately generate a simple HTTP response
with an arbitrary status:
{
"action": {
"return": 404
}
}
This is especially useful for denying access to specific resources.
2020-03-27 17:22:52 +03:00
Valentin Bartenev
5f9c4754cb
Initialization of the action object made more consistent.
2020-03-27 17:22:52 +03:00
Andrei Zeliankou
8532cf6ae6
Tests: added tests for comments in JSON.
2020-03-25 19:40:08 +00:00
Andrei Zeliankou
2e4ad9fbc0
Tests: UTF-8 BOM test.
2020-03-25 19:31:42 +00:00