hedley is a single header to handle compiler-specific features:
https://nemequ.github.io/hedley/
Prefer headly macros over glib for now.
Change-Id: I3c67ebee0d43e27fde6402d47788e1045144e864
It seems this is actually allowed by the RFCs; although it is intended
as HTTP/1.0 backward compatibility, and HTTP/1.1 servers (backends)
really should do better.
Change-Id: I93265bfe7fae57beb10d70d3a4596c5cae7b51bd
... so li_stream_simple_socket_close doesn't need to acquire (when the rc might already be 0).
Instead call li_iostream_reset in all places that didn't acquire before,
and drop the acquire.
Change-Id: I347f49eb57989738ed811a1f3a31b8942ff32881
- use decoded path instead of orig raw path (which includes the query
string); the decoded path should be safe, and we also really don't
need to support any "raw" handling - we're at the filesystem level
anyway.
Change-Id: Ic9a5b362bea9813873631b18aaa908c59f2bb0a6
Even if they shouldn't (due to HTTP/1.0 or Connection; close) some
backends send HTTP/1.1 without Connection: close, and use Content-Length
to signal end of response (and don't close the connection, as they wait
for another request).
Now Content-Length is used to find the end of the response (chunked
transfer-encoding was already supported).
mod_proxy now signals HTTP/1.1, but also sends "Connection: close": it
doesn't reuse the connection yet.
Change-Id: Ica0c9b3b7da79899412a746f21e7348ccd3d23ee
readdir_r is deprecated in glibc due to serious memory handling issues
in the API: one cannot pass the size of the allocated dirent.
glibc authors claims readdir is thread-safe in modern implementations,
and expect POSIX to require it in a future version.
No way to check whether readdir is thread-safe though :(
("thread-safe" in this context means different directory streams, which
is good enough.)
Also remove li_dirent_buf_size.
Change-Id: Ia5eae3327e97dc4b0751fb2604ea21c0ce09a5f9
- ENAMETOOLONG:
- static, flv: return 414
- dirlist, pathinfo: treat as not-existing (i.e. no handling)
- also return 500 instead of closing the connection when stat/open
fails an unhandled error
- explicit return instead of switch-case fallthrough (no semantic
change) in actions.c
Change-Id: I1e2dd721dd18544500b4436ada843cb6e7f2db72
- the parser didn't require a comma before, and accepted multiple ones
- comma at end of list still optional
Change-Id: I4bb07ceed9aaceb43a14f7eeb5d364d6718e7acc
- reset backend_source before backend_drain; first tell the backend we
are not interested in data anymore, then force closing the outgoing
data
- as backend_drain might get reopened for a Connection: upgrade, the
backend cannot rely on backend_drain->out.is_closed, but waits for a
disconnect (which will also release the last reference). the same is
done for backend_source, so a backend can just wait for both reference
counts to drop to zero before actually closing the backend connection
(unless it keeps the streams alive itself).
Change-Id: Ibfe7985debd71580dbb78b985abaf946f59e3024
conditional expressions include values to compare with; any
complicated value expression must be put into parantheses.
-> stop parsing after a simple value, don't search for operators,
"and"/"or" operators are handled by the conditional