summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)AuthorFilesLines
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.
2017-10-04Using request mem pool for req<->app link.Max Romanov2-3/+20
Request <-> application link structure (nxt_req_app_link_t) used to register the request in application request queue (nxt_app_t.requests) and generate application-specific port message. Now it is allocated from request pool. This pool created for request parsing and used to allocate and store information specific to this request.
2017-10-04Fixed error generation during request processing.Max Romanov1-40/+94
Request can be processed in thread different from the thread where the connection originally handled. Because of possible racing conditions, using original connection structures is unsafe. To solve this, error condition is registered in 'ra' (request <-> application link) and traversed back to original connection thread where the error message can be generated and send back to client.
2017-10-04Optimized send message allocations.Max Romanov2-42/+102
For empty write queue cases, it is possible to avoid allocation and enqueue send message structures. Send message initialized on stack and passed to write handler. If immediate write fails, send message allocated from engine pool and enqueued.
2017-10-04Introducing use counters for port and app. Thread safe port write.Max Romanov9-407/+682
Use counter helps to simplify logic around port and application free. Port 'post' function introduced to simplify post execution of particular function to original port engine's thread. Write message queue is protected by mutex which makes port write operation thread safe.
2017-10-04Using engine memiory pool for port write allocations.Max Romanov7-16/+16
To allow use port from different threads, the first step is to avoid using port's memory pool for temporary allocations required to send data through the port. Including but not limited by: - buffers for data; - send message structures; - new mmap fd notifications; It is still safe to use port memory pool for incoming buffers allocations because recieve operation bound to single thread.
2017-10-04Removing mem_pool from port_hash interface.Max Romanov5-45/+30
Memory pool is not used by port_hash and it was a mistake to pass it into 'add' and 'remove' functions. port_hash enrties are allocated from heap.
2017-10-04Fixing memory leak when handling remove pid message.Max Romanov1-0/+2
Worker threads ports need to receive 'remove pid' message to properly handle application process exit case and finish requests processed by particular application worker. Main process send 'remove pid' notification to service thread port only and this message must be 'proxied' to other running engines. Separate memory pool created for this message. For each engine structure required to post message to engine allocate from the pool using 'retain' allocation method. After successfull post structure will be freed using 'release' method. To completely destroy poll one more 'release' should be called to release initial reference count. I'm afraid this should be simplified using good old malloc() and free() calls.
2017-10-02Version bump.Valentin Bartenev1-2/+2
2017-09-27Fixed building by modern GCC.Igor Sysoev1-6/+3
2017-09-27Event engine memory cache for nxt_sockaddr_t.Igor Sysoev8-20/+185
Introducing event engine memory cache and using the cache for nxt_sockaddr_t structures.
2017-09-27Fixed building with pthread_t defined as a pointer.Sergey Kandaurov2-2/+2
2017-09-27Supported linking with -lrt on BSD systems.Sergey Kandaurov1-2/+2
OpenBSD lacks support of librt.
2017-09-27Better checking for shm_open() during configure.Sergey Kandaurov3-9/+17
2017-09-27Fixed "make dist" broken in changeset b18c0fb60032.Igor Sysoev1-1/+1
2017-09-26Changed "path" to "directory" in configure summary.Valentin Bartenev1-4/+5
The "directory" is more specific term, similar to "file".
2017-09-25Added state directory creation in install procedure.Igor Sysoev1-0/+1
2017-09-25Added --bindir and --sbindir options to the summary page.Igor Sysoev1-2/+4
2017-09-25Style fixes.Igor Sysoev2-9/+10
2017-09-25Checking mallopt() during configure.Max Romanov2-1/+17
mallopt() is absent on Alpine musl.
2017-09-22Fixed displaying "echo" program building failure.Igor Sysoev1-1/+2
2017-09-22Removed fibers from compilation.Valentin Bartenev7-7/+22
It's not used anyway, but breaks building with musl. This closes issue #5 on GitHub.
2017-09-19README: added project name to the beginning.Valentin Bartenev1-0/+5
Also, for prettier look in output of "cat" and "less" commands, added an empty line at the end.
2017-09-19Simplified the README file.Valentin Bartenev2-966/+19
Detailed documentation was moved to a separate repository in order to keep the main repository clean from lots of documentation edits. See: http://hg.nginx.org/unit-docs
2017-09-18Fixing shared memory thread safety issue.Max Romanov4-2/+13
Do not reuse shared memory segment with different port until this segment successfully received and indexed on other side. However, segment can be used to transfer data via the port it was sent at any time.
2017-09-16Fixed memory leak caused by mempool related to request context.Valentin Bartenev1-7/+3
The previous attempt of fixing this in e5a65b58101f hasn't been really successful, because the actual memory leak was caused not by the request parse context itself, but its memory pool.
2017-09-15Go: Fixed a bug introduced in the previous changeset.Igor Sysoev1-1/+1
2017-09-15Introducing named port message handlers to avoid misprints.Max Romanov10-147/+135
2017-09-15Fixing memory leak of request parse context.Max Romanov3-19/+38
2017-09-15Introducing application timeout.Max Romanov13-326/+589
2017-09-15Fixed port handlers arrays.Valentin Bartenev2-0/+4
2017-09-15Router: more logical code order change.Igor Sysoev1-2/+2
Updating the router engines list before posting jobs to worker thread engines is more logical because worker threads may exit after the posting. However, the previous code was safe because an engine is freed by the router main thread after worker its thread has exited.
2017-09-14Router: fixed segmentation fault.Igor Sysoev2-10/+38
The router process exited abnormally on reconfiguration if number of worker threads had been decreased on the previous reconfiguration. Besides the list of router engines should be updated only after a new configuration joints have been prepared for all engines.
2017-09-10Configuration persistence.Valentin Bartenev10-2/+244
Now configuration survives server reloads.
2017-09-14Router: worker threads should quit only if the main thread hasIgor Sysoev1-1/+54
requested this.
2017-09-14Fixed textual socket name lengths and Unix domain sockaddr length.Igor Sysoev7-43/+79
2017-09-12Fixed error messages grammar.Nick Shadrin1-49/+48
2017-09-11Removing extra spaces introduced by PR #1.Javier Revillas1-2/+2
This closes #24 PR on GitHub. From 1903735e179a68c5cb661a375a1a022f764ed3f1
2017-09-08Fixed a memory leak.Andrei Vagin1-0/+1
This closes #2 RP on GitHub. From f13cca01b7aa489dcb6909513f2b781b36ac7fea
2017-09-08Cosmetic fixes in port.go.Sergey Fedchenko1-33/+35
This closes #5 on GitHub. From 615369a29511c6021e5623070f082fdb17ff37a2
2017-09-09README: Fixed typos.Igor Sysoev1-5/+5
These closes #9, closes #13, closes #21 issues on GitHub.
2017-09-07Fixed typo.Eugene Agafonov1-2/+2
This closes #1 PR on GitHub.
2017-09-07Moving body data before headers for PHP POST.Max Romanov2-7/+22
PHP SAPI tries to read body for POST request before registering header-specific variables. For other methods, read_post_body() called by SAPI after variables registration. This closes #10 issue on GitHub.
2017-09-07Decalring clean and dist targets as .PHONY.Max Romanov1-0/+2