* master: (36 commits)
chore: Update internal version references to match release (#370)
chore: Release v3.0.0
chore: Copy-edit description in dev rockspec
docs: Drop obsolete changelog from docs index
chore: Start a Markdown era readme
chore: Draft v3 release notes
chore: Refactor existing news file as a changelog
ci: Use reusable workflow for luarocks deploy
ci: Utilize new upstream Luacheck Action (#367)
chore; add Lua 5.4 to make files
Update LICENSE to be recognizable as MIT (#363)
Update URL references to source repository
Move doc→docs so we can serve it with GitHub Pages
fix(docs) references to some constants added (#359)
fix(docs) fix html linter issues in the docs (#358)
ci: Don't bother doing user-local install in ephemeral runner
ci: Disable unsupported Windows and avoid duplicate runs
ci: Expand test matrix to cover Windows and macOS
Ci: Run regression tests after successful build
http.lua: set transfer-encoding if source and no content-length
...
If a source is specified without a content-length header, LuaSocket
sends the data in the chunked transfer coding; however, it doesn't set
the transfer-encoding header. While I recognize that the user can set
this manually, this is a gotcha that has caught me multiple times.
RFC7230, section 3.3.3
(https://tools.ietf.org/html/rfc7230#section-3.3.3)
is clear about this; if neither content-length nor transfer-encoding
chunked are specified, the request message body length is zero. While
some servers may ignore this, I have encountered several that follow
the RFC in this regard, most recently golang's net/http.
Some systems like Mac OS X 10.5 (and lower) do not have EAI_OVERFLOW and
AI_NUMERICSERV defined.
These variables are used to avoid a potentially slow name resolution
for the hostname (which will always be an ip address)
and for service name (which will always be an actual port number).
The code might be slower, but it should still work.
Closes: #242