aboutsummaryrefslogtreecommitdiffstats
path: root/net/server_epoll.lua
Commit message (Collapse)AuthorAgeFilesLines
* net.server_epoll: Log error about missing *all* callbacks at 'error' levelKim Alvefur2020-01-121-1/+1
|
* net.server_epoll: Log errors caught in listeners on 'error' levelKim Alvefur2020-01-121-1/+1
|
* net.server_epoll: Add option for reducing debug loggingKim Alvefur2020-01-121-14/+25
| | | | | | | Sometimes all these things just drown out the logs you are interested in with low-level socket noise. Enabled since it's still new and experimental.
* net.server_epoll: Collect full traceback from errors in listenersKim Alvefur2020-01-051-1/+3
|
* net.server_epoll: Avoid concatenating buffer with single itemKim Alvefur2019-12-281-1/+1
| | | | | | | | | | | | | | Saves creating a string that'll be identical to buffer[1] anyways, as well as a C function call. Depending on Lua version and length of the string, this could be reusing an interned string, but a longer one would probably be duplicated for no reason. Having exactly one item in the buffer seems like it would be fairly common, but I have not done an extensive study. If opportunistic writes are enabled then it will be even more likely. This special case could be optimized like this in table.concat but it does not look like it is.
* net.server_epoll: Remove an unused variable [luacheck]Kim Alvefur2019-12-231-1/+1
|
* net.server_epoll: Use monotonic time for schedulingKim Alvefur2019-12-081-9/+11
| | | | Timer API of passing wallclock time remains
* net.server_epoll: Change timer rescheduling method to match util.timerKim Alvefur2019-12-081-2/+3
| | | | | Relative to current time instead of absolute time, in preparation for switching to monotonic time.
* net.server_epoll: Remove unused function for adding timer at absolute timeKim Alvefur2019-12-081-8/+3
| | | | This won't make sense if we switch to monotonic time
* net.server_epoll: Add debug logging for delayed readingKim Alvefur2019-12-071-0/+1
| | | | | | | | | | | | | | | | In :onreadable, if there is still buffered incoming data after reading from the socket (as indicated by the :dirty method, usually because LuaSocket has an 8k buffer that's full but it read a smaller amount), another attempt to read is scheduled via this :pausefor method. This is also called from some other places where it would be pointless to read because there shouldn't be any data. In the delayed read case, this should report that the socket is "dirty". If it reports that the socket is "clean" then the question is where the buffer contents went? If this doesn't get logged after the scheduled time (0.000001s by default) then this would suggests a problem with timer or scheduling.
* net.server_epoll: Save log tag in a field on FD watchers tooKim Alvefur2019-11-171-2/+4
| | | | As with 0e1701197722
* Back out c8aa66595072: Extra changes accidentally includedKim Alvefur2019-11-171-5/+3
|
* net.server_epoll: Save log tag in a field on FD watchers tooKim Alvefur2019-11-171-3/+5
| | | | As with 0e1701197722
* net.server_epoll: Improve read timeout debug messagesKim Alvefur2019-10-191-2/+2
|
* net.server_epoll: Clarify a debug messageKim Alvefur2019-10-191-1/+1
| | | | Writing what? The data that's been buffered for writing
* net.server_epoll: Save IP and port from connection creation callKim Alvefur2019-10-121-0/+4
| | | | Might come out of :getpeername different later but at least it's something.
* server_epoll: Log full string represestation when connectedKim Alvefur2019-10-121-1/+1
| | | | Since they may have been unknown when the connection was created.
* net.server_epoll: Handle getpeer/sockname returning a normal errorKim Alvefur2019-10-121-2/+2
| | | | | These will sometimes return nil, "Transport not connected" but not throw a hard error. This shouldn't be treated as success.
* net.server_epoll: Fix to get remote IP on direct TLS connectionsKim Alvefur2019-10-121-0/+1
| | | | | | | | A Direct TLS connection (eg HTTPS) gets turned into a LuaSec handle before the :updatenames call done in the :connect method. LuaSec does not expose the :getpeername and :getsockname methods, so the addresses remain obscured, making debugging trickier since the actual IP addrerss connected to does not show up.
* net.server_epoll: Move a log message to improve orderingKim Alvefur2019-10-121-1/+1
| | | | It was weird that it said "Prepared to start TLS" before "Client .. created"
* net.server_epoll: Guard against nil return from TLS info methodKim Alvefur2019-10-061-2/+2
|
* net.server_epoll: Log TLS version and cipher for all completed handshakesKim Alvefur2019-10-061-1/+6
| | | | | The similar logging in mod_c2s and mod_s2s does not cover all connections, like HTTPS or other Direct TLS ports.
* net.server_epoll: Log size of partial writes (debug)Kim Alvefur2019-10-051-0/+1
|
* net.server_epoll: Return early when attepting to set write lock state to ↵Kim Alvefur2019-10-051-0/+6
| | | | | | current state Reduces needless duplication of work and log messages..
* net.server_epoll: Correct indentationKim Alvefur2019-09-291-2/+2
|
* net.server_epoll: Ignore unused self argument [luacheck]Kim Alvefur2019-09-291-1/+1
|
* net.server_epoll: Fix link function to not replace listenersKim Alvefur2019-09-291-9/+5
| | | | | | | | mod_proxy65 calls link twice, once for each direction. This would overwrite the listeners with one that has the previous listeners as metatable.__index, but none of the others. This takes advantage of 94c584d67533 to improve this.
* net.server_epoll: Handle read size argument to linkKim Alvefur2019-09-291-1/+2
|
* net.server_epoll: Add some timeout related loggingKim Alvefur2019-09-291-0/+3
|
* net.server_epoll: Add debug logging for various connection eventsKim Alvefur2019-09-291-0/+6
|
* net.server_epoll: Make log tag accessible as a fieldKim Alvefur2019-09-291-1/+3
| | | | To allow referencing connections by id instead of tostring form
* net.server_epoll: Make it easy to override handler for incoming dataKim Alvefur2019-09-291-2/+7
|
* net.server: Handle server name (SNI) as extra argumentKim Alvefur2019-09-011-0/+6
| | | | | | Code added in 75d2874502c3, 9a905888b96c and adc0672b700e uses this field. See #409 and #1408
* net.server: Accept and save an 'extra' field for client connectionsKim Alvefur2019-09-011-5/+6
| | | | | This lets code attach some extra data to be attached to client connections.
* net.server_epoll: Add support for opportunistic writesKim Alvefur2019-08-281-0/+8
| | | | | | | | This tries to flush data to the underlying sockets when receiving writes. This should lead to fewer timer objects being around. On the other hand, this leads to more and smaller writes which may translate to more TCP/IP packets being sent, depending on how the kernel handles this. This trades throughput for lower latency.
* server_epoll: Add native support for per socket bandwith limitsKim Alvefur2016-12-181-0/+17
|
* net.server_epoll: Remove unused local [luacheck]Kim Alvefur2019-07-261-1/+0
|
* net.server_epoll: Overhaul logging with one log sink per connectionKim Alvefur2019-07-261-23/+41
|
* net.server_epoll: Deprecate libevent emulation layerKim Alvefur2019-07-241-0/+1
|
* net.server_epoll: Return errors from creating socketsKim Alvefur2019-07-231-0/+1
| | | | | | Prevents error from attempting to index nil conn on such failure. Silences luacheck warning about the 'err' variable being unused
* net.server_epoll: Add experimental option to close connections in case of ↵Kim Alvefur2019-05-251-0/+8
| | | | | | | listener error Sometimes such errors leave sessions in an inconsistent state, so it might be better to close them early.
* net.server_epoll: Return listener error messageKim Alvefur2019-05-251-1/+1
|
* Merge 0.11->trunkKim Alvefur2019-05-041-1/+1
|\
| * net.server_epoll: Restore wantread flag after pause (fixes #1354)Kim Alvefur2019-05-041-1/+1
| | | | | | | | | | | | | | | | | | If a chunk of data has been received that is larger than the amount read at a time, then the connection is paused for a short time after which it tries to read some more. If, after that, there is still more data to read, it should do the same thing. However, because the "want read" flag is removed and was restored after the delayed reading, it would not schedule another delayed read.
* | Merge 0.11->trunkKim Alvefur2019-03-281-6/+9
|\|
| * net.server_epoll: Skip delayed continuation read on paused connectionsKim Alvefur2019-03-281-1/+1
| | | | | | | | | | | | This should prevent #1333 in cases where LuaSockets buffer is "dirty", i.e. contains more data after a read, where it gets resumed with a short delay.
| * net.server_epoll: Handle LuaSec wantread/wantwrite conditions before ↵Kim Alvefur2019-03-281-5/+8
| | | | | | | | | | | | | | callbacks (fixes #1333) This prevents the :set(true) call from resuming a connection that was paused in the onincoming callback.
* | net.server_epoll: Optimize timer handlingKim Alvefur2019-03-121-53/+30
| |
* | net.server: Only add alternate SNI contexts if at least one is providedKim Alvefur2019-03-111-1/+1
| | | | | | | | Fixes use of <starttls/> when a client sends SNI, which would send no certificate otherwise.
* | net.server_epoll: Add support for SNI (#409)Kim Alvefur2019-03-101-0/+8
| |