aboutsummaryrefslogtreecommitdiffstats
path: root/net
Commit message (Collapse)AuthorAgeFilesLines
* 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_event: Silence luacheck warningsKim Alvefur2019-12-231-0/+2
|
* net.server_epoll: Remove an unused variable [luacheck]Kim Alvefur2019-12-231-1/+1
|
* net.http.parser: Silence warning about unused variable [luacheck]Kim Alvefur2019-12-231-1/+2
|
* util.error: Move default for numeric error code to net.http.serverKim Alvefur2019-12-141-1/+1
| | | | | | Stanza errors can also have numbers but these are a legacy thing and rarely used, except in MUC. HTTP errors on the other hand always have a number.
* 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.connect: Mention RFC 6724 regressionKim Alvefur2019-12-072-0/+2
| | | | | Default Address Selection algorithm is not applied, resulting in a strong bias towards IPv4.
* net.connect: Add some TODOs and FIXMEsKim Alvefur2019-12-073-1/+10
| | | | And mention issue numbers: #1246, #1428 and #1429
* 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.http: Set ALPN on requestsKim Alvefur2019-11-291-1/+1
| | | | | | Shouldn't hurt. Revert if it turns out it does. Supported in LuaSec 0.8. Should be ignored otherwise.
* net.websocket: Fix traceback in case of ondisconnect being called twiceMatthew Wild2019-11-261-0/+1
| | | | | We want to figure out what situations the double ondisconnect happens in, and aim to fix the root cause in the future.
* net.connect: Add some TODO commentsKim Alvefur2019-11-261-0/+4
|
* Merge 0.11->trunkKim Alvefur2019-11-241-0/+2
|\
| * net.resolvers.basic: Normalise IP literals, ensures net.server is happyKim Alvefur2019-11-241-0/+2
| |
* | net.resolvers.service: Pass IP literals directly to basic resolverKim Alvefur2019-11-241-0/+9
| | | | | | | | | | | | IP literals will not work with SRV records anyways. Fixes s2s with IP literals.
* | Merge 0.11->trunkKim Alvefur2019-11-241-11/+17
|\|
| * 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.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
* | server_event: Remove duplicated code (thanks waqas)Kim Alvefur2019-11-131-4/+0
| | | | | | | | | | readcallback() calls onreadtimeout() and runs the exact same code if onreadtimeout() doesn't return true, which it doesn't do.
* | Merge 0.11->trunkKim Alvefur2019-11-082-0/+2
|\|
| * net.resolvers: Fix traceback from hostname failing IDNAKim Alvefur2019-11-082-0/+2
| | | | | | | | Related to #1426
* | net.http.server: Treat promise rejection without value as a HTTP 500 errorKim Alvefur2019-11-051-1/+1
| |
* | net.http.server: Handle promises from http handlersKim Alvefur2019-11-011-0/+8
| |
* | net.http.server: Handle util.error objects from http handlersKim Alvefur2019-11-011-0/+3
| |
* | net.http.server: Tail call because tail call!Kim Alvefur2019-11-011-1/+1
| |
* | net.http.server: Factor out handling of event response for easier reuseKim Alvefur2019-11-011-31/+34
| |
* | Merge 0.11->trunkKim Alvefur2019-11-022-2/+14
|\|
| * 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.http.codes: Avoid implicit number -> string coercionKim Alvefur2019-11-011-1/+1
| |
* | 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.http.files: Explicitly convert number to string, avoiding implicit coercionKim Alvefur2019-10-121-1/+1
| |
* | net.http.server: Explicitly convert number to string, avoiding implicit coercionKim Alvefur2019-10-121-1/+1
| |
* | net.http.server: Re-fire unhandled HEAD requsts as GET events (fixes #1447)Kim Alvefur2019-10-121-0/+11
| | | | | | | | | | | | BC: This overloads the GET event. Previous commit ensures HEAD requests are sent without a body.
* | net.http.server: Ensure HEAD requests are sent with empty bodyKim Alvefur2019-10-121-0/+16
| |
* | 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.