From 62085e5215e08a3b1b6cf4930b2cda1c6d3e06ec Mon Sep 17 00:00:00 2001 From: Sergey Lyubka Date: Wed, 6 Mar 2013 13:37:01 +0000 Subject: [PATCH] updated user manual --- UserManual.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/UserManual.md b/UserManual.md index 3a2aed5c..9642eece 100644 --- a/UserManual.md +++ b/UserManual.md @@ -488,6 +488,14 @@ by the master thread. `process_new_connection()` actually processes the connection, i.e. reads the request, parses it, and performs appropriate action depending on a parsed request. +Master thread uses `poll()` and `accept()` to accept new connections on +listening sockets. `poll()` is used to avoid `FD_SETSIZE` limitation of +`select()`. Since there are only a few listening sockets, there is no reason +to use hi-performance alternatives like `epoll()` or `kqueue()`. Worker +threads use blocking IO on accepted sockets for reading and writing data. +All accepted sockets have `SO_RCVTIMEO` and `SO_SNDTIMEO` socket options set +(controlled by `request_timeout_ms` mongoose option, 30 seconds default) which +specify read/write timeout on client connection. # Other Resources - Presentation made by Arnout Vandecappelle at FOSDEM 2011 on 2011-02-06