aboutsummaryrefslogtreecommitdiffstats
path: root/net/http.lua
Commit message (Collapse)AuthorAgeFilesLines
* net.http: Set Connection header based on connection pool usageKim Alvefur2023-11-111-1/+8
| | | | Connection: keep-alive is implicit in HTTP/1.1 but explicit > implicit
* net.http: Add simple connection poolingKim Alvefur2023-11-111-1/+38
| | | | | | | | | | | | | | This should speed up repeated requests to the same site by keeping their connections around and sending more requests on them. Sending multiple requests at the same time is not supported, instead a request started while another to the same authority is in progress would open a new one and the first one to complete would go back in the pool. This could be investigated in the future. Some http servers limit the number of requests per connection and this is not tested and could cause one request to fail, but hopefully it will close the connection and prevent it from being reused.
* net: Prefix module imports with prosody namespaceKim Alvefur2023-03-171-11/+11
|
* net.http: Add missing log parameterMatthew Wild2023-02-091-1/+1
|
* net.http: Allow using DANE via options or per request settingsKim Alvefur2022-02-051-1/+5
| | | | Dare to enable by default?
* net.http: fail open if surrounding code does not configure TLSJonas Schäfer2021-08-291-1/+1
| | | | | | | | | | | Previously, if surrounding code was not configuring the TLS context used default in net.http, it would not validate certificates at all. This is not a security issue with prosody, because prosody updates the context with `verify = "peer"` as well as paths to CA certificates in util.startup.init_http_client. Nevertheless... Let's not leave this pitfall out there in the open.
* net.http: Send entire HTTP request header as one writeKim Alvefur2021-07-081-5/+3
| | | | | | | | | | | | | | When opportunistic writes are enabled this reduces the number of syscalls and TCP packets sent on the wire. Experiments with TCP Fast Open made this even more obvious. That table trick probably wasn't as efficient. Lua generates bytecode for a table with zero array slots and space for two entries in the hash part, plus code to set [2] and [4]. I didn't verify but I suspect it would have had to resize the table when setting [1] and [3], although probably only once. Concatenating the strings directly in Lua is easier to read and involves no extra table or function call.
* net.http: track time of request for debug/stats purposesMatthew Wild2020-12-091-0/+2
|
* net.http: Add support for streaming chunked/large responsesMatthew Wild2020-10-211-0/+18
|
* Merge 0.11->trunkMatthew Wild2020-09-151-0/+3
|\
| * 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-171-1/+1
| | | | | | | | | | | | | | | | | | | | 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: http.request() promise now resolves with response (breaking change)Matthew Wild2020-08-251-1/+2
| | | | | | | | | | | | | | Promise mode is not (widely?) used, changing this now while we can, as it improves usability of the API. The request is now available as response.request, if needed.
* | net.http: use new net.http.errors lib for creating error objectMatthew Wild2020-08-251-2/+2
| |
* | Merge 0.11->trunkMatthew Wild2020-08-081-0/+12
|\|
| * 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+.
* | Merge 0.11->trunkMatthew Wild2020-07-071-2/+3
|\|
| * net.http: Fix traceback on invalid URL passed to request()Matthew Wild2020-07-071-2/+3
| |
* | net.http: Return a Promise if no callback is givenKim Alvefur2020-05-061-1/+17
| |
* | 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.http: Pass server name along for SNI (fixes #1408)Kim Alvefur2019-09-011-1/+1
| | | | | | | | net.resolver.basic passes this 'extra' field along to server.addclient
* | net.*: Remove tostring call from loggingKim Alvefur2019-07-301-2/+2
|/ | | | Taken care of by loggingmanager now
* 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
* Many things: switch from hacky multi-arg xpcall implementations to a ↵Matthew Wild2018-10-261-3/+4
| | | | standard util.xpcall
* Merge 0.10->trunkKim Alvefur2018-04-061-0/+1
|\
| * net.http: Import setmetatable into local scope (fixes #1125)Kim Alvefur2018-04-061-0/+1
| |
* | Merge 0.10 -> trunkMatthew Wild2018-04-041-1/+1
|\|
| * net.http: Fix parameter order to http request callbacksMatthew Wild2018-04-041-1/+1
| | | | | | | | | | | | Commit e3b9dc9dd940 changed the parameter order in 2013, but did not update the names of the parameters in the callback function. Due to this inconsistency, 12df41a5a4b1 accidentally reversed the order when fixing the variable names without fixing where they are used. Additionally the documentation was incorrect (since 2013), and this has also now been fixed.
* | net.http: Allow enabling/disabling error suppression, useful for testsMatthew Wild2018-03-241-2/+7
| |
* | net.http: Fix for Lua 5.2: return error from error handler (xpcall changed)Matthew Wild2018-03-241-1/+1
| |
* | vairious: Add annotation when an empty environment is set [luacheck]Kim Alvefur2018-02-281-0/+1
| |
* | net.http: Refactor to use new net.connect API, brings support for async DNSMatthew Wild2018-02-261-70/+81
| |
* | net.http: Rename handler to conn, for consistency with all our other codeMatthew Wild2018-02-231-3/+3
| |
* | net.http: Remove use of 'conn' (raw socket object returned by addclient)Matthew Wild2018-02-231-9/+10
|/
* net.http: Add option for disabling TLS certifictate validationKim Alvefur2017-07-071-1/+2
|
* net.http: Validate HTTPS certificates (fixes #659)Kim Alvefur2017-07-071-0/+21
|
* net.http: Move default SSL/TLS settings into options, allowing them to be ↵Kim Alvefur2017-07-071-2/+4
| | | | overriden in new()
* net.http: Expose defaultsKim Alvefur2017-07-071-0/+1
|
* net.http: Remove duplicate 'request' entryKim Alvefur2017-07-071-1/+0
|
* net.http: Add request.url, which is the original full URL as a stringMatthew Wild2017-04-211-0/+1
|
* net.http: Fire new events: pre-request, request-connection-error, request, ↵Matthew Wild2017-04-211-1/+19
| | | | response
* net.http: Allow creation of http client objects, with custom optionsMatthew Wild2017-04-211-3/+22
|
* net.http: Pass error all the way to callbackKim Alvefur2017-04-021-3/+3
|
* net.http: Strip trailing whitespaceKim Alvefur2016-12-301-1/+1
|
* net.http: Remove unused imports [luacheck]Kim Alvefur2016-12-301-3/+3
|
* net.http: Add quotes around ids in log messagesMatthew Wild2016-07-271-3/+3
|
* net.http: Add log messages for requests, including their id (so "calling ↵Matthew Wild2016-07-071-1/+13
| | | | callback" and tracebacks can be traced back to their initial request)
* net.http: Add request.id to every request object (can be overridden by ↵Matthew Wild2016-07-071-0/+4
| | | | providing ex.id)
* net/http: Use server.addclientdaurnimator2013-12-181-11/+6
|