summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)AuthorFilesLines
2020-04-16Merged with the default branch.1.17.0-1Andrei Belov85-1294/+2006
2020-04-16Added tag 1.17.0 for changeset 4b13438632bcValentin Bartenev1-0/+1
2020-04-16Generated Dockerfiles for Unit 1.17.0.1.17.0Valentin Bartenev8-8/+8
2020-04-16Added version 1.17.0 CHANGES.Valentin Bartenev2-0/+113
2020-04-16Using malloc/free for the http fields hash.Max Romanov9-52/+24
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-15Fixed memory leak occurring upon failure to accept a connection.Igor Sysoev2-12/+11
2020-04-15Fixed crash that occurs when idle connections are closed forcibly.Igor Sysoev3-35/+77
2020-04-15Disabled epoll error processing when socket events are inactive.Igor Sysoev1-0/+7
2020-04-14Completing chained shared memory buffers.Max Romanov1-3/+14
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-14Tests: added test with rescheduling requests.Andrei Zeliankou1-0/+32
2020-04-14Tests: minor fixes and style.Andrei Zeliankou16-175/+99
2020-04-10Resolving a racing condition while adding ports on the app's side.Max Romanov5-13/+48
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-08Controller: improved handling of unix domain control socket.Valentin Bartenev5-18/+90
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-08Controller: fixed cleaning up of control socket file in some cases.Valentin Bartenev1-6/+20
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-08Removed unused code related to testing of address binding.Valentin Bartenev7-31/+9
2020-04-08Controller: eliminated extra control socket's sockaddr copying.Valentin Bartenev1-11/+1
2020-04-08Node.js: fixing Server.listen() method.Max Romanov1-1/+11
This is required for Express framework compatibility. This closes #418 issue on GitHub.
2020-04-06Fixing 'find & add' racing condition in connected ports hash.Max Romanov4-32/+29
Missing error log messages added.
2020-04-03Tests: use "return" action in upstream tests.Andrei Zeliankou5-98/+101
2020-04-03Tests: added notification on "read_timeout" expiration.Andrei Zeliankou2-4/+30
2020-04-03Tests: minor fixes.Andrei Zeliankou3-9/+20
2020-04-01Fixed build with Clang 10, broken by 32578e837322.Valentin Bartenev1-1/+3
This silences the -Wimplicit-int-float-conversion warning.
2020-03-30Tests: added tests for rational numbers in upstream server weight.Andrei Zeliankou2-12/+98
2020-03-30Rational number support in upstream server weight.Igor Sysoev2-24/+38
2020-03-30Configuration: support for rational numbers.Valentin Bartenev8-170/+135
2020-03-30Fixing application process infinite loop.Max Romanov4-23/+33
Main process exiting before app process init may have caused hanging.
2020-03-30Handling change file message in libunit.Max Romanov3-2/+11
This is required for proper log file rotation action.
2020-03-30Attributing libunit logging function for arguments validation.Max Romanov4-10/+31
2020-03-27Tests: added tests for "location" option.Andrei Zeliankou1-0/+94
2020-03-27Tests: added tests for "return" action.Andrei Zeliankou4-270/+191
2020-03-27Tests: increase default "read_timeout" to 60s in message_read().Andrei Zeliankou1-1/+1
2020-03-21Implemented "location" option for "return" action.Valentin Bartenev5-2/+60
This allows to specify redirects: { "action": { "return": 301, "location": "https://www.example.com/" } }
2020-03-27Added nxt_is_complex_uri_encoded()/nxt_encode_complex_uri().Valentin Bartenev2-44/+158
2020-03-27Updated URI escaping table for better conformity with RFC 3986.Valentin Bartenev1-6/+4
Now '>', '<', '"', '^', '\', '}', '|', '{', and '`' are also escaped.
2020-03-27Implemented "return" action.Valentin Bartenev5-4/+96
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-27Initialization of the action object made more consistent.Valentin Bartenev1-3/+3
2020-03-25Tests: added tests for comments in JSON.Andrei Zeliankou1-0/+61
2020-03-25Tests: UTF-8 BOM test.Andrei Zeliankou1-0/+19
2020-03-25Configuration: fixed comments parsing.Valentin Bartenev1-1/+5
Unclosed multi-line comments and "/" at the end of JSON shouldn't be allowed.
2020-03-23Tests: increase default "read_timeout" value to 60s.Andrei Zeliankou2-15/+16
This change is necessary to avoid errors on slow hosts. Also slightly reworked argument passing to the recvall() function.
2020-03-23Tests: added notification on unsuccessful connect().Andrei Zeliankou1-1/+1
2020-03-23Tests: wait for unit.pid file before running tests.Andrei Zeliankou1-1/+4
Waiting for control.unit.sock was replaced by unit.pid due to current problem with race between connect() and listen() calls for control.unit.sock. This change should be reverted after fix.
2020-03-19Fixed filepath in the image checksum file.Konstantin Pavlov1-1/+1
2020-03-23Tests: rearranging functions in main.py.Andrei Zeliankou1-69/+69
2020-03-23Tests: terminate unitd process on exit().Andrei Zeliankou1-12/+14
2020-03-19Completing buffers immediatelyMax Romanov1-5/+2
This fixes crash introduced in 039b00e32e3d.
2020-03-19Completing request header buffers to avoid memory leak.Max Romanov3-22/+29
Before this fix, only persistent connection request buffers were completed. This issue was introduced in dc403927ab0b.
2020-03-19Tests: test_python_procman.py refactored.Andrei Zeliankou1-115/+58
2020-03-19Tests: fixed prerequisite in test_share_fallback.py.Andrei Zeliankou1-3/+3
2020-03-17Fixing body fd access racing condition.Max Romanov3-18/+32
To avoid closing the body fd prematurely, the fd value is moved from the request struct to the app link. The body fd should not be closed immediately after the request is sent to the application due to possible request rescheduling.