Nick Vatamaniuc [Fri, 6 May 2022 02:45:41 +0000 (22:45 -0400)]
A bit more cleanup for R15 emsgsize workaround
Since we're not inspecting the message in handle_invalid_msg_request any
longer, we don't have to pass the message in altogether.
Bob Ippolito [Thu, 5 May 2022 22:57:23 +0000 (15:57 -0700)]
Set minimum OTP to 18
Nick Vatamaniuc [Thu, 5 May 2022 21:58:25 +0000 (17:58 -0400)]
Merge pull request #238 from nickva/use-shutdown-for-process-exits
Use {shutdown, Error} when terminating connection processes
Nick Vatamaniuc [Wed, 4 May 2022 17:07:34 +0000 (13:07 -0400)]
Update changes log about the potential exit(normal) incompatibility
Nick Vatamaniuc [Mon, 2 May 2022 19:21:35 +0000 (15:21 -0400)]
Use {shutdown, Error} when terminating connection processes
Previously they exited `normal`, which helped avoid error log spam. However,
that also meant any linked helper processes would not exit when the main
connection process had been terminated.
To automatically clean up any linked processes, and continue avoiding
generating error logs, we can use `{shutdown, Error}` as the exit reason. That
error, along with `shutdown` atom, are special exit reasons which are
considered `normal` for proc_lib processes and will not generate error logs
[1].
Another benefit is having more specific exit reasons (send error, recv error,
etc.), which may help with debugging.
[1] https://www.erlang.org/docs/24/man/proc_lib.html#description
Bob Ippolito [Thu, 10 Mar 2022 15:54:01 +0000 (07:54 -0800)]
Merge pull request #237 from kianmeng/fix-typos
Fix typos
Kian-Meng Ang [Thu, 10 Mar 2022 15:48:38 +0000 (23:48 +0800)]
Fix typos
Bob Ippolito [Mon, 23 Aug 2021 23:15:49 +0000 (16:15 -0700)]
Merge pull request #235 from mochi/automate-hex-publish
Automate hex publish
Bob Ippolito [Mon, 23 Aug 2021 23:13:19 +0000 (16:13 -0700)]
Attempt to automate hex publish
Bob Ippolito [Thu, 8 Jul 2021 20:39:11 +0000 (13:39 -0700)]
Rename master to main
Bob Ippolito [Wed, 28 Jul 2021 22:23:03 +0000 (15:23 -0700)]
Merge pull request #234 from noahshaw11/add-unquote-path-for-separate-+-encoding
Add unquote_path/1 for separate + encoding
ncshaw [Wed, 28 Jul 2021 21:35:44 +0000 (17:35 -0400)]
Add unquote_path/1 for separate + encoding
Bob Ippolito [Mon, 7 Jun 2021 03:54:02 +0000 (20:54 -0700)]
Merge pull request #232 from mochi/v2.21.0
v2.21.0 and try github actions
Bob Ippolito [Mon, 7 Jun 2021 01:56:40 +0000 (18:56 -0700)]
v2.21.0 and try github actions
Bob Ippolito [Fri, 4 Jun 2021 16:15:00 +0000 (09:15 -0700)]
Merge pull request #231 from noahshaw11/upgrade-crypto-functions-to-support-OTP-23
Upgrade crypto functions to support OTP 23
ncshaw [Tue, 25 May 2021 17:46:21 +0000 (13:46 -0400)]
Upgrade crypto functions to support OTP 23
Bob Ippolito [Fri, 14 Feb 2020 16:43:08 +0000 (08:43 -0800)]
Merge pull request #229 from mochi/fix-release
fix release number
Benoit Chesneau [Fri, 14 Feb 2020 15:55:22 +0000 (16:55 +0100)]
fix release number
Bob Ippolito [Mon, 3 Feb 2020 17:48:18 +0000 (09:48 -0800)]
Merge pull request #228 from mochi/changes-v2.20.1
Update CHANGES for v2.20.1
Bob Ippolito [Mon, 3 Feb 2020 17:42:48 +0000 (09:42 -0800)]
Update CHANGES for v2.20.1
Benoit Chesneau [Mon, 3 Feb 2020 10:02:50 +0000 (11:02 +0100)]
remove deprecated metadata
Bob Ippolito [Mon, 15 Jul 2019 01:46:36 +0000 (21:46 -0400)]
Merge pull request #226 from mochi/otp-22
Update CHANGES and add OTP 21.3, 22 to travis matrix
Bob Ippolito [Mon, 15 Jul 2019 01:39:43 +0000 (21:39 -0400)]
Update CHANGES and add OTP 21.3, 22 to travis matrix
Bob Ippolito [Mon, 15 Jul 2019 01:34:21 +0000 (21:34 -0400)]
Merge pull request #225 from djnym/support-samesite-none
add support for SameSite=none in cookies
Anthony Molinaro [Fri, 12 Jul 2019 22:00:34 +0000 (22:00 +0000)]
add support for SameSite=none in cookies
Bob Ippolito [Sun, 26 May 2019 02:19:02 +0000 (19:19 -0700)]
Merge pull request #220 from penhs/master
Update README.md
Bob Ippolito [Wed, 22 May 2019 03:41:21 +0000 (20:41 -0700)]
Use https for URLs in README.md
Bob Ippolito [Wed, 22 May 2019 03:39:49 +0000 (20:39 -0700)]
Merge pull request #221 from mochi/fix-travis-build
Use dist: trusty for Travis builds with old Erlang releases
Bob Ippolito [Wed, 22 May 2019 03:31:18 +0000 (20:31 -0700)]
Use a matrix to get an older dist for old releases
Bob Ippolito [Wed, 22 May 2019 03:24:56 +0000 (20:24 -0700)]
Debug Travis, it seems like older releases are not working
penhs [Wed, 22 May 2019 00:26:37 +0000 (17:26 -0700)]
Update README.md
penhs [Wed, 22 May 2019 00:24:46 +0000 (17:24 -0700)]
Update README.md
Bob Ippolito [Tue, 12 Mar 2019 20:07:23 +0000 (13:07 -0700)]
Merge pull request #215 from mochi/remove-tuple-calls
Remove tuple calls
Bob Ippolito [Tue, 12 Mar 2019 03:49:26 +0000 (03:49 +0000)]
Run erl_tidy on modified source files
```erlang
lists:foreach(
fun (F) -> erl_tidy:file(F, [{backups, false}, keep_unused]) end,
string:split(
string:trim(
os:cmd("git diff --name-only origin/master | grep \".erl$\"")
),
"\n",
all
)
).
```
Bob Ippolito [Tue, 12 Mar 2019 01:41:45 +0000 (01:41 +0000)]
Remove compile(tuple_calls) from test/mochiweb_request_tests
Bob Ippolito [Tue, 12 Mar 2019 01:32:24 +0000 (01:32 +0000)]
Remove compile(tuple_calls) from test/mochiweb_tests
Bob Ippolito [Tue, 12 Mar 2019 01:32:14 +0000 (01:32 +0000)]
Remove compile(tuple_calls) from test/mochiweb_websocket_tests
Bob Ippolito [Tue, 12 Mar 2019 01:26:08 +0000 (01:26 +0000)]
Remove compile(tuple_calls) from test/mochiweb_http_tests
Bob Ippolito [Mon, 11 Mar 2019 22:57:58 +0000 (22:57 +0000)]
Remove compile(tuple_calls) from examples/keepalive
Bob Ippolito [Mon, 11 Mar 2019 22:55:44 +0000 (22:55 +0000)]
Remove compile(tuple_calls) from examples/https_store
Bob Ippolito [Mon, 11 Mar 2019 22:51:02 +0000 (22:51 +0000)]
Remove compile(tuple_calls) from examples/hmac_api
Bob Ippolito [Mon, 11 Mar 2019 22:45:20 +0000 (22:45 +0000)]
Remove compile(tuple_calls) from the template
Bob Ippolito [Sat, 9 Mar 2019 21:00:29 +0000 (21:00 +0000)]
Remove compile(tuple_calls) from mochiweb_websocket
Bob Ippolito [Sat, 9 Mar 2019 20:53:33 +0000 (20:53 +0000)]
Remove compile(tuple_calls) from mochiweb_response
Bob Ippolito [Sat, 9 Mar 2019 20:50:54 +0000 (20:50 +0000)]
Remove compile(tuple_calls) from mochiweb_request
Bob Ippolito [Sat, 9 Mar 2019 20:47:44 +0000 (20:47 +0000)]
Remove compile(tuple_calls) from mochiweb_multipart
Bob Ippolito [Sat, 9 Mar 2019 20:43:12 +0000 (20:43 +0000)]
Remove compile(tuple_calls) from mochiweb_http
Bob Ippolito [Sat, 9 Mar 2019 20:38:37 +0000 (20:38 +0000)]
Remove compile(tuple_calls) from mochiweb_acceptor
Bob Ippolito [Sat, 9 Mar 2019 20:28:47 +0000 (20:28 +0000)]
Remove compile(tuple_calls) from mochifmt
Bob Ippolito [Mon, 4 Mar 2019 16:55:44 +0000 (08:55 -0800)]
Merge pull request #213 from mochi/lego12239-master
fix cookie value parsing (follow up)
Bob Ippolito [Mon, 4 Mar 2019 16:45:59 +0000 (16:45 +0000)]
Use more direct translation of RFC 6265 grammar
Oleg Nemanov [Mon, 4 Mar 2019 12:24:50 +0000 (15:24 +0300)]
fix cookie value parsing
Cookie value(according to RFC6265) can contain US-ASCII characters
excluding CTLs, whitespace, DQUOTE, comma, semicolon and backslash:
cookie-header = "Cookie:" OWS cookie-string OWS
cookie-string = cookie-pair *( ";" SP cookie-pair )
cookie-pair = cookie-name "=" cookie-value
cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
But mochiweb_cookie:parse_cookie() use smaller allowed characters list.
For example, if cookie value is base64 string like MQ==,
then parse_cookie() makes it MQ.
Fix this by using a separate function for value parsing instead of
read_token().
Bob Ippolito [Thu, 17 Jan 2019 18:01:02 +0000 (18:01 +0000)]
Add missing issue URL to CHANGES.md
Bob Ippolito [Thu, 17 Jan 2019 17:57:12 +0000 (09:57 -0800)]
Merge pull request #210 from mochi/otp-21.2
Add 21.1 and 21.2.3 to otp_release matrix
Bob Ippolito [Thu, 17 Jan 2019 17:56:51 +0000 (17:56 +0000)]
Update CHANGES.md with release date
Bob Ippolito [Wed, 16 Jan 2019 17:50:30 +0000 (09:50 -0800)]
Note this PR. Still have to wait a day for Travis-CI to have this build available
Bob Ippolito [Wed, 16 Jan 2019 17:38:25 +0000 (09:38 -0800)]
Confirmed that 21.2.3 is compatible
Bob Ippolito [Tue, 15 Jan 2019 23:18:11 +0000 (15:18 -0800)]
Update vsn and CHANGES in prep for a release (waiting for an OTP maint release that fixes SSL)
Bob Ippolito [Tue, 15 Jan 2019 23:14:16 +0000 (15:14 -0800)]
Update README.md
Bob Ippolito [Tue, 15 Jan 2019 23:08:21 +0000 (15:08 -0800)]
Add a runtime SSL compatibility check for OTP 21 releases
Bob Ippolito [Thu, 10 Jan 2019 20:16:29 +0000 (12:16 -0800)]
Conditional ssl:handshake/2
Bob Ippolito [Thu, 10 Jan 2019 20:09:24 +0000 (12:09 -0800)]
Use ssl:handshake/2 unconditionally to see when it is first available
Bob Ippolito [Thu, 10 Jan 2019 19:58:57 +0000 (11:58 -0800)]
Add 21.1 and 21.2 to otp_release matrix
Bob Ippolito [Tue, 18 Dec 2018 00:18:27 +0000 (16:18 -0800)]
Merge pull request #208 from nickva/add-buffer-setting
Allow setting {buffer, Buffer} socket server option
Nick Vatamaniuc [Thu, 13 Dec 2018 22:48:08 +0000 (17:48 -0500)]
Allow setting {buffer, Buffer} socket server option
If `recbuf` is `undefined` then buffer size is set explicitly to the
previous `recbuf` default of 8192.
The recent option `{recbuf, undefined}` to allow sockets to pick up optimal OS
default kernel buffer sizes inadvertently reset Erlang's userland buffer size
to a default value of 1460. This buffer size, due to a longstanding bug in
Erlang http parser, limits the maximum URL line that can be parsed by the
{packet, http} socket option, and so breaks existing code.
For example this shows how recbuf also sets buffer size:
```
> f(), SockInfo = fun(S) -> inet:getopts(S, [recbuf, buffer]) end, {ok, LS} = gen_tcp:listen(0, [{recbuf, 8192}]), LRes = SockInfo(LS).
{ok,[{recbuf,8192},{buffer,8192}]}
```
Not setting recbuf resets buffer size to 1460:
```
f(), SockInfo = fun(S) -> inet:getopts(S, [recbuf, buffer]) end, {ok, LS} = gen_tcp:listen(0, []), LRes = SockInfo(LS).
{ok,[{recbuf,131072},{buffer,1460}]}
```
References:
https://github.com/apache/couchdb/issues/1810
http://erlang.org/pipermail/erlang-questions/2011-June/059571.html
http://erlang.org/doc/man/inet.html#setopts-2
Bob Ippolito [Mon, 3 Dec 2018 19:06:20 +0000 (11:06 -0800)]
Merge pull request #206 from lego12239/master
add map support for mochijson2:decode/2
Oleg Nemanov [Fri, 30 Nov 2018 11:37:53 +0000 (14:37 +0300)]
add map support for mochijson2:decode/2
Option {format, map} switch output to map.
Bob Ippolito [Wed, 26 Sep 2018 20:33:30 +0000 (16:33 -0400)]
Merge pull request #205 from choptastic/exit_if_inval
Don't crash if a socket is closed server side
Jesse Gumm [Wed, 26 Sep 2018 20:19:33 +0000 (15:19 -0500)]
Don't crash of a socket is closed server side
If for some reason, the programmer decides to close the socket server side,
the return value for setopts on the socket is {error, einval} rather than
{error, closed}. This change accepts that and suppresses the error message
generated.
Bob Ippolito [Wed, 26 Sep 2018 00:18:00 +0000 (20:18 -0400)]
Merge pull request #204 from nickva/fix-erlang-21-compatibility
Fix Erlang 21 compatibility
Nick Vatamaniuc [Tue, 25 Sep 2018 21:25:27 +0000 (17:25 -0400)]
Fix Erlang 21 compatibility
Robert Newson [Sat, 22 Sep 2018 15:00:46 +0000 (16:00 +0100)]
Add support for SameSite cookie setting (#203)
Ref: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02
Benoit Chesneau [Tue, 24 Jul 2018 04:56:52 +0000 (06:56 +0200)]
add OTP 21 to CI
Benoit Chesneau [Tue, 24 Jul 2018 04:50:30 +0000 (06:50 +0200)]
Merge pull request #198 from gdamjan/master
add tuple_calls compiler flag for erlang 21
Дамјан Георгиевски [Mon, 25 Jun 2018 11:59:57 +0000 (13:59 +0200)]
add tuple_calls compiler flag for erlang 21
From http://www.erlang.org/news/123 :
* "Tuple calls" have been removed from the run-time system.
http://erlang.org/download/otp_src_21.0.readme
* OTP-14497
For legacy code that need to use parameterized modules
or tuple calls for some other reason, there is a new
compiler option called tuple_calls. When this option is
given, the compiler will generate extra code that
emulates the old behavior for calls where the module is
a variable.
Bob Ippolito [Sat, 12 May 2018 20:27:31 +0000 (20:27 +0000)]
Update CHANGES.md for v2.18.0
GeraldXv [Sat, 12 May 2018 20:10:12 +0000 (04:10 +0800)]
Add the Shared Address Space address range (#193)
* update private ip range
update private ip range
* Add the Shared Address Space address range
Bob Ippolito [Sat, 12 Aug 2017 23:31:36 +0000 (16:31 -0700)]
Merge branch 'master' of github.com:mochi/mochiweb
Bob Ippolito [Sat, 12 Aug 2017 23:31:29 +0000 (16:31 -0700)]
Update CHANGES.md for v2.17.0
Ben Olive [Sat, 12 Aug 2017 23:28:33 +0000 (19:28 -0400)]
Handle missing closing tag for all empty elements (#190)
I got the full list of elements from:
https://developer.mozilla.org/en-US/docs/Glossary/empty_element
Robert Newson [Sat, 12 Aug 2017 23:28:12 +0000 (00:28 +0100)]
Send 400 Bad Request if request line exceeds recbuf (#191)
I broke this back in
61a65fea7d6b1e9f93c4a2c6b96e96dee02bec6e. :/
Bob Ippolito [Sat, 12 Aug 2017 23:27:50 +0000 (16:27 -0700)]
remove remaining export_all
Bob Ippolito [Sat, 12 Aug 2017 23:24:01 +0000 (16:24 -0700)]
Getong erlang 20 fix (#192)
* add 20 compile module option: nowarn_export_all
* crypto:rand_uniform/2 is deprecated and will be removed in a future release; use rand:uniform/1
* add 20
* otp20 cleanup
* remove nowarn_export_all
* correct off by one error in rand_uniform/2
Bob Ippolito [Mon, 19 Dec 2016 18:44:11 +0000 (10:44 -0800)]
v2.16.0
Bob Ippolito [Mon, 19 Dec 2016 18:41:43 +0000 (10:41 -0800)]
Merge branch 'TheProductWorks-map_support_on_json_parsing'
Bob Ippolito [Mon, 19 Dec 2016 18:24:37 +0000 (10:24 -0800)]
Refactor #184 for less redundant code
Bob Ippolito [Mon, 19 Dec 2016 16:13:26 +0000 (08:13 -0800)]
Merge branch 'map_support_on_json_parsing' of git://github.com/TheProductWorks/mochiweb into TheProductWorks-map_support_on_json_parsing
kyletrueex [Sun, 18 Dec 2016 19:00:04 +0000 (14:00 -0500)]
adding the other RFC1918 addresss space to the allowed x-forwarded-for header (#183)
Máté Marjai [Sat, 17 Dec 2016 20:54:21 +0000 (20:54 +0000)]
Added conditional map support for mochijson2:encode.
Bob Ippolito [Fri, 24 Jun 2016 22:02:40 +0000 (15:02 -0700)]
Update CHANGES.md and version to v2.15.1
Bob Ippolito [Fri, 24 Jun 2016 21:49:19 +0000 (14:49 -0700)]
Add Erlang 19.0 to travis test matrix
Umberto Corponi [Fri, 24 Jun 2016 21:45:26 +0000 (23:45 +0200)]
Fix otp19 deprecation (#177)
* Fix warning for deprecated of crypto:rand_bytes/1
Since OTP 19 crypto:rand_bytes/1 has been deprecated
in favour of crypto:strong_rand_bytes/1.
* Fix warning for deprecated of random module
Since OTP 19 random has been deprecated in favour of rand.
Benoit Chesneau [Sat, 18 Jun 2016 17:19:29 +0000 (19:19 +0200)]
Merge pull request #176 from benoitc/master
add metadata for mochiweb
benoitc [Sat, 18 Jun 2016 17:18:08 +0000 (19:18 +0200)]
add metadata for mochiweb
Bob Ippolito [Mon, 9 May 2016 00:10:38 +0000 (17:10 -0700)]
Merge branch 'lego12239-master'
Bob Ippolito [Mon, 9 May 2016 00:10:30 +0000 (17:10 -0700)]
Update CHANGES.md for v2.15.0
Oleg Nemanov [Wed, 27 Apr 2016 10:18:03 +0000 (13:18 +0300)]
Remove duplicate slashes from an uri path.
Now Req:get(path) returns a path without duplicate slashes.
E.g. uri path "//foo///bar////" becomes "/foo/bar/".
Signed-off-by: Oleg Nemanov <lego12239@yandex.ru>
Oleg Nemanov [Wed, 27 Apr 2016 10:15:43 +0000 (13:15 +0300)]
Add normalize_path/1 function to mochiweb_util.
Function removes duplicate slashes from a string supplied as a first function
argument.
Signed-off-by: Oleg Nemanov <lego12239@yandex.ru>
Bob Ippolito [Tue, 12 Apr 2016 02:11:28 +0000 (19:11 -0700)]
v2.14.0
Bob Ippolito [Tue, 12 Apr 2016 02:09:20 +0000 (19:09 -0700)]
Merge branch 'master' of https://github.com/mochi/mochiweb