aboutsummaryrefslogtreecommitdiffstats
path: root/net
Commit message (Collapse)AuthorAgeFilesLines
* util.dependencies: Tone down lua-unbound dependency for nowKim Alvefur2020-06-271-1/+2
| | | | | | At least until packages are available Wording from MattJ
* net.resolvers: Remove FIXMEs obsoleted by switch to libunboundKim Alvefur2020-06-252-5/+0
|
* net.unbound: Remove compat for missing promises (pre-0.11)Kim Alvefur2020-06-251-15/+12
| | | | | Code existed in a separate project before merged into Prosody, so util.promise was not always around.
* net.unbound: Strip support for legacy net.server APIsKim Alvefur2020-06-251-37/+3
| | | | | These are not needed since the watchfd API is provided by all net.server backends.
* net.adns: Log a warning if loaded (because net.unbound wasn't)Kim Alvefur2020-06-251-0/+2
|
* net.unbound: Async DNS resolver library based on libunbound via luaunboundKim Alvefur2019-03-091-0/+245
|
* net.dns: Reduce default timeout to 5sMatthew Wild2020-06-251-1/+1
| | | | | Most healthy queries will return well within this time, and the new retry logic should help spread the cost of additional retries.
* net.dns: Increase backoff delaysMatthew Wild2020-06-251-1/+1
| | | | Not entirely happy with the overall logic here.
* net.dns: Add jitter to spread queries and reduce failures due to congestionMatthew Wild2020-06-251-2/+20
|
* net.dns: Fix timeout retry logicMatthew Wild2020-06-251-16/+21
| | | | | | | On timeout the query would be resent twice - once within servfail(), and again inside the timeout callback. This commit moves all retry logic to servfail().
* net.dns: Add some debug loggingMatthew Wild2020-06-251-0/+4
|
* Merge 0.11->trunkKim Alvefur2020-06-231-1/+2
|\
| * 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.connect: Remove TODO about use_ipv4/6 done in 3bfb20be844cKim Alvefur2020-06-222-2/+0
| |
* | net.server_epoll: Add way to start accepting clients on an arbitrary server ↵Kim Alvefur2020-06-011-4/+9
| | | | | | | | | | | | socket This adds an escape hatch where things like UNIX sockets can be added.
* | net.server_epoll: Handle missing ports from getsock/peername (as in the case ↵Matthew Wild2020-06-011-2/+2
| | | | | | | | of unix sockets)
* | net.server: Switch to epoll backend by defaultMatthew Wild2020-06-011-1/+5
| | | | | | | | (if util.poll is found)
* | 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_epoll: Fix typo in internal method nameKim Alvefur2020-05-221-5/+5
| |
* | net.server_epoll: Log some noise before TLS handshake stepKim Alvefur2020-05-221-0/+1
| | | | | | | | | | This would help pinpoint if a crash happens during the handshake, which has occurred a few times, e.g. like https://github.com/brunoos/luasec/issues/75
* | net.http: Return a Promise if no callback is givenKim Alvefur2020-05-061-1/+17
| |
* | Merge 0.11->trunkKim Alvefur2020-04-261-1/+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.http.server: Use error code from util.error (fixes #1502)Kim Alvefur2020-04-121-0/+1
| | | | | | | | Oversight in 955e54e451dc when this was added.
* | net.dns: Handle being loaded outside of ProsodyKim Alvefur2020-02-241-2/+2
| | | | | | | | | | | | `if timer ...` suggests that this was intended, but it did not work because net.timer depends on net.server which refuses to be loaded outside of Prosody.
* | net.resolvers.service: Fix resolving of targets with multiple IPsKim Alvefur2020-02-161-5/+8
| | | | | | | | | | Each basic resolver was only used once and not kept around to try any IP addresses but the first one found.
* | net.server_epoll: Reduce log level of TLS handshake errors to debugKim Alvefur2020-02-151-1/+1
| | | | | | | | | | | | | | These are triggered all the time by random HTTPS connections, so they are mostly just useless noise. When you actually do need them, you probably have debug logging enabled too, since these messages are fairly useless without more context.
* | net.server_epoll: Different error to distinguish connection timeoutKim Alvefur2020-02-011-1/+2
| | | | | | | | This mirrors what server_event does.
* | net.resolvers.basic: Fix continuing if IPv6 or Legacy IP is disabledKim Alvefur2020-01-261-0/+4
| | | | | | | | | | The code expects ready() to be called twice, but with IPv4 or v6 disabled it would only be called once.
* | net.resolvers.basic: Obey extra.use_ipv4/use_ipv6Matthew Wild2020-01-251-2/+2
| |
* | Backed out changeset 44ef46e1a951 (not optimal API)Matthew Wild2020-01-251-21/+12
| |
* | net.resolvers.basic: Obey use_ipv4/use_ipv6Matthew Wild2020-01-251-14/+19
| |
* | net.adns: Add :lookup_promise() methodMatthew Wild2020-01-241-0/+13
| |
* | net.connect: Add API to create custom connect()s with options, incl. use_ipv[46]Matthew Wild2020-01-241-12/+21
| |
* | 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.http.parser: Add TODO related to #726Kim Alvefur2020-01-011-0/+1
| |
* | 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.