aboutsummaryrefslogtreecommitdiffstats
path: root/net
Commit message (Collapse)AuthorAgeFilesLines
* net.server_epoll: Process all queued events from epoll before timersKim Alvefur2021-10-211-2/+4
| | | | | | | | | Should call timers less frequently when many sockets are waiting for processing. May help under heavy load. Requested by Ge0rG Backport of 2bcd84123eba requested by Roi
* net.server_epoll: Add a hard deadline on shutdown to extra-fix #1670Kim Alvefur2021-09-201-0/+12
| | | | Should ensure shutdown even if sockets somehow take a very long to get closed.
* net.server_epoll: Close sockets added after shutdown signal (fixes #1670)Kim Alvefur2021-09-201-0/+6
| | | | | This should ensure that sockets get closed even if they are added after the quit signal. Otherwise they may keep the server alive.
* net.server_epoll: Fix to preserve ids of readded timersKim Alvefur2021-08-311-2/+2
| | | | | | | Likely affected rescheduling but have no reports of this. After readding a timer, it would have been issued a new id. Rescheduling would use the previous id, thus not working.
* net.adns: Prevent empty packets from being sent on "connect" (fix #1619)Kim Alvefur2021-01-121-0/+5
| | | | Thanks Ge0rG for testing
* net.server_epoll: Fix off-by-one in 2c559953ad41Kim Alvefur2021-01-101-1/+1
| | | | Thanks tmolitor
* net.server_epoll: Ensure timers can't run more than once per tickKim Alvefur2021-01-081-2/+18
| | | | | | | | This makes sure that a timer that returns 0 (or less) does not prevent runtimers() from completing, as well as making sure a timer added with zero timeout from within a timer does not run until the next tick. Thanks tmolitor
* net.websocket.frames: Use C string XOR implementationKim Alvefur2020-10-141-23/+7
|
* net.http.server: Don't send Content-Length on 1xx/204 responses, per RFC ↵Matthew Wild2020-10-131-1/+4
| | | | (fixes #1596)
* net.websocket.frames: Read buffer length correctly in Lua 5.1 (fix #1598)Kim Alvefur2020-10-121-3/+3
| | | | | | | COMPAT: The __len metamethod does not work with tables in Lua 5.1. Both strings and util.dbuffer now expose their length as a :len() method.
* net.websocket.frames: Additionally return partial frame if there is oneMatthew Wild2020-09-291-1/+1
|
* mod_websocket: Switch partial frame buffering to util.dbufferMatthew Wild2020-09-171-2/+2
| | | | | This improves performance and enforces stanza size limits earlier in the pipeline.
* net.websocket.frames: Allow all methods to work on non-string objectsMatthew Wild2020-09-171-10/+15
| | | | | | | | Instead of using the string library, use methods from the passed object, which are assumed to be equivalent. This provides compatibility with objects from util.ringbuffer and util.dbuffer, for example.
* net.http: Add feature discovery (currently just contains SNI)Matthew Wild2020-09-151-0/+3
|
* net.server: Backport client parts of SNI support from trunk (#409)Kim Alvefur2020-08-174-16/+42
| | | | | | | | | | Partial backports of the following commits from trunk: 6c804b6b2ca2 net.http: Pass server name along for SNI (fixes #1408) 75d2874502c3 net.server_select: SNI support (#409) 9a905888b96c net.server_event: Add SNI support (#409) adc0672b700e net.server_epoll: Add support for SNI (#409) d4390c427a66 net.server: Handle server name (SNI) as extra argument
* net.http: Add request:cancel() methodMatthew Wild2020-08-081-0/+11
| | | | | | | | | | This is a new API that should be used in preference to http.destroy_request() when possible, as it ensures the callback is always called (with an error of course). APIs that have edge-cases where they don't call callbacks have, from experience, shown to be difficult to work with and often lead to unintentional leaks when the callback was expected to free up certain resources.
* net.http: Re-expose destroy_request() functionMatthew Wild2020-08-081-0/+1
| | | | | This was accidentally turned private in 647adfd8f738 as part of refactoring for Lua 5.2+.
* net.resolvers.basic: Default conn_type to 'tcp' consistently if unspecified ↵Matthew Wild2020-07-101-1/+2
| | | | | | (thanks marc0s) Fixes a traceback when passed an IP address with no conn_type.
* net.http: Fix traceback on invalid URL passed to request()Matthew Wild2020-07-071-2/+3
|
* net.http.server: Fix reporting of missing Host headerKim Alvefur2020-06-231-1/+2
| | | | | The "Missing or invalid 'Host' header" case was dead code previously because `host` was always at least an empty string.
* net.http.server: Strip port from Host header in IPv6 friendly way (fix #1302)Kim Alvefur2020-06-231-1/+1
| | | | | E.g. given `[::1]:5280` it would previously result in only `[` instead of the correct `[::1]`
* net.server_epoll: Fix indentationKim Alvefur2020-03-111-3/+3
| | | | | | Some lines seem to have gotten the wrong indentation, possibly caused by Meld which often ignores lines with only whitespace changes and leaves their previous indentation.
* net.resolvers.basic: Normalise IP literals, ensures net.server is happyKim Alvefur2019-11-241-0/+2
|
* net.resolvers.basic: Fix resolution of IPv6 literals (in brackets) (fixes #1459)Kim Alvefur2019-11-241-0/+3
|
* net.resolvers.basic: Move IP literal check to constructorKim Alvefur2019-11-241-11/+14
| | | | | This is to prepare for fixing #1459. An IPv6 literal in [ ] brackets does not pass IDNA and resolving it fails there.
* net.resolvers: Fix traceback from hostname failing IDNAKim Alvefur2019-11-082-0/+2
| | | | Related to #1426
* net.resolvers: Abort on hostnames not passing IDNA validationKim Alvefur2019-11-022-0/+10
| | | | | | Prevents error on trying to use nil. Needs better error reporting in the future.
* net.resolvers: Apply IDNA conversion to ascii for DNS lookups (fixes #1426)Kim Alvefur2019-11-022-2/+4
|
* net.server_epoll: Backport timer optimization 6c2370f17027 from trunk (see ↵Kim Alvefur2019-07-081-48/+29
| | | | | | | #1388) The previous timer handling did not scale well and led to high CPU usage with many connections (each with at least an read timeout).
* 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.
* net.dns: Close resolv.conf handle when done (fixes #1342)Kim Alvefur2019-04-131-0/+1
|
* 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: Rename handshake_timeout to ssl_handshake_timeout (fixes ↵Kim Alvefur2019-02-091-3/+3
| | | | | | #1319) This is to match server_event, see 430797a8fc81
* net.server_epoll: Use send_timeout for write timout like other ↵Kim Alvefur2019-02-071-2/+2
| | | | implementations (fixes #1316)
* server_epoll: Add comments describing config optionsKim Alvefur2018-11-301-0/+15
|
* net.server_epoll: Remove unused config optionKim Alvefur2018-11-301-1/+0
|
* server_epoll: Increase write timeoutKim Alvefur2018-11-301-1/+1
| | | | 7 may be too low for some slow machines and/or networks
* 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.http.server: Move event formation to avoid traceback on missing Host headerMatthew Wild2018-11-131-1/+1
|
* net.http: Manually merge settings (fixes #1231)Kim Alvefur2018-11-091-2/+6
| | | | Metatable table indexing is done raw, so metatables can't be chained
* net.server_epoll: Shuffle variables earlier to improve readabilityKim Alvefur2018-10-271-1/+1
|
* Many things: switch from hacky multi-arg xpcall implementations to a ↵Matthew Wild2018-10-262-9/+6
| | | | standard util.xpcall
* net.server_epoll: Special handling of signal interruptsKim Alvefur2018-10-121-1/+1
|
* net.server_epoll: Ignore ENOENT when deregitering socketKim Alvefur2018-10-121-1/+2
| | | | It should not really happen
* net.server_epoll: Graceful handling of registering already added socketKim Alvefur2018-10-121-1/+8
|
* net.server: Swich method for connecting sockets with remotesKim Alvefur2018-10-123-3/+3
| | | | | | | 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_epoll: Check return conditions of early socket setupKim Alvefur2018-10-121-2/+4
|
* net.server_epoll: Add support for the conn_type argument to addclientKim Alvefur2018-10-121-8/+16
|
* net.resolvers.basic: Suffix IPv4 TCP socket types with '4' to match eg 'tcp6'Kim Alvefur2018-10-121-2/+2
|