aboutsummaryrefslogtreecommitdiffstats
path: root/net/server_select.lua
Commit message (Collapse)AuthorAgeFilesLines
* net: refactor sslconfig to not depend on LuaSecJonas Schäfer2022-04-021-0/+6
| | | | | | | | | | | This now requires that the network backend exposes a tls_builder function, which essentially wraps the former util.sslconfig.new() function, passing a factory to create the eventual SSL context. That allows a net.server backend to pick whatever it likes as SSL context factory, as long as it understands the config table passed by the SSL config builder. Heck, a backend could even mock and replace the entire SSL config builder API.
* net: isolate LuaSec-specificsJonas Schäfer2022-04-271-3/+15
| | | | | | | | | | | | | | For this, various accessor functions are now provided directly on the sockets, which reach down into the LuaSec implementation to obtain the information. While this may seem of little gain at first, it hides the implementation detail of the LuaSec+LuaSocket combination that the actual socket and the TLS layer are separate objects. The net gain here is that an alternative implementation does not have to emulate that specific implementation detail and "only" has to expose LuaSec-compatible data structures on the new functions.
* net.server: Add a predrain callaback just before writesKim Alvefur2021-08-161-0/+5
| | | | | | | | | | Allows sneaking in things in the write buffer just before it's sent to the network stack. For example ack requests, compression flushes or other things that make sense to send after stanzas or other things. This ensures any additional trailing data sent is included in the same write, and possibly the same TCP packet. Other methods used such as timers or nextTick might not have the same effect as it depends on scheduling.
* net.server_select: Fix traceback (thanks eta)Kim Alvefur2020-08-231-1/+1
| | | | | | The `socket` here is unreferenced on disconnect. Calling :resume_writes after that causes an error when `addsocket()` tries to use it as a table index.
* net.server_select: Pass conn/handler to readbuffer/sendbufferMatthew Wild2020-06-011-4/+4
| | | | | | The internal implementations don't use it, but this causes onreadable and onwritable of watchfd to receive the conn as they do in other backends.
* net.server_select: Ensure onconnect is always called before onincomingMatthew Wild2020-06-011-9/+18
| | | | | | | | | This changes the code to call onconnect when the first data is sucessfully read or written, instead of simply when the socket first becomes writable. A writable socket can mean a connection error, and if the client already sent some data it may get passed to onincoming before processing writable sockets. This fixes the issue.
* net.server_select: Remove prefix added to TLS handshaker errorsKim Alvefur2019-12-011-1/+1
| | | | For consistency. None of the other implementations do this.
* net.server: Handle server name (SNI) as extra argumentKim Alvefur2019-09-011-0/+3
| | | | | | 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/+7
| | | | | This lets code attach some extra data to be attached to client connections.
* Fix various spelling mistakes [codespell]Kim Alvefur2019-05-031-2/+2
|
* net.server_select: Fix write pause/resume functionsKim Alvefur2019-03-241-6/+4
| | | | | | | Nothing would happen if the write buffer was empty. Also simplified the code because it took too long to understand what `if _sendlistlen ~= tmp then` did.
* 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_select: SNI support (#409)Kim Alvefur2019-03-101-0/+10
|
* net.server: New API for creating server listenersKim Alvefur2018-09-131-8/+22
| | | | server.listen(interface, port, listeners, options);
* Merge 0.11->trunkKim Alvefur2018-11-181-1/+1
|\
| * net.server_select: Fix IP validation to use correct variable (thanks quest)Kim Alvefur2018-11-171-1/+1
| | | | | | | | Copy-paste mistake most likely. Not caught because server_select is ignored by luacheck.
* | net.server: Add an API for holding writes of outgoing dataKim Alvefur2018-10-251-12/+19
| |
* | net.server_select: Still allow buffering outgoing data on write-locked ↵Kim Alvefur2018-10-281-4/+1
| | | | | | | | connections
* | net.server_select: Replace use of deprecated :lock_read in server.linkKim Alvefur2018-10-281-2/+2
| |
* | net.server_select: Deprecate :lock methodKim Alvefur2018-10-281-0/+1
| | | | | | | | Exists only in server_select and I found nothing using it
* | server_select: Fix :lock methodKim Alvefur2018-10-281-1/+1
| | | | | | | | | | | | This always unlocks reading. I don't believe this is used anywhere. server_event does not implement this.
* | net.server_select: Move code from :lock_read into :pause and :resumeKim Alvefur2018-10-281-13/+15
| |
* | net.server_select: Deprecate connection:lock_read() methodKim Alvefur2018-10-281-1/+1
|/
* net.server: Swich method for connecting sockets with remotesKim Alvefur2018-10-121-1/+1
| | | | | | | LuaSocket TCP sockets have have both :connect and :setpeername, which are the exact same function, however UDP sockets only have :setpeername. Switching to :setpeername allows most of this code to be generic wrt TCP/UDP.
* net.server: Remove socket constructor fallbackKim Alvefur2018-10-121-1/+1
| | | | Should no longer be needed
* net.server: Require IP address as argument to addclient (no DNS names)Kim Alvefur2018-10-111-7/+10
| | | | The net.connect API should be used to resolve DNS names first
* net.connect: Fix passing request table to new listenerKim Alvefur2018-09-261-2/+2
| | | | This could be a return value from ondetach
* net.server: Call a 'onattach' callback when replacing listenersKim Alvefur2018-09-261-0/+3
|
* net.server: Set default read timeout to 14 minutes (fixes #971)Kim Alvefur2018-07-061-1/+1
|
* net.server: Add watchfd, a simple API for watching file descriptorsKim Alvefur2018-05-091-0/+43
|
* net.server_select: Allow setquitting("once") to allow resuming the loop laterMatthew Wild2018-04-101-2/+2
|
* Fix spelling throughout the codebase [codespell]Kim Alvefur2018-02-041-3/+3
|
* net.server_select: Better detection of errors for outgoing connectionsMatthew Wild2018-02-231-6/+7
| | | | | | | | | | | On connection failure, a socket is marked readable and writable. So to detect initial connection failures (connection refused, etc.) we now watch for sockets becoming readable during initial connection, and also read from readable sockets before writing to writable sockets. This should fix 'onconnect' being called for outgoing connections that actually failed.
* Merge 0.10->trunkKim Alvefur2016-11-261-0/+1
|\
| * Merge 0.9->0.10Kim Alvefur2016-11-241-0/+1
| |\
| | * net.server_select: Prevent writes after a handler is closed (fixes #783 I hope)Kim Alvefur2016-11-221-0/+1
| | |
| * | net.server_select: remove unused import [luacheck]Anton Shestakov2016-07-281-1/+0
| | |
* | | Merge 0.10->trunkKim Alvefur2016-07-141-1/+1
|\| |
| * | net.server_select: remove unused one-letter loop variable [luacheck]Anton Shestakov2016-07-141-1/+1
| | |
* | | Merge 0.10->trunkKim Alvefur2016-07-081-2/+2
|\| |
| * | net.server_select: remove unused one-letter loop variables [luacheck]Anton Shestakov2016-07-091-2/+2
| | |
| * | net.server_select: Remove do-nothing os_difftime calls [backported from trunk]daurnimator2015-01-191-5/+3
| | |
* | | Merge 0.10->trunkKim Alvefur2016-01-221-1/+21
|\| |
| * | Merge 0.9->0.10Kim Alvefur2016-01-221-0/+20
| |\|
| | * server_select: Add logging of when servers are paused and resumedKim Alvefur2016-01-221-0/+2
| | |
| | * server_select: Pause and mark server as full if accepting a client fails ↵Kim Alvefur2016-01-221-0/+2
| | | | | | | | | | | | (fixes #597)
| | * server_select: Retry accepting clients from full servers after 10s (matches ↵Kim Alvefur2016-01-221-0/+11
| | | | | | | | | | | | libevent behaviour)
| | * server_select: Keep track of which server listeners are fullKim Alvefur2016-01-221-0/+5
| | |
* | | Merge 0.10->trunkKim Alvefur2016-01-101-0/+3
|\| |
| * | net.server_select: Add 'server' method to client connections (present in ↵Kim Alvefur2016-01-091-0/+3
| | | | | | | | | | | | server_event)