summaryrefslogtreecommitdiffhomepage
path: root/src (follow)
AgeCommit message (Collapse)AuthorFilesLines
2017-12-27HTTP parser: introduced nxt_http_parse_fields().Valentin Bartenev2-0/+19
2017-12-27Introducing application 'atexit' hook.Max Romanov7-5/+36
Finalizing Python interpreter. This closes #65 issue on GitHub.
2017-12-26nxt_conn_close() should disable all pending write operations.Igor Sysoev1-0/+6
2017-12-26HTTP parser: fixed memory overflow in the collisions test.Valentin Bartenev1-0/+1
The level hash uses the NULL value as the indicator of a free entry in a bucket. So, inserting a NULL value breaks the hash and can lead to a bucket overflow. In case of the collision counter, the value wasn't initialized, since it's not needed for the purpose of checking collisions. As a result, it might contain any garbage from the stack and in some rare cases the value was NULL. Now the value is initilized.
2017-12-25HTTP parser: reworked header fields handling.Valentin Bartenev7-427/+445
2017-12-25Restoring apps in case of reconfiguration error.Max Romanov1-0/+3
2017-12-13Introducing Unit version check in Go package.Max Romanov4-65/+122
To communicate with the Go program, Unit setup environment variable named NXT_GO_PORTS with value contains Unit version, stream id to confirm application is started, and Unit ports information. Go Unit package parses this string and compares runtime version with compile time version. In case of parse error or version mismatch, ListenAndServe() returns with the error.
2017-12-08HTTP parser: improved detection of corrupted request line.Valentin Bartenev1-1/+43
2017-12-08HTTP parser: slightly improved readability of code.Valentin Bartenev1-103/+101
As suggested by Igor Sysoev.
2017-12-07Fixed protocol version string handling in router.Valentin Bartenev1-1/+1
2017-12-06Go: removing request registry.Max Romanov11-244/+96
Passing unsafe.Pointers (void *) from Go to C is complicated by an attempt to make such pointers less unsafe. A straightforward optimization is to replace 'unsafe.Pointer' with 'uintptr' (thanks to Xin Huang for the idea: https://stackoverflow.com/a/44826533 ). As a result, request registry with mutex is gone.
2017-12-05Fixing Go package build in NetBSD.Max Romanov1-1/+1
Bug introduced in 585c8068a6d7.
2017-12-01Making Go package source distributable and renaming to 'nginx/unit'.Max Romanov8-85/+34
All header files are copied to Go package sources. As the result, package can be (re-)build when required. This closes #23 issue on GitHub.
2017-12-01Initializing port_msg fields with zeroes in Go package.Max Romanov2-0/+4
2017-11-29Introducing python virtualenv configuration.Max Romanov4-0/+44
New parameter 'home' for python application allows to configure application-specific virtualenv path. This closes #15 issue on GitHub.
2017-11-02Fixing build on Solaris.Max Romanov2-2/+2
2017-11-27Timer should be marked as it is not in tree after deletion.Igor Sysoev1-0/+1
This closes #64 issue on GitHub.
2017-11-27Removed uncontext.h.Igor Sysoev1-2/+0
This removal was missed the changeset 2aad6a5fac13.
2017-11-27A number of engine connections is decreased on connection close.Igor Sysoev4-4/+12
2017-11-21Tests: move existing tests to "src" folder.Andrey Zelenkov18-0/+3236
2017-11-21Fixed crash on invalid JSON number.Valentin Bartenev1-0/+4
2017-11-20Fixing Coverity warnings.Max Romanov7-10/+23
CID 200496 CID 200494 CID 200490 CID 200489 CID 200483 CID 200482 CID 200472 CID 200465
2017-10-27Fixing racing condition in request.msgs usage.Max Romanov1-8/+8
2017-10-27Fixing Go program crash.Max Romanov1-2/+2
Go request registration should be removed before C request memory freed. C request address used as a key in Go map. Freed memory can be instantly reused for other request and older request registration should removed at this point to avoid collisions.
2017-10-25Checking the result of shared memory buffer allocation.Max Romanov1-0/+3
This closes #57 issue on GitHub.
2017-10-25Avoiding compilation on systems with no working shared memory.Valentin Bartenev1-0/+4
2017-10-20Version bump.Igor Sysoev1-2/+2
2017-10-19Fixing Go package build.Max Romanov5-14/+21
Go package build was broken by change 365:28b2a468be43.
2017-10-19Fixed controller restarting.Valentin Bartenev2-24/+38
Previously, stored configuration wasn't reread on controller process restart, which resulted in segmentation fault.
2017-10-19Keep application worker until response for all requests received.Max Romanov1-1/+4
2017-10-19Filtering process to keep connection.Max Romanov5-13/+58
- Main process should be connected to all other processes. - Controller should be connected to Router. - Router should be connected to Controller and all Workers. - Workers should be connected to Router worker thread ports only. This filtering helps to avoid unnecessary communication and various errors during massive application workers stop / restart.
2017-10-19Introducing mmap_handler to count references to shared memory.Max Romanov3-87/+146
"All problems in computer science can be solved by another level of indirection" Butler Lampson Completion handlers for application response buffers executed after sending the data to client. Application worker can be stopped right after send response buffers to router. Worker stop causes removal of all data structures for the worker. To prevent shared memory segment unmap, need to count the number of buffers which uses it. So instead of direct reference to shared memory, need to reference to intermediate 'handler' structure with use counter and pointer to shared memory.
2017-10-19Supporting concurrent shared memory fd receive in router.Max Romanov6-104/+86
Two different router threads may send different requests to single application worker. In this case shared memory fds from worker to router will be send over 2 different router ports. These fds will be received and processed by different threads in any order. This patch made possible to add incoming shared memory segments in arbitrary order. Additionally, array and memory pool are no longer used to store segments because of pool's single threaded nature. Custom array-like structure nxt_port_mmaps_t introduced.
2017-10-19Introducing src_pid for mmap header for accurate buf completion.Max Romanov3-16/+30
This allows to use shared memory to communicate with main process. This patch changes shared memory segment format and breaks compatibility with older modules.
2017-10-19Fixed matching of empty version.Valentin Bartenev1-0/+4
2017-10-19Fixed the bug introduced in the previous changeset.Igor Sysoev1-4/+9
2017-10-18Added the debug option to module compatibility vector.Igor Sysoev3-3/+3
2017-10-18Router: fixed segfault after configuration change.Igor Sysoev7-193/+258
2017-10-17Storing memory cache slot hint inside nxt_sockaddr_t.Igor Sysoev7-31/+27
2017-10-10Basic validation errors.Valentin Bartenev3-84/+258
2017-10-10Optimized application type handling.Valentin Bartenev6-58/+50
2017-10-05Fixed building with old GCC after the previous change.Valentin Bartenev1-2/+1
2017-10-05Improved applications versions handling.Valentin Bartenev6-16/+144
2017-10-04Added Linux 4.5 EPOLLEXCLUSIVE support.Igor Sysoev1-2/+10
2017-10-04Port message fragmentation supported.Max Romanov9-28/+273
- Each sendmsg() transmits no more than port->max_size payload data. - Longer buffers are fragmented and send using multiple sendmsg() calls. - On receive side, buffers are connected in chain. - Number of handler calls is the same as number of nxt_port_socket_write() calls. - nxt_buf_make_plain() function introduced to make single plain buffer from the chain.
2017-10-04Optimized request<->app link allocation.Max Romanov1-36/+59
Only purpose of request<->app link instance is to be enqueued in application requests queue. It is possible to avoid request<->app link allocation from memory pool in case when spare application port is available. Instance from local stack can be used to prepare and send message to application.
2017-10-04Breaking read loop by nxt_port_read_close().Max Romanov1-0/+1
Port message handler may perform fork() and then close port read file descriptor and enable write on same event fd. Next read attempt in this case may cause different errors in log file.
2017-10-04Introducing process use counter.Max Romanov6-38/+52
This helps to decouple process removal from port memory pool cleanups.
2017-10-04Return error codes for port_hash operations.Max Romanov3-8/+30
2017-10-04Using port 'post' facility to proxy remove pid message to workers.Max Romanov4-86/+30
Remove pid proxying to worker engines implementation was originally overcomplicated. Memory pool and 2 engine posts (there and back again) are optimized out and replaced with band new nxt_port_post() call.