summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)AuthorFilesLines
2019-09-19Packaging: revert DEFAULT_RELEASE back to 1.1.11.0-1Konstantin Pavlov3-3/+3
2019-09-19Added tag 1.11.0-1 for changeset 282c8f9fe43cKonstantin Pavlov1-0/+1
2019-09-19Merged with the default branch.Konstantin Pavlov200-922/+20643
2019-09-19Added tag 1.11.0 for changeset 3b1601ac0f2fValentin Bartenev1-0/+1
2019-09-19Generated Dockerfiles for Unit 1.11.0.1.11.0Valentin Bartenev9-9/+9
2019-09-19Added version 1.11.0 CHANGES.Valentin Bartenev2-0/+84
2019-09-19Tests: serving static files.Andrey Zelenkov1-0/+376
2019-09-19Basic support for serving static files.Valentin Bartenev12-29/+953
2019-09-19Initial applications isolation support using Linux namespaces.Tiago de Bem Natel de Moura21-165/+1431
2019-09-19Releasing WebSocket frame in case of buffer allocation failure.Max Romanov1-0/+2
Found by Coverity (CID 349456).
2019-09-18Fixing master process crash after failed fork.Max Romanov2-3/+8
This closes #312 issue on GitHub.
2019-09-18Go: removing nxt_main.h usage.Max Romanov1-3/+2
One small step to Go modules support.
2019-09-18Fixing request release order to avoid crashes on exit.Max Romanov1-6/+10
Each request references the router process structure that owns all memory maps. The process structure has a reference counter; each request increases the counter to lock the structure in memory until request processing ends. Incoming and outgoing buffers reference memory maps that the process owns, so the process structure should be released only when all buffers are released to avoid invalid memory access and a crash. This describes the libunit library mechanism used for application processes. The background of this issue is as follows: The issue was found on buildbot when the router crashed during Java websocket tests. The Java application receives a notification from the master process; when the notification is processed, libunit deletes the process structure from its process hash and decrements the use counter; however, active websocket connections maintain their use counts on the process structure. After that, when the master process is stopping the application, libunit releases active websocket connections. At this point, it's important to release the connections' memory buffers before the corresponding process structure and all shared memory segments are released.
2019-09-18Go: do not store pointer to Go object.Max Romanov2-2/+49
To pass Go object references to C and back we use hack with casting to unsafe and then to uintptr. However, we should not store such references because Go not guaratnee it will be available by the same address. Introducing map with integer key helps to avoid dereference stored address. This closes #253 and #309 issues on GitHub.
2019-09-18Reducing number of warning messages.Max Romanov1-6/+5
One alert per failed allocation is enough.
2019-09-18Protecting context structures with mutex.Max Romanov1-4/+63
By design, Unit context is created for the thread which reads messages from the router. However, Go request handlers are called in a separate goroutine that may be executed in a different thread. To avoid a racing condition, access to lists of free structures in the context should be serialized. This patch should fix random crashes in Go applications under high load. This is related to #253 and #309 issues on GitHub.
2019-09-18Configuration: added ability to modify object members with slashes.Valentin Bartenev1-39/+49
Example: PUT/POST/DELETE /config/listeners/unix:%2Fpath%2Fto%2Fsocket This follows a49ee872e83d.
2019-09-18Tests: added read_buffer_size option in http().Andrey Zelenkov1-1/+8
2019-09-17Tests: head() method introduced.Andrey Zelenkov1-0/+3
2019-09-17HTTP parser: fixed parsing of target after literal space character.Valentin Bartenev3-3/+63
In theory, all space characters in request target must be encoded; however, some clients may violate the specification. For the sake of interoperability, Unit supports unencoded space characters. Previously, if there was a space character before the extension or arguments parts, those parts weren't recognized. Also, quoted symbols and complex target weren't detected after a space character.
2019-09-16HTTP parser: removed unused "plus_in_target" flag.Valentin Bartenev3-48/+15
2019-09-16HTTP parser: removed unused "offset" field.Valentin Bartenev1-2/+0
Thanks to 洪志道 (Hong Zhi Dao).
2019-09-16HTTP parser: removed unused "exten_start" and "args_start" fields.Valentin Bartenev3-47/+37
2019-09-16Configuration: added ability to access object members with slashes.Valentin Bartenev6-4/+104
Now URI encoding can be used to escape "/" in the request path: GET /config/listeners/unix:%2Fpath%2Fto%2Fsocket/
2019-09-16Tests: fixed features check.Andrey Zelenkov1-2/+2
2019-09-14Tests: refactored prerequisites model.Andrey Zelenkov24-113/+146
2019-09-16Tests: prepare_env() introduced.Andrey Zelenkov1-8/+13
2019-09-16Tests: style and minor fixes in java.py.Andrey Zelenkov2-8/+7
2019-09-16Tests: more comments.Andrey Zelenkov1-0/+4
2019-09-16Tests: set default "unsafe" value.Andrey Zelenkov1-0/+1
2019-09-16Packages: added explicit library path for Java on RPM based distros.Andrei Belov3-3/+9
This helps to avoid using excessive strictness in RPATH of Java modules.
2019-09-09Added "extern" to nxt_http_fields_hash_proto to avoid link issues.Max Romanov1-1/+1
2019-09-05Tests: Java websockets tests.Andrey Zelenkov2-0/+1526
2019-09-05Java: introducing websocket support.Max Romanov113-69/+15421
2019-09-03Tests: increased read_timeout for websockets tests.Andrey Zelenkov1-2/+6
2019-09-02Making request state handler calls more consistent.Max Romanov2-10/+4
2019-09-02Tests: fixed recv_bytes() in websockets.py.Andrey Zelenkov2-11/+3
2019-09-02Tests: removed duplicate websocket tests.Andrey Zelenkov1-80/+0
2019-09-02Tests: prevented writing non-chopped frames to the closed socket.Andrey Zelenkov2-2/+4
2019-08-30Tests: prevented writing to the closed socket for websocket tests.Andrey Zelenkov1-1/+4
2019-08-30Tests: websockets style fixes.Andrey Zelenkov2-248/+216
2019-08-30Fixed WebSocket implementation that was broken on some systems.Max Romanov1-1/+1
The "nxt_http_websocket" request state, defined in "nxt_http_websocket.c", is used in "nxt_router.c" and must be linked with external symbol declared in "nxt_router.c". Due to the missing "extern" keyword, building Unit with some linkers (notably gold and LLD) caused WebSocket connections to get stuck or even crash the router process.
2019-08-26Adding body handler to nxt_http_request_header_send().Igor Sysoev5-16/+27
2019-08-26Version bump.Valentin Bartenev1-2/+2
2019-08-23Packages: bump docker release for 1.10.0-2.Andrei Belov10-10/+10
2019-08-23Added tag 1.10.0-2 for changeset b651ff72ffe0Andrei Belov1-0/+1
2019-08-23Packages: bump release for 1.10.0-2.1.10.0-2Andrei Belov34-34/+34
2019-08-23Merged with the default branch.Andrei Belov2-4/+33
2019-08-23Added changes for 1.10.0-2 bugfix release.Andrei Belov1-0/+21
2019-08-23Installing libunit files for websocket support.Max Romanov1-4/+12