summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-09-27 10:23:12 +0200
committerLoïc Hoguin <[email protected]>2019-09-27 10:23:12 +0200
commit9c173da6bd647a101bacf38aea488f5e2b304c62 (patch)
tree81abd601eeceb1fd92dc26a4922bdc646026edda
parente39252ae5048156ac33999ce9bb07212798b6b80 (diff)
downloadninenines.eu-9c173da6bd647a101bacf38aea488f5e2b304c62.tar.gz
ninenines.eu-9c173da6bd647a101bacf38aea488f5e2b304c62.tar.bz2
ninenines.eu-9c173da6bd647a101bacf38aea488f5e2b304c62.zip
Gun 2.0.0-pre.1
-rw-r--r--_build/content/articles/gun-2.0.0-pre.1.asciidoc72
-rw-r--r--_build/data/projects/cowboy.toml2
-rw-r--r--_build/data/projects/gun.toml2
-rw-r--r--articles/asciideck/index.html4
-rw-r--r--articles/cowboy-2.0.0-pre.4/index.html4
-rw-r--r--articles/cowboy-2.0.0-rc.1/index.html4
-rw-r--r--articles/cowboy-2.0.0-rc.2/index.html4
-rw-r--r--articles/cowboy-2.0.0/index.html4
-rw-r--r--articles/cowboy-2.1.0/index.html4
-rw-r--r--articles/cowboy-2.2.0/index.html4
-rw-r--r--articles/cowboy-2.3.0/index.html4
-rw-r--r--articles/cowboy-2.4.0/index.html4
-rw-r--r--articles/cowboy-2.5.0/index.html4
-rw-r--r--articles/cowboy-2.6.0/index.html4
-rw-r--r--articles/cowboy2-qs/index.html4
-rw-r--r--articles/dont-let-it-crash/index.html4
-rw-r--r--articles/erlang-meetup-10-septembre-2019/index.html4
-rw-r--r--articles/erlang-scalability/index.html4
-rw-r--r--articles/erlang-validate-utf8/index.html4
-rw-r--r--articles/erlang.mk-and-relx/index.html4
-rw-r--r--articles/erlanger-playbook-september-2015-update/index.html4
-rw-r--r--articles/erlanger-playbook/index.html4
-rw-r--r--articles/farwest-funded/index.html4
-rw-r--r--articles/gun-1.0.0-rc.1/index.html4
-rw-r--r--articles/gun-1.0.0/index.html4
-rw-r--r--articles/gun-1.2.0/index.html4
-rw-r--r--articles/gun-1.3.0/index.html4
-rw-r--r--articles/gun-2.0.0-pre.1/index.html307
-rw-r--r--articles/index.html36
-rw-r--r--articles/index.xml13
-rw-r--r--articles/january-2014-status/index.html4
-rw-r--r--articles/joe_the_rubber_duck/index.html4
-rw-r--r--articles/merry-christmas-2018/index.html4
-rw-r--r--articles/ml-archives/index.html4
-rw-r--r--articles/on-open-source/index.html4
-rw-r--r--articles/page/2/index.html38
-rw-r--r--articles/page/3/index.html20
-rw-r--r--articles/ranch-1.3/index.html4
-rw-r--r--articles/ranch-1.6.0/index.html4
-rw-r--r--articles/ranch-1.7.0/index.html4
-rw-r--r--articles/ranch-2.0.0-rc.1/index.html4
-rw-r--r--articles/ranch-ftp/index.html4
-rw-r--r--articles/the-elephant-in-the-room/index.html4
-rw-r--r--articles/the-story-so-far/index.html4
-rw-r--r--articles/tictactoe/index.html4
-rw-r--r--articles/website-update/index.html4
-rw-r--r--articles/xerl-0.1-empty-modules/index.html4
-rw-r--r--articles/xerl-0.2-two-modules/index.html4
-rw-r--r--articles/xerl-0.3-atomic-expressions/index.html4
-rw-r--r--articles/xerl-0.4-expression-separator/index.html4
-rw-r--r--articles/xerl-0.5-intermediate-module/index.html4
-rw-r--r--docs/en/gun/1.3/guide/index.html4
-rw-r--r--docs/en/gun/1.3/guide/migrating_from_1.2/index.html4
-rw-r--r--docs/en/gun/1.3/guide/migrating_from_1.3.asciidoc14
-rw-r--r--docs/en/gun/1.3/guide/migrating_from_1.3/index.html185
-rw-r--r--docs/en/gun/1.3/guide/websocket/index.html4
-rw-r--r--docs/en/gun/2.0/guide/index.html4
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.0.asciidoc2
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.1.asciidoc4
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.2.asciidoc2
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.2/index.html4
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.3.asciidoc220
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.3/index.html284
-rw-r--r--docs/en/gun/2.0/guide/websocket/index.html4
-rw-r--r--docs/en/gun/2.0/manual/gun/index.html22
-rw-r--r--docs/index.xml1138
-rw-r--r--donate/index.html106
-rw-r--r--index.html112
-rw-r--r--index.xml1151
-rw-r--r--services/index.html106
-rw-r--r--sitemap.xml430
71 files changed, 3770 insertions, 692 deletions
diff --git a/_build/content/articles/gun-2.0.0-pre.1.asciidoc b/_build/content/articles/gun-2.0.0-pre.1.asciidoc
new file mode 100644
index 00000000..05680856
--- /dev/null
+++ b/_build/content/articles/gun-2.0.0-pre.1.asciidoc
@@ -0,0 +1,72 @@
++++
+date = "2019-09-27T07:00:00+01:00"
+title = "Gun 2.0 pre-release 1"
+
++++
+
+Gun `2.0.0-pre.1` has been released!
+
+The first pre-release version of Gun 2.0 has been released!
+Gun 2.0 adds a ton of features along with a small number of
+breaking changes.
+
+Before listing the features please note that this pre-release
+includes a fix for a potential security vulnerability! This
+only applies when Gun is used inside a proxy under specific
+circumstances. Please see the migration guide for details.
+Since the issue also exists in the previous version I have
+released Gun `1.3.1` as well that fixes this issue.
+
+Much of my focus for Gun 2.0 has been improving the support
+for connecting through proxies. Gun now supports both Socks5
+and CONNECT proxies, but most importantly Gun is now able
+to tunnel TLS connections through TLS proxies. Gun is also
+able to tunnel connections through any combination of proxies,
+for example Socks5 TCP to CONNECT TLS to Socks5 TLS to origin
+server using TLS.
+
+Gun does not support HTTP/2 CONNECT yet but this is a planned
+feature that will be the main focus for the next pre-release.
+Along with it support for Websocket over HTTP/2 will be added
+since it reuses the HTTP/2 CONNECT mechanism.
+
+Other features include the graceful shutdown of connections;
+flow control for data messages; or event handlers with many hook
+points for instrumentation and other purposes.
+
+While experimental at the time of the pre-release, Gun can
+now be used to send and receive non-HTTP/Websocket data.
+Gun can therefore be used as a Socks/CONNECT client for
+any protocol. Gun can also use the HTTP/1.1 Upgrade mechanism
+to switch to any protocol. This feature will be documented
+before the Gun 2.0 release.
+
+The HTTP/2 code has seen numerous fixes thanks to merging
+Gun's and Cowboy's code together. In addition Gun will now
+receive HTTP/2 response bodies much faster than before thanks
+to better defaults and optimizations.
+
+Gun 2.0 currently requires Erlang/OTP 20 or above and is tested
+and supported on Linux, FreeBSD, macOS and Windows.
+
+A complete
+list of changes can be found in the migration guide:
+https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/[Migrating from Gun 1.3 to 2.0].
+
+I will have more free time available for consulting or for
+paid open source development starting from next week. If you
+are interested, drop me an email at mailto:[email protected][[email protected]].
+I have gathered that there's interest in a pure Erlang GRPC
+implementation, and there's also QUIC and HTTP/3 that will
+be ready soon, for example of projects I'd be interested in
+working on.
+
+You can donate to this project via
+https://salt.bountysource.com/teams/ninenines[BountySource].
+These funds are used to pay for additional servers for
+testing. We will soon add two Raspberry Pi 4 in order
+to have some ARM targets when testing. (The Pis are here!
+Just need to install now.)
+
+As usual, feedback is appreciated, and issues or
+questions should be sent via Github tickets. Thanks!
diff --git a/_build/data/projects/cowboy.toml b/_build/data/projects/cowboy.toml
index 72cdeb30..2720091c 100644
--- a/_build/data/projects/cowboy.toml
+++ b/_build/data/projects/cowboy.toml
@@ -4,7 +4,7 @@ description = "Cowboy is the ultimate server for the modern Web with support for
name = "cowboy"
repository = "https://github.com/ninenines/cowboy"
versions = ["2.6", "2.5", "2.4", "2.3", "2.2"]
-branches = ["master", "2.5.0", "2.4.0", "2.3.0", "2.2.2"]
+branches = ["2.6.3", "2.5.0", "2.4.0", "2.3.0", "2.2.2"]
has_source = true
has_guide = true
has_manual = true
diff --git a/_build/data/projects/gun.toml b/_build/data/projects/gun.toml
index 4977be7d..79280d82 100644
--- a/_build/data/projects/gun.toml
+++ b/_build/data/projects/gun.toml
@@ -4,7 +4,7 @@ description = "Asynchronous, always-connected client with support for HTTP/1.1,
name = "gun"
repository = "https://github.com/ninenines/gun"
versions = ["2.0", "1.3", "1.2", "1.1", "1.0"]
-branches = ["master", "1.3.0", "1.2.0", "1.1.0", "1.0.0"]
+branches = ["master", "1.3.1", "1.2.0", "1.1.0", "1.0.0"]
has_source = true
has_guide = true
has_manual = true
diff --git a/articles/asciideck/index.html b/articles/asciideck/index.html
index 3d0b2c0c..d15bac27 100644
--- a/articles/asciideck/index.html
+++ b/articles/asciideck/index.html
@@ -110,6 +110,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.0.0-pre.4/index.html b/articles/cowboy-2.0.0-pre.4/index.html
index 87a302d7..68546c82 100644
--- a/articles/cowboy-2.0.0-pre.4/index.html
+++ b/articles/cowboy-2.0.0-pre.4/index.html
@@ -129,6 +129,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.0.0-rc.1/index.html b/articles/cowboy-2.0.0-rc.1/index.html
index 5c4abb86..b7b675f8 100644
--- a/articles/cowboy-2.0.0-rc.1/index.html
+++ b/articles/cowboy-2.0.0-rc.1/index.html
@@ -100,6 +100,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.0.0-rc.2/index.html b/articles/cowboy-2.0.0-rc.2/index.html
index d97ae681..ae11ebc1 100644
--- a/articles/cowboy-2.0.0-rc.2/index.html
+++ b/articles/cowboy-2.0.0-rc.2/index.html
@@ -93,6 +93,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.0.0/index.html b/articles/cowboy-2.0.0/index.html
index ecf37330..5b986030 100644
--- a/articles/cowboy-2.0.0/index.html
+++ b/articles/cowboy-2.0.0/index.html
@@ -99,6 +99,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.1.0/index.html b/articles/cowboy-2.1.0/index.html
index 2acd2d18..39381e67 100644
--- a/articles/cowboy-2.1.0/index.html
+++ b/articles/cowboy-2.1.0/index.html
@@ -96,6 +96,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.2.0/index.html b/articles/cowboy-2.2.0/index.html
index 593ddbc9..d7f4460e 100644
--- a/articles/cowboy-2.2.0/index.html
+++ b/articles/cowboy-2.2.0/index.html
@@ -94,6 +94,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.3.0/index.html b/articles/cowboy-2.3.0/index.html
index 25541ce0..5f62ef99 100644
--- a/articles/cowboy-2.3.0/index.html
+++ b/articles/cowboy-2.3.0/index.html
@@ -86,6 +86,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.4.0/index.html b/articles/cowboy-2.4.0/index.html
index b66aed36..a8717317 100644
--- a/articles/cowboy-2.4.0/index.html
+++ b/articles/cowboy-2.4.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.5.0/index.html b/articles/cowboy-2.5.0/index.html
index 8310b645..1cc443a8 100644
--- a/articles/cowboy-2.5.0/index.html
+++ b/articles/cowboy-2.5.0/index.html
@@ -92,6 +92,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy-2.6.0/index.html b/articles/cowboy-2.6.0/index.html
index d079cc1a..5d563160 100644
--- a/articles/cowboy-2.6.0/index.html
+++ b/articles/cowboy-2.6.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/cowboy2-qs/index.html b/articles/cowboy2-qs/index.html
index 9faef9f7..8286d7ee 100644
--- a/articles/cowboy2-qs/index.html
+++ b/articles/cowboy2-qs/index.html
@@ -130,6 +130,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/dont-let-it-crash/index.html b/articles/dont-let-it-crash/index.html
index ddbf5e7b..1e9e9110 100644
--- a/articles/dont-let-it-crash/index.html
+++ b/articles/dont-let-it-crash/index.html
@@ -105,6 +105,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/erlang-meetup-10-septembre-2019/index.html b/articles/erlang-meetup-10-septembre-2019/index.html
index 9c79cc46..f394df19 100644
--- a/articles/erlang-meetup-10-septembre-2019/index.html
+++ b/articles/erlang-meetup-10-septembre-2019/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/erlang-scalability/index.html b/articles/erlang-scalability/index.html
index 2ad9daad..92f7030f 100644
--- a/articles/erlang-scalability/index.html
+++ b/articles/erlang-scalability/index.html
@@ -117,6 +117,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/erlang-validate-utf8/index.html b/articles/erlang-validate-utf8/index.html
index f7b8d782..9fa1529d 100644
--- a/articles/erlang-validate-utf8/index.html
+++ b/articles/erlang-validate-utf8/index.html
@@ -233,6 +233,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/erlang.mk-and-relx/index.html b/articles/erlang.mk-and-relx/index.html
index d51bc82e..b231fb97 100644
--- a/articles/erlang.mk-and-relx/index.html
+++ b/articles/erlang.mk-and-relx/index.html
@@ -143,6 +143,10 @@ cowboy-0.8.5 erlydtl-0.7.0 ninenines-0.2.0 stdlib-1.19.1</pre></div></div>
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/erlanger-playbook-september-2015-update/index.html b/articles/erlanger-playbook-september-2015-update/index.html
index 6885f090..df5b004e 100644
--- a/articles/erlanger-playbook-september-2015-update/index.html
+++ b/articles/erlanger-playbook-september-2015-update/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/erlanger-playbook/index.html b/articles/erlanger-playbook/index.html
index 4e618e4c..4fc7b789 100644
--- a/articles/erlanger-playbook/index.html
+++ b/articles/erlanger-playbook/index.html
@@ -129,6 +129,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/farwest-funded/index.html b/articles/farwest-funded/index.html
index 5bd210de..7562df58 100644
--- a/articles/farwest-funded/index.html
+++ b/articles/farwest-funded/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/gun-1.0.0-rc.1/index.html b/articles/gun-1.0.0-rc.1/index.html
index 32d83cc5..2cb142a3 100644
--- a/articles/gun-1.0.0-rc.1/index.html
+++ b/articles/gun-1.0.0-rc.1/index.html
@@ -90,6 +90,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/gun-1.0.0/index.html b/articles/gun-1.0.0/index.html
index 33b9cbe2..7ce8fc0d 100644
--- a/articles/gun-1.0.0/index.html
+++ b/articles/gun-1.0.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/gun-1.2.0/index.html b/articles/gun-1.2.0/index.html
index 05f52b8b..478457b7 100644
--- a/articles/gun-1.2.0/index.html
+++ b/articles/gun-1.2.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/gun-1.3.0/index.html b/articles/gun-1.3.0/index.html
index 12f33e2b..9c7a8510 100644
--- a/articles/gun-1.3.0/index.html
+++ b/articles/gun-1.3.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/gun-2.0.0-pre.1/index.html b/articles/gun-2.0.0-pre.1/index.html
new file mode 100644
index 00000000..ef68e267
--- /dev/null
+++ b/articles/gun-2.0.0-pre.1/index.html
@@ -0,0 +1,307 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: Gun 2.0 pre-release 1</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=6" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+
+</head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li class="active"><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents">
+<div class="container">
+<div class="row">
+<div class="span9 maincol">
+
+<article class="blog_item">
+<header>
+ <h1 class="lined-header"><span>Gun 2.0 pre-release 1</span></h1>
+ <p class="date">
+ <span class="year">2019</span>
+ <span class="day-month">27 Sep</span>
+ </p>
+</header>
+
+<p>Gun <code>2.0.0-pre.1</code> has been released!</p>
+<p>The first pre-release version of Gun 2.0 has been released! Gun 2.0 adds a ton of features along with a small number of breaking changes.</p>
+<p>Before listing the features please note that this pre-release includes a fix for a potential security vulnerability! This only applies when Gun is used inside a proxy under specific circumstances. Please see the migration guide for details. Since the issue also exists in the previous version I have released Gun <code>1.3.1</code> as well that fixes this issue.</p>
+<p>Much of my focus for Gun 2.0 has been improving the support for connecting through proxies. Gun now supports both Socks5 and CONNECT proxies, but most importantly Gun is now able to tunnel TLS connections through TLS proxies. Gun is also able to tunnel connections through any combination of proxies, for example Socks5 TCP to CONNECT TLS to Socks5 TLS to origin server using TLS.</p>
+<p>Gun does not support HTTP/2 CONNECT yet but this is a planned feature that will be the main focus for the next pre-release. Along with it support for Websocket over HTTP/2 will be added since it reuses the HTTP/2 CONNECT mechanism.</p>
+<p>Other features include the graceful shutdown of connections; flow control for data messages; or event handlers with many hook points for instrumentation and other purposes.</p>
+<p>While experimental at the time of the pre-release, Gun can now be used to send and receive non-HTTP/Websocket data. Gun can therefore be used as a Socks/CONNECT client for any protocol. Gun can also use the HTTP/1.1 Upgrade mechanism to switch to any protocol. This feature will be documented before the Gun 2.0 release.</p>
+<p>The HTTP/2 code has seen numerous fixes thanks to merging Gun&apos;s and Cowboy&apos;s code together. In addition Gun will now receive HTTP/2 response bodies much faster than before thanks to better defaults and optimizations.</p>
+<p>Gun 2.0 currently requires Erlang/OTP 20 or above and is tested and supported on Linux, FreeBSD, macOS and Windows.</p>
+<p>A complete list of changes can be found in the migration guide: <a href="https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/">Migrating from Gun 1.3 to 2.0</a>.</p>
+<p>I will have more free time available for consulting or for paid open source development starting from next week. If you are interested, drop me an email at <a href="mailto:[email protected]">[email protected]</a>. I have gathered that there&apos;s interest in a pure Erlang GRPC implementation, and there&apos;s also QUIC and HTTP/3 that will be ready soon, for example of projects I&apos;d be interested in working on.</p>
+<p>You can donate to this project via <a href="https://salt.bountysource.com/teams/ninenines">BountySource</a>. These funds are used to pay for additional servers for testing. We will soon add two Raspberry Pi 4 in order to have some ARM targets when testing. (The Pis are here! Just need to install now.)</p>
+<p>As usual, feedback is appreciated, and issues or questions should be sent via Github tickets. Thanks!</p>
+
+
+</article>
+</div>
+
+<div class="span3 sidecol">
+<h3>More articles</h3>
+<ul id="articles-nav" class="extra_margin">
+
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Ranch 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/joe_the_rubber_duck/">Joe Armstrong the rubber duck</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/merry-christmas-2018/">Merry Christmas 2018: A Recap</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.6.0/">Cowboy 2.6</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.7.0/">Ranch 1.7</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.5.0/">Cowboy 2.5</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.3.0/">Gun 1.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.2.0/">Gun 1.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.6.0/">Ranch 1.6</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.0.0/">Gun 1.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/asciideck/">Asciideck: Asciidoc for Erlang</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.0.0-rc.1/">Gun 1.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.4.0/">Cowboy 2.4</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.3.0/">Cowboy 2.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.2.0/">Cowboy 2.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.1.0/">Cowboy 2.1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0/">Cowboy 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.3/">Ranch 1.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ml-archives/">Mailing list archived</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/website-update/">Website update</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook-september-2015-update/">The Erlanger Playbook September 2015 Update</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook/">The Erlanger Playbook</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-validate-utf8/">Validating UTF-8 binaries with Erlang</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/on-open-source/">On open source</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-story-so-far/">The story so far</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy2-qs/">Cowboy 2.0 and query strings</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/january-2014-status/">January 2014 status</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/farwest-funded/">Farwest got funded!</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang.mk-and-relx/">Build Erlang releases with Erlang.mk and Relx</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.5-intermediate-module/">Xerl: intermediate module</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.4-expression-separator/">Xerl: expression separator</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-scalability/">Erlang Scalability</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></li>
+
+
+</ul>
+
+<h3>Feedback</h3>
+<p>Feel free to <a href="mailto:[email protected]">email us</a>
+if you found any mistake or need clarification on any of the
+articles.</p>
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
diff --git a/articles/index.html b/articles/index.html
index 798fbcab..2668b7e9 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -67,6 +67,24 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></h2>
+ <p class="date">
+ <span class="year">2019</span>
+ <span class="day-month">27 Sep</span>
+ </p>
+ </header>
+
+ <p>Gun 2.0.0-pre.1 has been released!
+The first pre-release version of Gun 2.0 has been released! Gun 2.0 adds a ton of features along with a small number of breaking changes.
+Before listing the features please note that this pre-release includes a fix for a potential security vulnerability! This only applies when Gun is used inside a proxy under specific circumstances. Please see the migration guide for details. Since the issue also exists in the previous version I have released Gun 1.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></h2>
<p class="date">
<span class="year">2019</span>
@@ -419,24 +437,6 @@ HTTP/2 server push was using the wrong header compression context. HTTP/2 flow
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></h2>
- <p class="date">
- <span class="year">2017</span>
- <span class="day-month">24 Jul</span>
- </p>
- </header>
-
- <p>Cowboy 2.0.0-rc.1 has been released!
-This is the new recommended version of Cowboy. Its API should not change before release. While you probably should not use it in production yet, many do successfully. Use at your own risk.
-The plan is to have a new RC version every couple weeks until the summer ends or later if there are still blocking issues open. Only issues that can&apos;t be fixed without making breaking changes to the interface may block the release.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/index.xml b/articles/index.xml
index 00e4740d..4bd4e9cb 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,12 +6,23 @@
<description>Recent content in Articles on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Thu, 22 Aug 2019 07:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Fri, 27 Sep 2019 07:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Gun 2.0 pre-release 1</title>
+ <link>https://ninenines.eu/articles/gun-2.0.0-pre.1/</link>
+ <pubDate>Fri, 27 Sep 2019 07:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/gun-2.0.0-pre.1/</guid>
+ <description>Gun 2.0.0-pre.1 has been released!
+The first pre-release version of Gun 2.0 has been released! Gun 2.0 adds a ton of features along with a small number of breaking changes.
+Before listing the features please note that this pre-release includes a fix for a potential security vulnerability! This only applies when Gun is used inside a proxy under specific circumstances. Please see the migration guide for details. Since the issue also exists in the previous version I have released Gun 1.</description>
+ </item>
+
+ <item>
<title>Erlang meetup: 10 septembre 2019</title>
<link>https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/</link>
<pubDate>Thu, 22 Aug 2019 07:00:00 +0100</pubDate>
diff --git a/articles/january-2014-status/index.html b/articles/january-2014-status/index.html
index fae71536..e67b3522 100644
--- a/articles/january-2014-status/index.html
+++ b/articles/january-2014-status/index.html
@@ -115,6 +115,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/joe_the_rubber_duck/index.html b/articles/joe_the_rubber_duck/index.html
index ad007739..fd767238 100644
--- a/articles/joe_the_rubber_duck/index.html
+++ b/articles/joe_the_rubber_duck/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/merry-christmas-2018/index.html b/articles/merry-christmas-2018/index.html
index 66bb1386..7c08d7fb 100644
--- a/articles/merry-christmas-2018/index.html
+++ b/articles/merry-christmas-2018/index.html
@@ -96,6 +96,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/ml-archives/index.html b/articles/ml-archives/index.html
index ef0b21d7..fdd34877 100644
--- a/articles/ml-archives/index.html
+++ b/articles/ml-archives/index.html
@@ -86,6 +86,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/on-open-source/index.html b/articles/on-open-source/index.html
index c87458d2..7a2b315e 100644
--- a/articles/on-open-source/index.html
+++ b/articles/on-open-source/index.html
@@ -98,6 +98,10 @@ much left to look at today</a>. This was followed by a <a href="https://github.c
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
index 375688b3..53649b0d 100644
--- a/articles/page/2/index.html
+++ b/articles/page/2/index.html
@@ -67,6 +67,24 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></h2>
+ <p class="date">
+ <span class="year">2017</span>
+ <span class="day-month">24 Jul</span>
+ </p>
+ </header>
+
+ <p>Cowboy 2.0.0-rc.1 has been released!
+This is the new recommended version of Cowboy. Its API should not change before release. While you probably should not use it in production yet, many do successfully. Use at your own risk.
+The plan is to have a new RC version every couple weeks until the summer ends or later if there are still blocking issues open. Only issues that can&apos;t be fixed without making breaking changes to the interface may block the release.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></h2>
<p class="date">
<span class="year">2017</span>
@@ -406,26 +424,6 @@ We will be running this expression at compile time, since we don&apos;t have the
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></h2>
- <p class="date">
- <span class="year">2013</span>
- <span class="day-month">03 Feb</span>
- </p>
- </header>
-
- <p>Everything is an expression.
-This sentence carries profound meaning. We will invoke it many times over the course of these articles.
-If everything is an expression, then the language shouldn&apos;t have any problem with me defining two modules in the same source file.
-mod first_module begin end mod second_module begin end Likewise, it shouldn&apos;t have any problem with me defining a module inside another module.
-mod out_module begin mod in_module begin end end Of course, in the context of the Erlang VM, these two snippets are equivalent; there is nothing preventing you from calling the in_module module from any other module.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/page/3/index.html b/articles/page/3/index.html
index 38b44812..110cd5ef 100644
--- a/articles/page/3/index.html
+++ b/articles/page/3/index.html
@@ -67,6 +67,26 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></h2>
+ <p class="date">
+ <span class="year">2013</span>
+ <span class="day-month">03 Feb</span>
+ </p>
+ </header>
+
+ <p>Everything is an expression.
+This sentence carries profound meaning. We will invoke it many times over the course of these articles.
+If everything is an expression, then the language shouldn&apos;t have any problem with me defining two modules in the same source file.
+mod first_module begin end mod second_module begin end Likewise, it shouldn&apos;t have any problem with me defining a module inside another module.
+mod out_module begin mod in_module begin end end Of course, in the context of the Erlang VM, these two snippets are equivalent; there is nothing preventing you from calling the in_module module from any other module.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></h2>
<p class="date">
<span class="year">2013</span>
diff --git a/articles/ranch-1.3/index.html b/articles/ranch-1.3/index.html
index 50ff317a..d8811cbc 100644
--- a/articles/ranch-1.3/index.html
+++ b/articles/ranch-1.3/index.html
@@ -127,6 +127,10 @@ Primary key fingerprint<font color="#990000">:</font> F19F 189C ECC7 <font color
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/ranch-1.6.0/index.html b/articles/ranch-1.6.0/index.html
index 3b6d128d..717c9ec5 100644
--- a/articles/ranch-1.6.0/index.html
+++ b/articles/ranch-1.6.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/ranch-1.7.0/index.html b/articles/ranch-1.7.0/index.html
index 03b277ca..398295ed 100644
--- a/articles/ranch-1.7.0/index.html
+++ b/articles/ranch-1.7.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/ranch-2.0.0-rc.1/index.html b/articles/ranch-2.0.0-rc.1/index.html
index 41d3fd54..d3b726ca 100644
--- a/articles/ranch-2.0.0-rc.1/index.html
+++ b/articles/ranch-2.0.0-rc.1/index.html
@@ -97,6 +97,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/ranch-ftp/index.html b/articles/ranch-ftp/index.html
index f01185c5..a694711d 100644
--- a/articles/ranch-ftp/index.html
+++ b/articles/ranch-ftp/index.html
@@ -229,6 +229,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html
index 3b05b056..992b8f34 100644
--- a/articles/the-elephant-in-the-room/index.html
+++ b/articles/the-elephant-in-the-room/index.html
@@ -111,6 +111,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/the-story-so-far/index.html b/articles/the-story-so-far/index.html
index 00cdaeb6..b562aee2 100644
--- a/articles/the-story-so-far/index.html
+++ b/articles/the-story-so-far/index.html
@@ -102,6 +102,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/tictactoe/index.html b/articles/tictactoe/index.html
index 0dcc4c57..c7a10a36 100644
--- a/articles/tictactoe/index.html
+++ b/articles/tictactoe/index.html
@@ -134,6 +134,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/website-update/index.html b/articles/website-update/index.html
index 24ac76ce..0fff01f0 100644
--- a/articles/website-update/index.html
+++ b/articles/website-update/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/xerl-0.1-empty-modules/index.html b/articles/xerl-0.1-empty-modules/index.html
index f37ae97c..0bfb60cf 100644
--- a/articles/xerl-0.1-empty-modules/index.html
+++ b/articles/xerl-0.1-empty-modules/index.html
@@ -169,6 +169,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/xerl-0.2-two-modules/index.html b/articles/xerl-0.2-two-modules/index.html
index bcb0e454..a6071cbf 100644
--- a/articles/xerl-0.2-two-modules/index.html
+++ b/articles/xerl-0.2-two-modules/index.html
@@ -197,6 +197,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/xerl-0.3-atomic-expressions/index.html b/articles/xerl-0.3-atomic-expressions/index.html
index 8ea889ca..e7c6ab25 100644
--- a/articles/xerl-0.3-atomic-expressions/index.html
+++ b/articles/xerl-0.3-atomic-expressions/index.html
@@ -166,6 +166,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/xerl-0.4-expression-separator/index.html b/articles/xerl-0.4-expression-separator/index.html
index 6e2b3c40..7c5d12af 100644
--- a/articles/xerl-0.4-expression-separator/index.html
+++ b/articles/xerl-0.4-expression-separator/index.html
@@ -118,6 +118,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/articles/xerl-0.5-intermediate-module/index.html b/articles/xerl-0.5-intermediate-module/index.html
index fcace5cf..c267f4f9 100644
--- a/articles/xerl-0.5-intermediate-module/index.html
+++ b/articles/xerl-0.5-intermediate-module/index.html
@@ -162,6 +162,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
diff --git a/docs/en/gun/1.3/guide/index.html b/docs/en/gun/1.3/guide/index.html
index e5e0f372..b36804f3 100644
--- a/docs/en/gun/1.3/guide/index.html
+++ b/docs/en/gun/1.3/guide/index.html
@@ -77,7 +77,9 @@
</li>
</ul>
<h2 id="_additional_information">Additional information</h2>
-<ul><li><a href="migrating_from_1.2/">Migrating from Gun 1.2 to 1.3</a>
+<ul><li><a href="migrating_from_1.3/">Changes since Gun 1.3</a>
+</li>
+<li><a href="migrating_from_1.2/">Migrating from Gun 1.2 to 1.3</a>
</li>
<li><a href="migrating_from_1.1/">Migrating from Gun 1.1 to 1.2</a>
</li>
diff --git a/docs/en/gun/1.3/guide/migrating_from_1.2/index.html b/docs/en/gun/1.3/guide/migrating_from_1.2/index.html
index 90d11248..386ae589 100644
--- a/docs/en/gun/1.3/guide/migrating_from_1.2/index.html
+++ b/docs/en/gun/1.3/guide/migrating_from_1.2/index.html
@@ -100,8 +100,8 @@
<nav style="margin:1em 0">
- <a style="float:left" href="https://ninenines.eu/docs/en/gun/1.3/guide/websocket/">
- Websocket
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.3/">
+ Changes since Gun 1.3
</a>
diff --git a/docs/en/gun/1.3/guide/migrating_from_1.3.asciidoc b/docs/en/gun/1.3/guide/migrating_from_1.3.asciidoc
new file mode 100644
index 00000000..e33430dd
--- /dev/null
+++ b/docs/en/gun/1.3/guide/migrating_from_1.3.asciidoc
@@ -0,0 +1,14 @@
+[appendix]
+== Changes since Gun 1.3
+
+The following patch versions were released since Gun 1.3:
+
+=== Gun 1.3.1
+
+This release backports a fix that will be included in the
+upcoming Gun 2.0 release:
+
+* *POTENTIAL SECURITY VULNERABILITY*: Fix transfer-encoding
+ precedence over content-length in responses. This bug may
+ contribute to a response smuggling security vulnerability
+ when Gun is used inside a proxy.
diff --git a/docs/en/gun/1.3/guide/migrating_from_1.3/index.html b/docs/en/gun/1.3/guide/migrating_from_1.3/index.html
new file mode 100644
index 00000000..7615913e
--- /dev/null
+++ b/docs/en/gun/1.3/guide/migrating_from_1.3/index.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: Changes since Gun 1.3</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=6" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+
+</head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li class="active"><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents" class="two_col">
+<div class="container">
+<div class="row">
+<div id="docs" class="span9 maincol">
+
+<h1 class="lined-header"><span>Changes since Gun 1.3</span></h1>
+
+<p>The following patch versions were released since Gun 1.3:</p>
+<h2 id="_gun_1_3_1">Gun 1.3.1</h2>
+<p>This release backports a fix that will be included in the upcoming Gun 2.0 release:</p>
+<ul><li><strong>POTENTIAL SECURITY VULNERABILITY</strong>: Fix transfer-encoding precedence over content-length in responses. This bug may contribute to a response smuggling security vulnerability when Gun is used inside a proxy.
+</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/1.3/guide/websocket/">
+ Websocket
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/">
+ Migrating from Gun 1.2 to 1.3
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 1.3
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/1.3/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/1.3/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/guide">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/guide">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/guide">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/guide">1.0</a></li>
+
+</ul>
+
+<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
+<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
+<input type="hidden" name="cmd" value="_donations">
+<input type="hidden" name="business" value="[email protected]">
+<input type="hidden" name="lc" value="FR">
+<input type="hidden" name="item_name" value="Loic Hoguin">
+<input type="hidden" name="item_number" value="99s">
+<input type="hidden" name="currency_code" value="EUR">
+<input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted">
+<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
+<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
+</form><p>Recurring payment options are also available via <a href="https://salt.bountysource.com/teams/ninenines">BountySource</a>. These funds are used to cover the recurring expenses like dedicated servers or domain names.</p>
+
+
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
+
diff --git a/docs/en/gun/1.3/guide/websocket/index.html b/docs/en/gun/1.3/guide/websocket/index.html
index c258df84..30f80e3f 100644
--- a/docs/en/gun/1.3/guide/websocket/index.html
+++ b/docs/en/gun/1.3/guide/websocket/index.html
@@ -172,8 +172,8 @@ http://www.gnu.org/software/src-highlite -->
- <a style="float:right" href="https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/">
- Migrating from Gun 1.2 to 1.3
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.3/">
+ Changes since Gun 1.3
</a>
</nav>
diff --git a/docs/en/gun/2.0/guide/index.html b/docs/en/gun/2.0/guide/index.html
index fd0ce5f9..20d72dfe 100644
--- a/docs/en/gun/2.0/guide/index.html
+++ b/docs/en/gun/2.0/guide/index.html
@@ -77,7 +77,9 @@
</li>
</ul>
<h2 id="_additional_information">Additional information</h2>
-<ul><li><a href="migrating_from_1.2/">Migrating from Gun 1.2 to 1.3</a>
+<ul><li><a href="migrating_from_1.3/">Migrating from Gun 1.3 to 2.0</a>
+</li>
+<li><a href="migrating_from_1.2/">Migrating from Gun 1.2 to 1.3</a>
</li>
<li><a href="migrating_from_1.1/">Migrating from Gun 1.1 to 1.2</a>
</li>
diff --git a/docs/en/gun/2.0/guide/migrating_from_1.0.asciidoc b/docs/en/gun/2.0/guide/migrating_from_1.0.asciidoc
index 8057683c..3a11cfd3 100644
--- a/docs/en/gun/2.0/guide/migrating_from_1.0.asciidoc
+++ b/docs/en/gun/2.0/guide/migrating_from_1.0.asciidoc
@@ -4,7 +4,7 @@
Gun 1.1 updates the Cowlib dependency to 2.5.1 and fixes a
few problems with experimental features.
-== Features added
+=== Features added
* Update Cowlib to 2.5.1
diff --git a/docs/en/gun/2.0/guide/migrating_from_1.1.asciidoc b/docs/en/gun/2.0/guide/migrating_from_1.1.asciidoc
index bc2097f9..7e0acf9d 100644
--- a/docs/en/gun/2.0/guide/migrating_from_1.1.asciidoc
+++ b/docs/en/gun/2.0/guide/migrating_from_1.1.asciidoc
@@ -4,7 +4,7 @@
Gun 1.2 adds support for the CONNECT request over HTTP/1.1
connections.
-== Features added
+=== Features added
* CONNECT requests can now be issued on HTTP/1.1 connections.
The tunneled connection can use any of the protocols Gun
@@ -22,7 +22,7 @@ connections.
* Update Cowlib to 2.6.0
-== Functions added
+=== Functions added
* The functions `gun:connect/2,3,4` have been added. They can
be used to initiate CONNECT requests on HTTP/1.1 connections.
diff --git a/docs/en/gun/2.0/guide/migrating_from_1.2.asciidoc b/docs/en/gun/2.0/guide/migrating_from_1.2.asciidoc
index a870858e..3b310920 100644
--- a/docs/en/gun/2.0/guide/migrating_from_1.2.asciidoc
+++ b/docs/en/gun/2.0/guide/migrating_from_1.2.asciidoc
@@ -5,7 +5,7 @@ Gun 1.3 improves the support for CONNECT requests
introduced in the previous version and documents
Websocket protocol negotiation.
-== Features added
+=== Features added
* The `protocols` CONNECT destination option has been added
as a replacement for the now deprecated `protocol` option.
diff --git a/docs/en/gun/2.0/guide/migrating_from_1.2/index.html b/docs/en/gun/2.0/guide/migrating_from_1.2/index.html
index bb2d6436..a4a7f4bc 100644
--- a/docs/en/gun/2.0/guide/migrating_from_1.2/index.html
+++ b/docs/en/gun/2.0/guide/migrating_from_1.2/index.html
@@ -100,8 +100,8 @@
<nav style="margin:1em 0">
- <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.0/guide/websocket/">
- Websocket
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/">
+ Migrating from Gun 1.3 to 2.0
</a>
diff --git a/docs/en/gun/2.0/guide/migrating_from_1.3.asciidoc b/docs/en/gun/2.0/guide/migrating_from_1.3.asciidoc
new file mode 100644
index 00000000..1e2b8943
--- /dev/null
+++ b/docs/en/gun/2.0/guide/migrating_from_1.3.asciidoc
@@ -0,0 +1,220 @@
+[appendix]
+== Migrating from Gun 1.3 to 2.0
+
+Gun 2.0 adds many features including graceful shutdown,
+flow control for data messages, event handlers, support
+for tunneling TLS connections through TLS proxies, Socks
+proxy support, and much more. It has only a limited
+number of breaking changes compared to the previous
+version.
+
+Gun 2.0 greatly improves the HTTP/2 performance when it
+comes to receiving large response bodies; and when receiving
+response bodies from many separate requests concurrently.
+
+Gun now shares much of its HTTP/2 code with Cowboy,
+including the HTTP/2 state machine. Numerous issues were
+fixed as a result because the Cowboy implementation was
+much more advanced.
+
+The Gun connection process is now implemented using `gen_statem`.
+
+Gun 2.0 requires Erlang/OTP 20.0 or greater.
+
+=== Features added
+
+* Graceful shutdown has been implemented. Graceful shutdown
+ can be initiated on the client side by calling the new
+ function `gun:shutdown/1` or when the owner process goes
+ away; or on the peer side via the connection: close HTTP/1.1
+ header, the HTTP/2 GOAWAY frame or the Websocket close frame.
+ Gun will try to complete existing streams when possible;
+ other streams get canceled immediately. The `closing_timeout`
+ option controls how long we are willing to wait at most
+ before closing the connection.
+
+* Flow control has been added. It allows limiting the number
+ of data/Websocket messages Gun sends to the calling process.
+ Gun will stop reading from the socket or stop updating the
+ protocol's flow control window when applicable as well, to
+ apply some backpressure to the remote endpoint(s). It is
+ disabled by default and can be applied on a per-request
+ basis if necessary.
+
+* An event handler interface has been added providing access
+ to many internal Gun events. This can be used for a variety
+ of purposes including logging, tracing or otherwise
+ instrumenting a Gun connection.
+
+* In order to get separate events when connecting, the domain
+ lookup, connection and TLS handshakes are now performed
+ separately by Gun. As a result, there exists three separate
+ timeout options for each of the steps, and the transport
+ options had to be split into `tcp_opts` and `tls_opts`.
+
+* Gun can connect through any number of HTTP, HTTPS, Socks
+ or secure Socks proxies, including when Socks proxies are
+ located after the HTTP(S) proxies. The ultimate endpoint
+ may be using any protocol, including plain TCP, TLS,
+ HTTP/1.1 or HTTP/2.
+
+* Gun now supports connecting through Socks5 proxies,
+ including secure Socks proxies. Both unauthenticated
+ and username/password authentication are supported.
+
+* When specifying which protocols to use, options can
+ now be provided specific to those protocols. It is
+ now possible to have separate HTTP options for an
+ HTTP proxy and the origin HTTP server, for example.
+ See the new `protocols()` type for details.
+
+* Gun can now be used to send and receive raw data,
+ as if it was just a normal socket. This can be
+ useful when needing to connect through a number
+ of HTTP/Socks proxies, allowing the use of Gun's
+ great proxying capabilities (including TLS over TLS)
+ for any sort of protocols. This can also be useful
+ when performing HTTP/1.1 Upgrade to custom protocols.
+
+* Headers can now be provided as a map. Header names may now
+ be provided as binary, string or atom.
+
+* Header names may now be provided as binary, string or atom.
+
+* Many HTTP/2 options have been added, allowing great
+ control over how Gun and the remote endpoint are
+ using the HTTP/2 connection. They can be used to
+ improve performance or lower the memory usage, for
+ example.
+
+* It is now possible to send many Websocket frames in
+ a single `gun:ws_send/2` call.
+
+* Gun will now send Websocket ping frames automatically
+ at intervals determined by the `keepalive` option. It
+ defaults to 5 seconds.
+
+* A new `silence_pings` option can be set to `false` to
+ receive all ping and pong frames when using Websocket.
+ They are typically not needed and therefore silent by
+ default.
+
+* The `reply_to` option has been added to `gun:ws_upgrade/4`.
+ The option applies to both the response and subsequent
+ Websocket frames.
+
+* The `reply_to` option is also propagated to messages
+ following a CONNECT request when the protocol requested
+ is not HTTP.
+
+* A new option `retry_fun` can be used to implement
+ different backoff strategies when reconnecting.
+
+* A new option `supervise` can be used to start a Gun
+ connection without using Gun's supervisor. It defaults
+ to `true`.
+
+* Gun now automatically lowercases provided header names.
+
+* Many improvements have been done to postpone or reject
+ requests and other operations while in the wrong state
+ (for example during state transitions when switching
+ protocols or connecting to proxies).
+
+=== Features removed
+
+* Gun used to reject operations by processes that were not
+ the owner of the connection. This behavior has been removed.
+ In general the caller of a request or other operation will
+ receive the relevant messages unless the `reply_to` option
+ is used.
+
+* The `connect_destination()` option `protocol` has been
+ removed. It was previously deprecated in favor of `protocols`.
+
+* The `keepalive` timeout is now disabled by default
+ for HTTP/1.1. To be perfectly clear, this is unrelated
+ to the HTTP/1.1 keep-alive mechanism.
+
+=== Functions added
+
+* The function `gun:set_owner/2` has been added. It allows
+ changing the owner of a connection process. Only the current
+ owner can do this operation.
+
+* The function `gun:shutdown/1` has been added. It initiates
+ the graceful shutdown of the connection, followed by the
+ termination of the Gun process.
+
+* The function `gun:stream_info/2` has been added. It provides
+ information about a specific HTTP stream.
+
+=== Functions modified
+
+* The function `gun:info/1` now returns the owner of the connection.
+
+* The functions `gun:await/2,3,4`, `gun:await_body/2,3,4` and
+ `gun:await_up/1,2,3` now distinguish the error types. They
+ can be a timeout, a connection error, a stream error or a
+ down error (when the Gun process exited while waiting).
+
+* The functions `gun:await/2,3,4` will now receive upgrade and
+ Websocket messages and return them.
+
+* The functions `gun:request/4,5,6` have been replaced with
+ `gun:headers/4,5` and `gun:request/5,6`. This provides a
+ cleaner separation between requests that are followed by
+ a body separately from those that don't.
+
+=== Messages modified
+
+* The `gun_down` message no longer has its final element
+ documented as `UnprocessedStreams`. It never worked and
+ was always an empty list.
+
+=== Bugs fixed
+
+* *POTENTIAL SECURITY VULNERABILITY*: Fix transfer-encoding
+ precedence over content-length in responses. This bug may
+ contribute to a response smuggling security vulnerability
+ when Gun is used inside a proxy.
+
+* Gun will no longer send duplicate connection-wide `gun_error`
+ messages to the same process.
+
+* Gun no longer crashes when trying to upgrade to Websocket
+ over a connection restricted to HTTP/1.0.
+
+* The default value for the preferred protocols when using
+ CONNECT over TLS has been corrected. It was mistakenly not
+ enabling HTTP/2.
+
+* Gun will no longer send an empty HTTP/2 DATA frame when
+ there is no request body. It was not necessary.
+
+* Gun will no longer error out when the owner process exits.
+ The error reason will now be a `shutdown` tuple instead.
+
+* The host header was set incorrectly during Websocket upgrades
+ when the host was configured with an IP address, resulting
+ in a crash. This has been corrected.
+
+* A completed stream could be found in the `gun_down` message when
+ the response contained a connection: close header. This is no
+ longer the case.
+
+* Hostnames can now be provided as atom as stated by the
+ documentation.
+
+* Gun will no longer attempt to send empty data chunks. When
+ using HTTP/1.1 chunked transfer-encoding this caused the
+ request body to terminated, even when `nofin` was given.
+
+* Gun now always retries connecting immediately when the
+ connection goes down.
+
+* The default port number for the HTTP and HTTPS schemes is
+ no longer sent in the host header.
+
+* An invalid stream reference was sent on failed Websocket
+ upgrade responses. This has been corrected.
diff --git a/docs/en/gun/2.0/guide/migrating_from_1.3/index.html b/docs/en/gun/2.0/guide/migrating_from_1.3/index.html
new file mode 100644
index 00000000..5f00005a
--- /dev/null
+++ b/docs/en/gun/2.0/guide/migrating_from_1.3/index.html
@@ -0,0 +1,284 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: Migrating from Gun 1.3 to 2.0</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=6" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+
+</head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li class="active"><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents" class="two_col">
+<div class="container">
+<div class="row">
+<div id="docs" class="span9 maincol">
+
+<h1 class="lined-header"><span>Migrating from Gun 1.3 to 2.0</span></h1>
+
+<p>Gun 2.0 adds many features including graceful shutdown, flow control for data messages, event handlers, support for tunneling TLS connections through TLS proxies, Socks proxy support, and much more. It has only a limited number of breaking changes compared to the previous version.</p>
+<p>Gun 2.0 greatly improves the HTTP/2 performance when it comes to receiving large response bodies; and when receiving response bodies from many separate requests concurrently.</p>
+<p>Gun now shares much of its HTTP/2 code with Cowboy, including the HTTP/2 state machine. Numerous issues were fixed as a result because the Cowboy implementation was much more advanced.</p>
+<p>The Gun connection process is now implemented using <code>gen_statem</code>.</p>
+<p>Gun 2.0 requires Erlang/OTP 20.0 or greater.</p>
+<h2 id="_features_added">Features added</h2>
+<ul><li>Graceful shutdown has been implemented. Graceful shutdown can be initiated on the client side by calling the new function <code>gun:shutdown/1</code> or when the owner process goes away; or on the peer side via the connection: close HTTP/1.1 header, the HTTP/2 GOAWAY frame or the Websocket close frame. Gun will try to complete existing streams when possible; other streams get canceled immediately. The <code>closing_timeout</code> option controls how long we are willing to wait at most before closing the connection.
+</li>
+<li>Flow control has been added. It allows limiting the number of data/Websocket messages Gun sends to the calling process. Gun will stop reading from the socket or stop updating the protocol&apos;s flow control window when applicable as well, to apply some backpressure to the remote endpoint(s). It is disabled by default and can be applied on a per-request basis if necessary.
+</li>
+<li>An event handler interface has been added providing access to many internal Gun events. This can be used for a variety of purposes including logging, tracing or otherwise instrumenting a Gun connection.
+</li>
+<li>In order to get separate events when connecting, the domain lookup, connection and TLS handshakes are now performed separately by Gun. As a result, there exists three separate timeout options for each of the steps, and the transport options had to be split into <code>tcp_opts</code> and <code>tls_opts</code>.
+</li>
+<li>Gun can connect through any number of HTTP, HTTPS, Socks or secure Socks proxies, including when Socks proxies are located after the HTTP(S) proxies. The ultimate endpoint may be using any protocol, including plain TCP, TLS, HTTP/1.1 or HTTP/2.
+</li>
+<li>Gun now supports connecting through Socks5 proxies, including secure Socks proxies. Both unauthenticated and username/password authentication are supported.
+</li>
+<li>When specifying which protocols to use, options can now be provided specific to those protocols. It is now possible to have separate HTTP options for an HTTP proxy and the origin HTTP server, for example. See the new <code>protocols()</code> type for details.
+</li>
+<li>Gun can now be used to send and receive raw data, as if it was just a normal socket. This can be useful when needing to connect through a number of HTTP/Socks proxies, allowing the use of Gun&apos;s great proxying capabilities (including TLS over TLS) for any sort of protocols. This can also be useful when performing HTTP/1.1 Upgrade to custom protocols.
+</li>
+<li>Headers can now be provided as a map. Header names may now be provided as binary, string or atom.
+</li>
+<li>Header names may now be provided as binary, string or atom.
+</li>
+<li>Many HTTP/2 options have been added, allowing great control over how Gun and the remote endpoint are using the HTTP/2 connection. They can be used to improve performance or lower the memory usage, for example.
+</li>
+<li>It is now possible to send many Websocket frames in a single <code>gun:ws_send/2</code> call.
+</li>
+<li>Gun will now send Websocket ping frames automatically at intervals determined by the <code>keepalive</code> option. It defaults to 5 seconds.
+</li>
+<li>A new <code>silence_pings</code> option can be set to <code>false</code> to receive all ping and pong frames when using Websocket. They are typically not needed and therefore silent by default.
+</li>
+<li>The <code>reply_to</code> option has been added to <code>gun:ws_upgrade/4</code>. The option applies to both the response and subsequent Websocket frames.
+</li>
+<li>The <code>reply_to</code> option is also propagated to messages following a CONNECT request when the protocol requested is not HTTP.
+</li>
+<li>A new option <code>retry_fun</code> can be used to implement different backoff strategies when reconnecting.
+</li>
+<li>A new option <code>supervise</code> can be used to start a Gun connection without using Gun&apos;s supervisor. It defaults to <code>true</code>.
+</li>
+<li>Gun now automatically lowercases provided header names.
+</li>
+<li>Many improvements have been done to postpone or reject requests and other operations while in the wrong state (for example during state transitions when switching protocols or connecting to proxies).
+</li>
+</ul>
+<h2 id="_features_removed">Features removed</h2>
+<ul><li>Gun used to reject operations by processes that were not the owner of the connection. This behavior has been removed. In general the caller of a request or other operation will receive the relevant messages unless the <code>reply_to</code> option is used.
+</li>
+<li>The <code>connect_destination()</code> option <code>protocol</code> has been removed. It was previously deprecated in favor of <code>protocols</code>.
+</li>
+<li>The <code>keepalive</code> timeout is now disabled by default for HTTP/1.1. To be perfectly clear, this is unrelated to the HTTP/1.1 keep-alive mechanism.
+</li>
+</ul>
+<h2 id="_functions_added">Functions added</h2>
+<ul><li>The function <code>gun:set_owner/2</code> has been added. It allows changing the owner of a connection process. Only the current owner can do this operation.
+</li>
+<li>The function <code>gun:shutdown/1</code> has been added. It initiates the graceful shutdown of the connection, followed by the termination of the Gun process.
+</li>
+<li>The function <code>gun:stream_info/2</code> has been added. It provides information about a specific HTTP stream.
+</li>
+</ul>
+<h2 id="_functions_modified">Functions modified</h2>
+<ul><li>The function <code>gun:info/1</code> now returns the owner of the connection.
+</li>
+<li>The functions <code>gun:await/2,3,4</code>, <code>gun:await_body/2,3,4</code> and <code>gun:await_up/1,2,3</code> now distinguish the error types. They can be a timeout, a connection error, a stream error or a down error (when the Gun process exited while waiting).
+</li>
+<li>The functions <code>gun:await/2,3,4</code> will now receive upgrade and Websocket messages and return them.
+</li>
+<li>The functions <code>gun:request/4,5,6</code> have been replaced with <code>gun:headers/4,5</code> and <code>gun:request/5,6</code>. This provides a cleaner separation between requests that are followed by a body separately from those that don&apos;t.
+</li>
+</ul>
+<h2 id="_messages_modified">Messages modified</h2>
+<ul><li>The <code>gun_down</code> message no longer has its final element documented as <code>UnprocessedStreams</code>. It never worked and was always an empty list.
+</li>
+</ul>
+<h2 id="_bugs_fixed">Bugs fixed</h2>
+<ul><li><strong>POTENTIAL SECURITY VULNERABILITY</strong>: Fix transfer-encoding precedence over content-length in responses. This bug may contribute to a response smuggling security vulnerability when Gun is used inside a proxy.
+</li>
+<li>Gun will no longer send duplicate connection-wide <code>gun_error</code> messages to the same process.
+</li>
+<li>Gun no longer crashes when trying to upgrade to Websocket over a connection restricted to HTTP/1.0.
+</li>
+<li>The default value for the preferred protocols when using CONNECT over TLS has been corrected. It was mistakenly not enabling HTTP/2.
+</li>
+<li>Gun will no longer send an empty HTTP/2 DATA frame when there is no request body. It was not necessary.
+</li>
+<li>Gun will no longer error out when the owner process exits. The error reason will now be a <code>shutdown</code> tuple instead.
+</li>
+<li>The host header was set incorrectly during Websocket upgrades when the host was configured with an IP address, resulting in a crash. This has been corrected.
+</li>
+<li>A completed stream could be found in the <code>gun_down</code> message when the response contained a connection: close header. This is no longer the case.
+</li>
+<li>Hostnames can now be provided as atom as stated by the documentation.
+</li>
+<li>Gun will no longer attempt to send empty data chunks. When using HTTP/1.1 chunked transfer-encoding this caused the request body to terminated, even when <code>nofin</code> was given.
+</li>
+<li>Gun now always retries connecting immediately when the connection goes down.
+</li>
+<li>The default port number for the HTTP and HTTPS schemes is no longer sent in the host header.
+</li>
+<li>An invalid stream reference was sent on failed Websocket upgrade responses. This has been corrected.
+</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.0/guide/websocket/">
+ Websocket
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.2/">
+ Migrating from Gun 1.2 to 1.3
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.0
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.0/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.0/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/guide">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/guide">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/guide">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/guide">1.0</a></li>
+
+</ul>
+
+<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
+<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
+<input type="hidden" name="cmd" value="_donations">
+<input type="hidden" name="business" value="[email protected]">
+<input type="hidden" name="lc" value="FR">
+<input type="hidden" name="item_name" value="Loic Hoguin">
+<input type="hidden" name="item_number" value="99s">
+<input type="hidden" name="currency_code" value="EUR">
+<input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted">
+<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
+<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
+</form><p>Recurring payment options are also available via <a href="https://salt.bountysource.com/teams/ninenines">BountySource</a>. These funds are used to cover the recurring expenses like dedicated servers or domain names.</p>
+
+
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
+
diff --git a/docs/en/gun/2.0/guide/websocket/index.html b/docs/en/gun/2.0/guide/websocket/index.html
index 88694744..e58212ad 100644
--- a/docs/en/gun/2.0/guide/websocket/index.html
+++ b/docs/en/gun/2.0/guide/websocket/index.html
@@ -165,8 +165,8 @@ http://www.gnu.org/software/src-highlite -->
- <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.2/">
- Migrating from Gun 1.2 to 1.3
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/">
+ Migrating from Gun 1.3 to 2.0
</a>
</nav>
diff --git a/docs/en/gun/2.0/manual/gun/index.html b/docs/en/gun/2.0/manual/gun/index.html
index ea092254..e92f6782 100644
--- a/docs/en/gun/2.0/manual/gun/index.html
+++ b/docs/en/gun/2.0/manual/gun/index.html
@@ -244,7 +244,26 @@ http://www.gnu.org/software/src-highlite -->
<pre><tt><b><font color="#000000">http2_opts</font></b>() <font color="#990000">::</font> #{
<font color="#0000FF">closing_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>(),
<font color="#0000FF">flow</font> <font color="#990000">=&gt;</font> <b><font color="#000000">pos_integer</font></b>(),
- <font color="#0000FF">keepalive</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>()
+ <font color="#0000FF">keepalive</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>(),
+
+ <i><font color="#9A1900">%% HTTP/2 state machine configuration.</font></i>
+ <font color="#0000FF">connection_window_margin_size</font> <font color="#990000">=&gt;</font> <font color="#993399">0</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>,
+ <font color="#0000FF">connection_window_update_threshold</font> <font color="#990000">=&gt;</font> <font color="#993399">0</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>,
+ <font color="#0000FF">enable_connect_protocol</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#0000FF">initial_connection_window_size</font> <font color="#990000">=&gt;</font> <font color="#993399">65535</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>,
+ <font color="#0000FF">initial_stream_window_size</font> <font color="#990000">=&gt;</font> <font color="#993399">0</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>,
+ <font color="#0000FF">max_concurrent_streams</font> <font color="#990000">=&gt;</font> <b><font color="#000000">non_neg_integer</font></b>() | <font color="#FF6600">infinity</font>,
+ <font color="#0000FF">max_connection_window_size</font> <font color="#990000">=&gt;</font> <font color="#993399">0</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>,
+ <font color="#0000FF">max_decode_table_size</font> <font color="#990000">=&gt;</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#0000FF">max_encode_table_size</font> <font color="#990000">=&gt;</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#0000FF">max_frame_size_received</font> <font color="#990000">=&gt;</font> <font color="#993399">16384</font><font color="#990000">..</font><font color="#993399">16777215</font>,
+ <font color="#0000FF">max_frame_size_sent</font> <font color="#990000">=&gt;</font> <font color="#993399">16384</font><font color="#990000">..</font><font color="#993399">16777215</font> | <font color="#FF6600">infinity</font>,
+ <font color="#0000FF">max_stream_buffer_size</font> <font color="#990000">=&gt;</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#0000FF">max_stream_window_size</font> <font color="#990000">=&gt;</font> <font color="#993399">0</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>,
+ <font color="#0000FF">preface_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>(),
+ <font color="#0000FF">settings_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>(),
+ <font color="#0000FF">stream_window_margin_size</font> <font color="#990000">=&gt;</font> <font color="#993399">0</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>,
+ <font color="#0000FF">stream_window_update_threshold</font> <font color="#990000">=&gt;</font> <font color="#993399">0</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>
}</tt></pre>
</div></div>
<p>Configuration for the HTTP/2 protocol.</p>
@@ -260,7 +279,6 @@ http://www.gnu.org/software/src-highlite -->
<dd><p>Time between pings in milliseconds.</p>
</dd>
</dl>
-<!-- @todo Allow and document max_frame_size_sent.-->
<h3 id="_opts">opts()</h3>
<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
diff --git a/docs/index.xml b/docs/index.xml
index e49942e9..6b37af0e 100644
--- a/docs/index.xml
+++ b/docs/index.xml
@@ -72,6 +72,20 @@ Copyright (c) 2013-2018, Loïc Hoguin &amp;lt;[email protected]&amp;gt; Permiss
<item>
<title>Introduction</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/introduction/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/introduction/</guid>
+ <description>Gun is an HTTP client for Erlang/OTP.
+Gun supports the HTTP/2, HTTP/1.1 and Websocket protocols.
+Prerequisites Knowledge of Erlang, but also of the HTTP/1.1, HTTP/2 and Websocket protocols is required in order to read this guide.
+Supported platforms Gun is tested and supported on Linux, FreeBSD, Windows and OSX.
+Gun is developed for Erlang/OTP 20.0 and newer.
+Note that Gun will not work on the Windows build of Erlang/OTP 20.3 due to a bug in Erlang/OTP&amp;apos;s stdlib application.</description>
+ </item>
+
+ <item>
+ <title>Introduction</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/guide/introduction/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -338,6 +352,19 @@ Starting Gun in an Erlang shell 1&amp;gt; application:ensure_all_started(gun).</
</item>
<item>
+ <title>Starting and stopping</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/start/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/start/</guid>
+ <description>This chapter describes how to start and stop the Gun application.
+Setting up Specify Gun as a dependency to your application in your favorite build tool.
+With Erlang.mk this is done by adding gun to the DEPS variable in your Makefile.
+Adding Gun as an Erlang.mk dependency DEPS = gun Starting Gun is an OTP application. It needs to be started before you can use it.
+Starting Gun in an Erlang shell 1&amp;gt; application:ensure_all_started(gun).</description>
+ </item>
+
+ <item>
<title>Supported protocols</title>
<link>https://ninenines.eu/docs/en/gun/1.0/guide/protocols/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -386,6 +413,18 @@ Gun will send a gun_inform message for every intermediate informational response
</item>
<item>
+ <title>Supported protocols</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/protocols/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/protocols/</guid>
+ <description>This chapter describes the protocols supported and the operations available to them.
+HTTP/1.1 HTTP/1.1 is a text request-response protocol. The client sends a request, the server sends back a response.
+Gun provides convenience functions for performing GET, HEAD, OPTIONS, POST, PATCH, PUT, and DELETE requests. All these functions are aliases of gun:headers/4,5 or gun:request/5,6 for the respective methods. Gun also provides a gun:data/4 function for streaming the request body.
+Gun will send a gun_inform message for every intermediate informational responses received.</description>
+ </item>
+
+ <item>
<title>Introduction</title>
<link>https://ninenines.eu/docs/en/cowboy/2.2/guide/introduction/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -555,6 +594,17 @@ A Gun connection is an Erlang process that manages a socket to a remote endpoint
</item>
<item>
+ <title>Connection</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/connect/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/connect/</guid>
+ <description>This chapter describes how to open, monitor and close a connection using the Gun client.
+Gun connections Gun is designed with the HTTP/2 and Websocket protocols in mind. They are built for long-running connections that allow concurrent exchange of data, either in the form of request/responses for HTTP/2 or in the form of messages for Websocket.
+A Gun connection is an Erlang process that manages a socket to a remote endpoint.</description>
+ </item>
+
+ <item>
<title>Protocols</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/guide/protocols/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -703,6 +753,18 @@ Streams can be canceled at any time.</description>
</item>
<item>
+ <title>HTTP</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/http/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/http/</guid>
+ <description>This chapter describes how to use the Gun client for communicating with an HTTP/1.1 or HTTP/2 server.
+Streams Every time a request is initiated, Gun creates a stream. A stream reference uniquely identifies a set of request and response and must be used to perform additional operations with a stream or to identify its messages.
+Stream references use the Erlang reference data type and are therefore unique.
+Streams can be canceled at any time.</description>
+ </item>
+
+ <item>
<title>Embedded mode</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/guide/embedded/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -857,6 +919,17 @@ You must use the gun:ws_upgrade/2,3,4 function to upgrade to Websocket.</descrip
</item>
<item>
+ <title>Websocket</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/websocket/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/websocket/</guid>
+ <description>This chapter describes how to use the Gun client for communicating with a Websocket server.
+HTTP upgrade Websocket is a protocol built on top of HTTP. To use Websocket, you must first request for the connection to be upgraded. Only HTTP/1.1 connections can be upgraded to Websocket, so you might need to restrict the protocol to HTTP/1.1 if you are planning to use Websocket over TLS.
+You must use the gun:ws_upgrade/2,3,4 function to upgrade to Websocket.</description>
+ </item>
+
+ <item>
<title>Writing parsers</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/guide/parsers/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -912,6 +985,17 @@ This chapter isn&amp;apos;t specifically about Ranch, we assume here that you kn
</item>
<item>
+ <title>Changes since Gun 1.3</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.3/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.3/</guid>
+ <description>The following patch versions were released since Gun 1.3:
+Gun 1.3.1 This release backports a fix that will be included in the upcoming Gun 2.0 release:
+POTENTIAL SECURITY VULNERABILITY: Fix transfer-encoding precedence over content-length in responses. This bug may contribute to a response smuggling security vulnerability when Gun is used inside a proxy. </description>
+ </item>
+
+ <item>
<title>Migrating from Gun 1.0 to 1.1</title>
<link>https://ninenines.eu/docs/en/gun/1.1/guide/migrating_from_1.0/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -932,13 +1016,14 @@ Features added CONNECT requests can now be issued on HTTP/1.1 connections. The t
</item>
<item>
- <title>Migrating from Gun 1.2 to 1.3</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</link>
+ <title>Migrating from Gun 1.3 to 2.0</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
- <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</guid>
- <description>Gun 1.3 improves the support for CONNECT requests introduced in the previous version and documents Websocket protocol negotiation.
-Features added The protocols CONNECT destination option has been added as a replacement for the now deprecated protocol option. Add built-in support for Websocket protocol negotiation through the Websocket option protocols. The interface of the handler module currently remains undocumented and must be set to gun_ws_h. Add the h2specd HTTP/2 test suite from the h2spec project.</description>
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/</guid>
+ <description>Gun 2.0 adds many features including graceful shutdown, flow control for data messages, event handlers, support for tunneling TLS connections through TLS proxies, Socks proxy support, and much more. It has only a limited number of breaking changes compared to the previous version.
+Gun 2.0 greatly improves the HTTP/2 performance when it comes to receiving large response bodies; and when receiving response bodies from many separate requests concurrently.
+Gun now shares much of its HTTP/2 code with Cowboy, including the HTTP/2 state machine.</description>
</item>
<item>
@@ -1167,13 +1252,23 @@ Features added Update Cowlib to 2.5.1 Bugs fixed A bug in the experimental gun
</item>
<item>
- <title>Migrating from Gun 1.1 to 1.2</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</link>
+ <title>Migrating from Gun 1.2 to 1.3</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
- <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</guid>
- <description>Gun 1.2 adds support for the CONNECT request over HTTP/1.1 connections.
-Features added CONNECT requests can now be issued on HTTP/1.1 connections. The tunneled connection can use any of the protocols Gun supports: HTTP/1.1, HTTP/2 and Websocket over both TCP and TLS transports. Note that Gun currently does not support tunneling a TLS connection over a TLS connection due to limitations in Erlang/OTP. Gun supports sending multiple CONNECT requests, allowing the tunnel to the origin server to go through multiple proxies.</description>
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</guid>
+ <description>Gun 1.3 improves the support for CONNECT requests introduced in the previous version and documents Websocket protocol negotiation.
+Features added The protocols CONNECT destination option has been added as a replacement for the now deprecated protocol option. Add built-in support for Websocket protocol negotiation through the Websocket option protocols. The interface of the handler module currently remains undocumented and must be set to gun_ws_h. Add the h2specd HTTP/2 test suite from the h2spec project.</description>
+ </item>
+
+ <item>
+ <title>Migrating from Gun 1.2 to 1.3</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.2/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.2/</guid>
+ <description>Gun 1.3 improves the support for CONNECT requests introduced in the previous version and documents Websocket protocol negotiation.
+Features added The protocols CONNECT destination option has been added as a replacement for the now deprecated protocol option. Add built-in support for Websocket protocol negotiation through the Websocket option protocols. The interface of the handler module currently remains undocumented and must be set to gun_ws_h. Add the h2specd HTTP/2 test suite from the h2spec project.</description>
</item>
<item>
@@ -1267,13 +1362,23 @@ Note that for everything related to efficiency and performance, you should perfo
</item>
<item>
- <title>Migrating from Gun 1.0 to 1.1</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</link>
+ <title>Migrating from Gun 1.1 to 1.2</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
- <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</guid>
- <description>Gun 1.1 updates the Cowlib dependency to 2.5.1 and fixes a few problems with experimental features.
-Features added Update Cowlib to 2.5.1 Bugs fixed A bug in the experimental gun_sse_h where lone id lines were not propagated has been fixed by updating the Cowlib dependency. The status code was incorrectly given to the experimental content handlers as a binary. It has been fixed an an integer is now given as was intended.</description>
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</guid>
+ <description>Gun 1.2 adds support for the CONNECT request over HTTP/1.1 connections.
+Features added CONNECT requests can now be issued on HTTP/1.1 connections. The tunneled connection can use any of the protocols Gun supports: HTTP/1.1, HTTP/2 and Websocket over both TCP and TLS transports. Note that Gun currently does not support tunneling a TLS connection over a TLS connection due to limitations in Erlang/OTP. Gun supports sending multiple CONNECT requests, allowing the tunnel to the origin server to go through multiple proxies.</description>
+ </item>
+
+ <item>
+ <title>Migrating from Gun 1.1 to 1.2</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.1/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.1/</guid>
+ <description>Gun 1.2 adds support for the CONNECT request over HTTP/1.1 connections.
+Features added CONNECT requests can now be issued on HTTP/1.1 connections. The tunneled connection can use any of the protocols Gun supports: HTTP/1.1, HTTP/2 and Websocket over both TCP and TLS transports. Note that Gun currently does not support tunneling a TLS connection over a TLS connection due to limitations in Erlang/OTP. Gun supports sending multiple CONNECT requests, allowing the tunnel to the origin server to go through multiple proxies.</description>
</item>
<item>
@@ -1424,6 +1529,26 @@ Loop handlers are used for requests where a response might not be immediately av
</item>
<item>
+ <title>Migrating from Gun 1.0 to 1.1</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</guid>
+ <description>Gun 1.1 updates the Cowlib dependency to 2.5.1 and fixes a few problems with experimental features.
+Features added Update Cowlib to 2.5.1 Bugs fixed A bug in the experimental gun_sse_h where lone id lines were not propagated has been fixed by updating the Cowlib dependency. The status code was incorrectly given to the experimental content handlers as a binary. It has been fixed an an integer is now given as was intended.</description>
+ </item>
+
+ <item>
+ <title>Migrating from Gun 1.0 to 1.1</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.0/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.0/</guid>
+ <description>Gun 1.1 updates the Cowlib dependency to 2.5.1 and fixes a few problems with experimental features.
+Features added Update Cowlib to 2.5.1 Bugs fixed A bug in the experimental gun_sse_h where lone id lines were not propagated has been fixed by updating the Cowlib dependency. The status code was incorrectly given to the experimental content handlers as a binary. It has been fixed an an integer is now given as was intended.</description>
+ </item>
+
+ <item>
<title>Static files</title>
<link>https://ninenines.eu/docs/en/cowboy/2.2/guide/static_files/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2718,250 +2843,6 @@ cowboy(3) - Listener management cowboy_req(3) - Request and response cowboy_ro
</item>
<item>
- <title>Gun Function Reference</title>
- <link>https://ninenines.eu/docs/en/gun/1.0/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.0/manual/</guid>
- <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
-Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
-Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
-Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
- </item>
-
- <item>
- <title>Gun Function Reference</title>
- <link>https://ninenines.eu/docs/en/gun/1.1/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.1/manual/</guid>
- <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
-Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
-Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
-Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
- </item>
-
- <item>
- <title>Gun Function Reference</title>
- <link>https://ninenines.eu/docs/en/gun/1.2/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.2/manual/</guid>
- <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
-Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
-Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
-Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
- </item>
-
- <item>
- <title>Gun Function Reference</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.3/manual/</guid>
- <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
-Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
-Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
-Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
- </item>
-
- <item>
- <title>Gun User Guide</title>
- <link>https://ninenines.eu/docs/en/gun/1.0/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.0/guide/</guid>
- <description>Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket </description>
- </item>
-
- <item>
- <title>Gun User Guide</title>
- <link>https://ninenines.eu/docs/en/gun/1.1/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.1/guide/</guid>
- <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.0 to 1.1 </description>
- </item>
-
- <item>
- <title>Gun User Guide</title>
- <link>https://ninenines.eu/docs/en/gun/1.2/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.2/guide/</guid>
- <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
- </item>
-
- <item>
- <title>Gun User Guide</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.3/guide/</guid>
- <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.2 to 1.3 Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/1.4/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.4/manual/</guid>
- <description>ranch(7) ranch(3) ranch_protocol(3) ranch_ssl(3) ranch_tcp(3) ranch_transport(3) </description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/1.5/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.5/manual/</guid>
- <description>ranch(7) ranch(3) ranch_protocol(3) ranch_ssl(3) ranch_tcp(3) ranch_transport(3) </description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/1.6/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.6/manual/</guid>
- <description>Name ranch - Socket acceptor pool for TCP protocols
-Description Ranch is a socket acceptor pool for TCP protocols.
-Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
-Modules Functions:
-ranch(3) - Socket acceptor pool Transports:
-ranch_ssl(3) - SSL transport ranch_tcp(3) - TLS transport Behaviors:</description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/1.7/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.7/manual/</guid>
- <description>Name ranch - Socket acceptor pool for TCP protocols
-Description Ranch is a socket acceptor pool for TCP protocols.
-Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
-Modules Functions:
-ranch(3) - Socket acceptor pool ranch_proxy_header(3) - PROXY protocol Transports:
-ranch_ssl(3) - SSL transport ranch_tcp(3) - TCP transport Behaviors:</description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/2.0/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/2.0/manual/</guid>
- <description>Name ranch - Socket acceptor pool for TCP protocols
-Description Ranch is a socket acceptor pool for TCP protocols.
-Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
-Modules Functions:
-ranch(3) - Socket acceptor pool ranch_proxy_header(3) - PROXY protocol Transports:
-ranch_ssl(3) - SSL transport ranch_tcp(3) - TCP transport Behaviors:</description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/1.4/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.4/guide/</guid>
- <description>Introduction Listeners Transports Protocols Embedded mode Writing parsers SSL client authentication Internals </description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/1.5/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.5/guide/</guid>
- <description>Introduction Listeners Transports Protocols Embedded mode Writing parsers SSL client authentication Internals </description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/1.6/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.6/guide/</guid>
- <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Advanced Internals Additional information Upcoming changes in Ranch 2.0 Changes since Ranch 1.6 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/1.7/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.7/guide/</guid>
- <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Advanced Internals Additional information Upcoming changes in Ranch 2.0 Changes since Ranch 1.7 Migrating from Ranch 1.6 to 1.7 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/2.0/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/2.0/guide/</guid>
- <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Connection draining Advanced Internals Additional information Migrating from Ranch 1.7 to 2.0 Migrating from Ranch 1.6 to 1.7 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
- </item>
-
- <item>
<title>cowboy(3)</title>
<link>https://ninenines.eu/docs/en/cowboy/2.2/manual/cowboy/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -4243,7 +4124,7 @@ Using the default configuration this function will always return undefined. You
<description>Name cowboy_req:cert - Client TLS certificate
Description cert(Req :: cowboy_req:req()) -&amp;gt; binary() | undefined Return the peer&amp;apos;s TLS certificate.
Using the default configuration this function will always return undefined. You need to explicitly configure Cowboy to request the client certificate. To do this you need to set the verify transport option to verify_peer:
-{ok, _} = cowboy:start_tls(example, [ {port, 8443}, {certfile, &#34;path/to/cert.pem&#34;}, {verify, verify_peer} ], #{ env =&amp;gt; #{dispatch =&amp;gt; Dispatch} }).</description>
+{ok, _} = cowboy:start_tls(example, [ {port, 8443}, {cert, &#34;path/to/cert.pem&#34;}, {verify, verify_peer} ], #{ env =&amp;gt; #{dispatch =&amp;gt; Dispatch} }).</description>
</item>
<item>
@@ -7163,6 +7044,111 @@ init(Req, State) -&amp;gt; {cowboy_websocket, Req, State} | {cowboy_websocket, R
</item>
<item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/1.0/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.0/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/1.1/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.1/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/1.2/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.2/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.3/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/1.0/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.0/guide/</guid>
+ <description>Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket </description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/1.1/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.1/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.0 to 1.1 </description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/1.2/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.2/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Changes since Gun 1.3 Migrating from Gun 1.2 to 1.3 Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.3 to 2.0 Migrating from Gun 1.2 to 1.3 Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
+ </item>
+
+ <item>
<title>gun(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7211,6 +7197,18 @@ gun:open(3) - Open a connection to the given host and port gun:open_unix(3) - O
</item>
<item>
+ <title>gun(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun/</guid>
+ <description>Name gun - Asynchronous HTTP client
+Description The gun module provides an asynchronous interface for connecting and communicating with Web servers over HTTP, HTTP/2 or Websocket.
+Exports Connection:
+gun:open(3) - Open a connection to the given host and port gun:open_unix(3) - Open a connection to the given Unix domain socket gun:set_owner(3) - Set a new owner for the connection gun:shutdown(3) - Gracefully close the connection gun:close(3) - Brutally close the connection gun:info(3) - Obtain information about the connection Requests:</description>
+ </item>
+
+ <item>
<title>gun(7)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_app/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7259,6 +7257,18 @@ Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support lib
</item>
<item>
+ <title>gun(7)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_app/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_app/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
<title>gun:await(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7303,6 +7313,17 @@ This function waits for a message from the given stream and returns it as a tupl
</item>
<item>
+ <title>gun:await(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await/</guid>
+ <description>Name gun:await - Wait for a response
+Description await(ConnPid, StreamRef) -&amp;gt; await(ConnPid, StreamRef, 5000, MonitorRef) await(ConnPid, StreamRef, MonitorRef) -&amp;gt; await(ConnPid, StreamRef, 5000, MonitorRef) await(ConnPid, StreamRef, Timeout) -&amp;gt; await(ConnPid, StreamRef, Timeout, MonitorRef) await(ConnPid, StreamRef, Timeout, MonitorRef) -&amp;gt; Result ConnPid :: pid() StreamRef :: reference() MonitorRef :: reference() Timeout :: timeout() Result :: tuple() - see below Wait for a response.
+This function waits for a message from the given stream and returns it as a tuple.</description>
+ </item>
+
+ <item>
<title>gun:await_body(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await_body/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7343,6 +7364,16 @@ Description await_body(ConnPid, StreamRef) -&amp;gt; await_body(ConnPid, StreamR
</item>
<item>
+ <title>gun:await_body(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_body/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_body/</guid>
+ <description>Name gun:await_body - Wait for the complete response body
+Description await_body(ConnPid, StreamRef) -&amp;gt; await_body(ConnPid, StreamRef, 5000, MonitorRef) await_body(ConnPid, StreamRef, MonitorRef) -&amp;gt; await_body(ConnPid, StreamRef, 5000, MonitorRef) await_body(ConnPid, StreamRef, Timeout) -&amp;gt; await_body(ConnPid, StreamRef, Timeout, MonitorRef) await_body(ConnPid, StreamRef, Timeout, MonitorRef) -&amp;gt; {ok, Body} | {ok, Body, Trailers} | {error, Reason} ConnPid :: pid() StreamRef :: reference() MonitorRef :: reference() Timeout :: timeout() Body :: binary() Trailers :: [{binary(), binary()}] Reason :: {stream_error | connection_error | down, any()} | timeout Wait for the complete response body.</description>
+ </item>
+
+ <item>
<title>gun:await_up(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await_up/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7387,6 +7418,17 @@ Arguments ConnPid The pid of the Gun connection process.</description>
</item>
<item>
+ <title>gun:await_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_up/</guid>
+ <description>Name gun:await_up - Wait for the connection to be up
+Description await_up(ConnPid) -&amp;gt; await_up(ConnPid, 5000, MonitorRef) await_up(ConnPid, MonitorRef) -&amp;gt; await_up(ConnPid, 5000, MonitorRef) await_up(ConnPid, Timeout) -&amp;gt; await_up(ConnPid, Timeout, MonitorRef) await_up(ConnPid, Timeout, MonitorRef) -&amp;gt; {ok, Protocol} | {error, Reason} ConnPid :: pid() MonitorRef :: reference() Timeout :: timeout() Protocol :: http | http2 | socks Reason :: {down, any()} | timeout Wait for the connection to be up.
+Arguments ConnPid The pid of the Gun connection process.</description>
+ </item>
+
+ <item>
<title>gun:cancel(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.cancel/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7435,6 +7477,18 @@ HTTP/1.1 does not support this feature. Gun will simply silence the stream and s
</item>
<item>
+ <title>gun:cancel(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.cancel/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.cancel/</guid>
+ <description>Name gun:cancel - Cancel the given stream
+Description cancel(ConnPid, StreamRef) -&amp;gt; ok ConnPid :: pid() StreamRef :: reference() Cancel the given stream.
+The behavior of this function depends on the protocol selected.
+HTTP/1.1 does not support this feature. Gun will simply silence the stream and stop relaying messages. Gun may also decide to close the connection if the response body is too large, to avoid wasting time and bandwidth.</description>
+ </item>
+
+ <item>
<title>gun:close(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.close/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7487,6 +7541,19 @@ Changelog 1.0: Function introduced. Examples Close the connection ok = gun:clo
</item>
<item>
+ <title>gun:close(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.close/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.close/</guid>
+ <description>Name gun:close - Brutally close the connection
+Description close(ConnPid) -&amp;gt; ok ConnPid :: pid() Brutally close the connection.
+Arguments ConnPid The pid of the Gun connection process.
+ Return value The atom ok is returned.
+Changelog 1.0: Function introduced. Examples Close the connection ok = gun:close(ConnPid). See also gun(3), gun:open(3), gun:open_unix(3), gun:shutdown(3)</description>
+ </item>
+
+ <item>
<title>gun:connect(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.2/manual/gun.connect/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7509,6 +7576,17 @@ This feature is currently only available for HTTP/1.1 connections. Upon successf
</item>
<item>
+ <title>gun:connect(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.connect/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.connect/</guid>
+ <description>Name gun:connect - Establish a tunnel to the origin server
+Description connect(ConnPid, Destination) -&amp;gt; connect(ConnPid, Destination, [], #{}). connect(ConnPid, Destination, Headers) -&amp;gt; connect(ConnPid, Destination, Headers, #{}). connect(ConnPid, Destination, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Destination :: gun:connect_destination() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Establish a tunnel to the origin server.
+This feature is currently only available for HTTP/1.1 connections. Upon successful completion of the CONNECT request a tunnel is established and subsequent requests will go through the tunnel.</description>
+ </item>
+
+ <item>
<title>gun:data(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.data/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7557,6 +7635,18 @@ All calls to this function must use the nofin flag except for the last which mus
</item>
<item>
+ <title>gun:data(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.data/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.data/</guid>
+ <description>Name gun:data - Stream the body of a request
+Description data(ConnPid, StreamRef, IsFin, Data) -&amp;gt; ok ConnPid :: pid() StreamRef :: reference() IsFin :: fin | nofin Data :: iodata() Stream the body of a request.
+This function can only be used if the original request had headers indicating that a body would be streamed.
+All calls to this function must use the nofin flag except for the last which must use fin to indicate the end of the request body.</description>
+ </item>
+
+ <item>
<title>gun:delete(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.delete/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7613,6 +7703,20 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:delete(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.delete/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.delete/</guid>
+ <description>Name gun:delete - Delete a resource
+Description delete(ConnPid, Path) -&amp;gt; delete(ConnPid, Path, [], #{}). delete(ConnPid, Path, Headers) -&amp;gt; delete(ConnPid, Path, Headers, #{}) delete(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Delete a resource.
+Arguments ConnPid The pid of the Gun connection process.
+ Path Path to the resource.
+ Headers Additional request headers.
+ ReqOpts Request options.</description>
+ </item>
+
+ <item>
<title>gun:flush(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.flush/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7669,6 +7773,20 @@ ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:flush(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.flush/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.flush/</guid>
+ <description>Name gun:flush - Flush all messages related to a connection or a stream
+Description flush(ConnPid) -&amp;gt; ok flush(StreamRef) -&amp;gt; ok ConnPid :: pid() StreamRef :: reference() Flush all messages related to a connection or a stream.
+Arguments Either of these arguments may be provided:
+ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.
+ Return value The atom ok is returned.</description>
+ </item>
+
+ <item>
<title>gun:get(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.get/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7721,6 +7839,20 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:get(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.get/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.get/</guid>
+ <description>Name gun:get - Get a resource representation
+Description get(ConnPid, Path) -&amp;gt; get(ConnPid, Path, [], #{}). get(ConnPid, Path, Headers) -&amp;gt; get(ConnPid, Path, Headers, #{}) get(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Get a resource representation.
+Arguments ConnPid The pid of the Gun connection process.
+ Path Path to the resource.
+ Headers Additional request headers.
+ ReqOpts Request options.</description>
+ </item>
+
+ <item>
<title>gun:head(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.head/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7765,6 +7897,29 @@ This function performs the same operation as gun:get(3), except the server will
</item>
<item>
+ <title>gun:head(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.head/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.head/</guid>
+ <description>Name gun:head - Get headers of a resource representation
+Description head(ConnPid, Path) -&amp;gt; head(ConnPid, Path, [], #{}). head(ConnPid, Path, Headers) -&amp;gt; head(ConnPid, Path, Headers, #{}) head(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Get headers of a resource representation.
+This function performs the same operation as gun:get(3), except the server will not send the resource representation, only the response&amp;apos;s status code and headers.</description>
+ </item>
+
+ <item>
+ <title>gun:headers(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.headers/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.headers/</guid>
+ <description>Name gun:headers - Initiate the given request
+Description headers(ConnPid, Method, Path, Headers) -&amp;gt; headers(ConnPid, Method, Path, Headers, #{}) headers(ConnPid, Method, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Method :: binary() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Initiate the given request.
+This is a general purpose function that should only be used when other method-specific functions do not apply.
+The function headers/4,5 initiates a request but does not send the request body.</description>
+ </item>
+
+ <item>
<title>gun:info(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.info/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7814,6 +7969,16 @@ Description info(ConnPid) -&amp;gt; Info ConnPid :: pid() Info :: #{ socket =&am
</item>
<item>
+ <title>gun:info(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.info/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.info/</guid>
+ <description>Name gun:info - Obtain information about the connection
+Description info(ConnPid) -&amp;gt; Info ConnPid :: pid() Info :: #{ owner =&amp;gt; pid(), socket =&amp;gt; inet:socket() | ssl:sslsocket(), transport =&amp;gt; tcp | tls, protocol =&amp;gt; http | http2 | socks | ws, sock_ip =&amp;gt; inet:ip_address(), sock_port =&amp;gt; inet:port_number(), origin_host =&amp;gt; inet:hostname() | inet:ip_address(), origin_port =&amp;gt; inet:port_number(), intermediaries =&amp;gt; [Intermediary] } Intermediary :: #{ type =&amp;gt; connect | socks5, host =&amp;gt; inet:hostname() | inet:ip_address(), port =&amp;gt; inet:port_number(), transport =&amp;gt; tcp | tls, protocol =&amp;gt; http | http2 | socks } Obtain information about the connection.</description>
+ </item>
+
+ <item>
<title>gun:open(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.open/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7866,6 +8031,17 @@ Arguments Host Host or IP address to connect to.
</item>
<item>
+ <title>gun:open(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open/</guid>
+ <description>Name gun:open - Open a connection to the given host and port
+Description open(Host, Port) -&amp;gt; open(Host, Port, #{}) open(Host, Port, Opts) -&amp;gt; {ok, pid()} | {error, Reason} Host :: inet:hostname() | inet:ip_address() Port :: inet:port_number() Opts :: gun:opts() Reason :: {options, OptName} | {options, {http | http2 | socks | ws, OptName}} | any() OptName :: atom() Open a connection to the given host and port.
+Arguments Host Host or IP address to connect to.</description>
+ </item>
+
+ <item>
<title>gun:open_unix(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.open_unix/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7918,6 +8094,18 @@ Arguments SocketPath Path to the Unix domain socket to connect to.
</item>
<item>
+ <title>gun:open_unix(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open_unix/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open_unix/</guid>
+ <description>Name gun:open_unix - Open a connection to the given Unix domain socket
+Description open_unix(SocketPath, Opts) -&amp;gt; {ok, pid()} | {error, Reason} SocketPath :: string() Opts :: gun:opts() Reason :: {options, OptName} | {options, {http | http2 | socks | ws, OptName}} | any() OptName :: atom() Open a connection to the given Unix domain socket.
+Arguments SocketPath Path to the Unix domain socket to connect to.
+ Opts Options for this connection.</description>
+ </item>
+
+ <item>
<title>gun:options(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.options/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7962,6 +8150,17 @@ The special path &amp;quot;*&amp;quot; can be used to obtain information about t
</item>
<item>
+ <title>gun:options(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.options/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.options/</guid>
+ <description>Name gun:options - Query the capabilities of the server or a resource
+Description options(ConnPid, Path) -&amp;gt; options(ConnPid, Path, [], #{}). options(ConnPid, Path, Headers) -&amp;gt; options(ConnPid, Path, Headers, #{}) options(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Query the capabilities of the server or a resource.
+The special path &amp;quot;*&amp;quot; can be used to obtain information about the server as a whole.</description>
+ </item>
+
+ <item>
<title>gun:patch(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.patch/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8006,6 +8205,16 @@ The behavior of this function varies depending on whether a body is provided.</d
</item>
<item>
+ <title>gun:patch(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.patch/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.patch/</guid>
+ <description>Name gun:patch - Apply a set of changes to a resource
+Description patch(ConnPid, Path, Headers) -&amp;gt; patch(ConnPid, Path, Headers, #{}) patch(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef patch(ConnPid, Path, Headers, Body) -&amp;gt; patch(ConnPid, Path, Headers, Body, #{}) patch(ConnPid, Path, Headers, Body, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() Body :: iodata() ReqOpts :: gun:req_opts() StreamRef :: reference() Apply a set of changes to a resource.</description>
+ </item>
+
+ <item>
<title>gun:post(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.post/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8050,6 +8259,16 @@ The behavior of this function varies depending on whether a body is provided.</d
</item>
<item>
+ <title>gun:post(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.post/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.post/</guid>
+ <description>Name gun:post - Process the enclosed representation according to a resource&amp;apos;s own semantics
+Description post(ConnPid, Path, Headers) -&amp;gt; post(ConnPid, Path, Headers, #{}) post(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef post(ConnPid, Path, Headers, Body) -&amp;gt; post(ConnPid, Path, Headers, Body, #{}) post(ConnPid, Path, Headers, Body, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() Body :: iodata() ReqOpts :: gun:req_opts() StreamRef :: reference() Process the enclosed representation according to a resource&amp;apos;s own semantics.</description>
+ </item>
+
+ <item>
<title>gun:put(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.put/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8098,6 +8317,17 @@ The function put/3 expects either a content-length or content-type header to ind
</item>
<item>
+ <title>gun:put(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.put/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.put/</guid>
+ <description>Name gun:put - Create or replace a resource
+Description put(ConnPid, Path, Headers) -&amp;gt; put(ConnPid, Path, Headers, #{}) put(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef put(ConnPid, Path, Headers, Body) -&amp;gt; put(ConnPid, Path, Headers, Body, #{}) put(ConnPid, Path, Headers, Body, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() Body :: iodata() ReqOpts :: gun:req_opts() StreamRef :: reference() Create or replace a resource.
+The behavior of this function varies depending on whether a body is provided.</description>
+ </item>
+
+ <item>
<title>gun:request(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.request/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8142,6 +8372,70 @@ This is a general purpose function that should only be used when other method-sp
</item>
<item>
+ <title>gun:request(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.request/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.request/</guid>
+ <description>Name gun:request - Perform the given request
+Description request(ConnPid, Method, Path, Headers, Body) -&amp;gt; request(ConnPid, Method, Path, Headers, Body, #{}) request(ConnPid, Method, Path, Headers, Body, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Method :: binary() Path :: iodata() Headers :: gun:req_headers() Body :: iodata() ReqOpts :: gun:req_opts() StreamRef :: reference() Perform the given request.
+This is a general purpose function that should only be used when other method-specific functions do not apply.</description>
+ </item>
+
+ <item>
+ <title>gun:set_owner(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.set_owner/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.set_owner/</guid>
+ <description>Name gun:set_owner - Set a new owner for the connection
+Description set_owner(ConnPid, OwnerPid) -&amp;gt; ok ConnPid :: pid() OwnerPid :: pid() Set a new owner for the connection.
+Only the current owner of the connection can set a new owner.
+Gun monitors the owner of the connection and automatically shuts down gracefully when the owner exits.
+Arguments ConnPid The pid of the Gun connection process.
+ OwnerPid The pid of the new owner for the connection.</description>
+ </item>
+
+ <item>
+ <title>gun:shutdown(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.shutdown/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.shutdown/</guid>
+ <description>Name gun:shutdown - Gracefully close the connection
+Description shutdown(ConnPid) -&amp;gt; ok ConnPid :: pid() Gracefully close the connection.
+Gun will wait for up to closing_timeout milliseconds before brutally closing the connection. The graceful shutdown mechanism varies between the different protocols:
+For HTTP/1.1 there is no such mechanism and Gun will close the connection once the current response is received. Any pipelined requests are immediately terminated. For HTTP/2 Gun will send a GOAWAY frame and wait for the existing streams to terminate.</description>
+ </item>
+
+ <item>
+ <title>gun:stream_info(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.stream_info/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.stream_info/</guid>
+ <description>Name gun:stream_info - Obtain information about a stream
+Description stream_info(ConnPid, StreamRef) -&amp;gt; {ok, undefined | Info} | {error, not_connected} ConnPid :: pid() StreamRef :: reference() Info :: #{ ref =&amp;gt; reference(), reply_to =&amp;gt; pid(), state =&amp;gt; running | stopping } Obtain information about a stream.
+Arguments ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.
+ Return value A map is returned containing various informations about the stream.</description>
+ </item>
+
+ <item>
+ <title>gun:update_flow(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.update_flow/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.update_flow/</guid>
+ <description>Name gun:update_flow - Update a stream&amp;apos;s flow control value
+Description update_flow(ConnPid, StreamRef, Flow) -&amp;gt; ok ConnPid :: pid() StreamRef :: reference() Flow :: pos_integer() Update a stream&amp;apos;s flow control value.
+The flow value can only ever be incremented.
+This function does nothing for streams that have flow control disabled (which is the default).
+Arguments ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.</description>
+ </item>
+
+ <item>
<title>gun:ws_send(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.ws_send/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8194,6 +8488,19 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:ws_send(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_send/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_send/</guid>
+ <description>Name gun:ws_send - Send Websocket frames
+Description ws_send(ConnPid, Frames) -&amp;gt; ok ConnPid :: pid() Frames :: Frame | [Frame] Frame :: close | ping | pong | {text | binary | close | ping | pong, iodata()} | {close, non_neg_integer(), iodata()} Send Websocket frames.
+The connection must first be upgraded to Websocket using the function gun:ws_upgrade(3).
+Arguments ConnPid The pid of the Gun connection process.
+ Frames One or more Websocket frame(s).</description>
+ </item>
+
+ <item>
<title>gun:ws_upgrade(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.ws_upgrade/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8242,6 +8549,18 @@ HTTP/1.1 cannot handle Websocket and HTTP requests concurrently. The upgrade, if
</item>
<item>
+ <title>gun:ws_upgrade(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_upgrade/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_upgrade/</guid>
+ <description>Name gun:ws_upgrade - Upgrade to Websocket
+Description ws_upgrade(ConnPid, Path) -&amp;gt; ws_upgrade(ConnPid, Path, []) ws_upgrade(ConnPid, Path, Headers) -&amp;gt; StreamRef ws_upgrade(ConnPid, Path, Headers, WsOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() WsOpts :: gun:ws_opts StreamRef :: reference() Upgrade to Websocket.
+The behavior of this function depends on the protocol selected.
+HTTP/1.1 cannot handle Websocket and HTTP requests concurrently. The upgrade, if successful, will result in the complete takeover of the connection.</description>
+ </item>
+
+ <item>
<title>gun_data(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_data/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8294,6 +8613,19 @@ The response body may be terminated either by a data message with the flag fin s
</item>
<item>
+ <title>gun_data(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_data/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_data/</guid>
+ <description>Name gun_data - Response body
+Description {gun_data, ConnPid, StreamRef, IsFin, Data} ConnPid :: pid() StreamRef :: reference() IsFin :: fin | nofin Data :: binary() Response body.
+This message informs the relevant process that the server sent a all or part of the body for the response to the original request.
+A data message is always preceded by a response message.
+The response body may be terminated either by a data message with the flag fin set or by a gun_trailers(3) message.</description>
+ </item>
+
+ <item>
<title>gun_down(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_down/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8342,6 +8674,18 @@ When the connection goes back up, Gun will not attempt to retry requests.</descr
</item>
<item>
+ <title>gun_down(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_down/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_down/</guid>
+ <description>Name gun_down - The connection is down
+Description {gun_down, ConnPid, Protocol, Reason, KilledStreams} ConnPid :: pid() Protocol :: http | http2 | socks | ws Reason :: any() KilledStreams :: [reference()] The connection is down.
+This message informs the owner process that the connection was lost. Depending on the retry and retry_timeout options Gun may automatically attempt to reconnect.
+When the connection goes back up, Gun will not attempt to retry requests.</description>
+ </item>
+
+ <item>
<title>gun_error(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_error/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8386,6 +8730,17 @@ These messages inform the relevant process that an error occurred. A reference i
</item>
<item>
+ <title>gun_error(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_error/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_error/</guid>
+ <description>Name gun_error - Stream or connection-wide error
+Description {gun_error, ConnPid, StreamRef, Reason} {gun_error, ConnPid, Reason} ConnPid :: pid() StreamRef :: reference() Reason :: any() Stream or connection-wide error.
+These messages inform the relevant process that an error occurred. A reference is given when the error pertains to a specific stream. Connection-wide errors do not imply that the connection is no longer usable, they are used for all errors that are not specific to a stream.</description>
+ </item>
+
+ <item>
<title>gun_inform(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_inform/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8434,6 +8789,18 @@ Informational responses are only intermediate responses and provide no guarantee
</item>
<item>
+ <title>gun_inform(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_inform/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_inform/</guid>
+ <description>Name gun_inform - Informational response
+Description {gun_inform, ConnPid, StreamRef, Status, Headers} ConnPid :: pid() StreamRef :: reference() Status :: 100..199 Headers :: [{binary(), binary()}] Informational response.
+This message informs the relevant process that the server sent an informational response to the original request.
+Informational responses are only intermediate responses and provide no guarantees as to what the final response will be. An informational response always precedes the response to the original request.</description>
+ </item>
+
+ <item>
<title>gun_push(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_push/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8482,6 +8849,18 @@ A server-initiated push message always precedes the response to the original req
</item>
<item>
+ <title>gun_push(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_push/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_push/</guid>
+ <description>Name gun_push - Server-initiated push
+Description {gun_push, ConnPid, StreamRef, NewStreamRef, Method, URI, Headers} ConnPid :: pid() StreamRef :: reference() NewStreamRef :: reference() Method :: binary() URI :: binary() Headers :: [{binary(), binary()}] Server-initiated push.
+This message informs the relevant process that the server is pushing a resource related to the effective target URI of the original request.
+A server-initiated push message always precedes the response to the original request.</description>
+ </item>
+
+ <item>
<title>gun_response(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_response/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8538,6 +8917,33 @@ Elements ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun_response(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_response/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_response/</guid>
+ <description>Name gun_response - Response
+Description {gun_response, ConnPid, StreamRef, IsFin, Status, Headers} ConnPid :: pid() StreamRef :: reference() IsFin :: fin | nofin Status :: non_neg_integer() Headers :: [{binary(), binary()}] Response.
+This message informs the relevant process that the server sent a response to the original request.
+Elements ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.
+ IsFin Whether this message terminates the response.</description>
+ </item>
+
+ <item>
+ <title>gun_socks_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_socks_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_socks_up/</guid>
+ <description>Name gun_socks_up - The Socks connection is up
+Description {gun_socks_up, ConnPid, Protocol} ConnPid :: pid() Protocol :: http | http2 | socks The Socks connection is up.
+This message informs the owner/calling process that the connection completed through the configured Socks proxy.
+If Gun is configured to connect to another Socks server, then the connection is not usable yet. One or more gun_socks_up(3) messages will follow.
+Otherwise, Gun will start processing the messages it received while waiting for the connection to be up.</description>
+ </item>
+
+ <item>
<title>gun_trailers(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_trailers/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8598,6 +9004,21 @@ Elements ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun_trailers(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_trailers/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_trailers/</guid>
+ <description>Name gun_trailers - Response trailers
+Description {gun_trailers, ConnPid, StreamRef, Headers} ConnPid :: pid() StreamRef :: reference() Headers :: [{binary(), binary()}] Response trailers.
+This message informs the relevant process that the server sent response trailers for the response to the original request.
+A trailers message terminates the response.
+Elements ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.
+ Headers Trailing headers sent after the response body.</description>
+ </item>
+
+ <item>
<title>gun_up(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_up/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8646,6 +9067,19 @@ Gun will now start processing the messages it received while waiting for the con
</item>
<item>
+ <title>gun_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_up/</guid>
+ <description>Name gun_up - The connection is up
+Description {gun_up, ConnPid, Protocol} ConnPid :: pid() Protocol :: http | http2 | socks The connection is up.
+This message informs the owner process that the connection or reconnection completed.
+If Gun is configured to connect to a Socks server, then the connection is not usable yet. One or more gun_socks_up(3) messages will follow.
+Otherwise, Gun will start processing the messages it received while waiting for the connection to be up.</description>
+ </item>
+
+ <item>
<title>gun_upgrade(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_upgrade/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8694,6 +9128,18 @@ The exact semantics of this message depend on the original protocol. HTTP/1.1 up
</item>
<item>
+ <title>gun_upgrade(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_upgrade/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_upgrade/</guid>
+ <description>Name gun_upgrade - Successful protocol upgrade
+Description {gun_upgrade, ConnPid, StreamRef, Protocols, Headers} ConnPid :: pid() StreamRef :: reference() Protocols :: [&amp;lt;&amp;lt;&#34;websocket&#34;&amp;gt;&amp;gt;] Headers :: [{binary(), binary()}] Successful protocol upgrade.
+This message informs the relevant process that the server accepted to upgrade to one or more protocols given in the original request.
+The exact semantics of this message depend on the original protocol. HTTP/1.1 upgrades apply to the entire connection. HTTP/2 uses a different mechanism which allows switching specific streams to a different protocol.</description>
+ </item>
+
+ <item>
<title>gun_ws(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_ws/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8746,6 +9192,178 @@ Elements ConnPid The pid of the Gun connection process.</description>
</item>
<item>
+ <title>gun_ws(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_ws/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_ws/</guid>
+ <description>Name gun_ws - Websocket frame
+Description {gun_ws, ConnPid, StreamRef, Frame} ConnPid :: pid() StreamRef :: reference() Frame :: close | ping | pong | {text | binary | close, binary()} | {close, non_neg_integer(), binary()} | {ping | pong, binary()} Websocket frame.
+This message informs the relevant process that the server sent the enclosed frame.
+This message can only be sent on streams that were upgraded to the Websocket protocol.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.4/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.4/manual/</guid>
+ <description>ranch(7) ranch(3) ranch_protocol(3) ranch_ssl(3) ranch_tcp(3) ranch_transport(3) </description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.5/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.5/manual/</guid>
+ <description>ranch(7) ranch(3) ranch_protocol(3) ranch_ssl(3) ranch_tcp(3) ranch_transport(3) </description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.6/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.6/manual/</guid>
+ <description>Name ranch - Socket acceptor pool for TCP protocols
+Description Ranch is a socket acceptor pool for TCP protocols.
+Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
+Modules Functions:
+ranch(3) - Socket acceptor pool Transports:
+ranch_ssl(3) - SSL transport ranch_tcp(3) - TLS transport Behaviors:</description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.7/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.7/manual/</guid>
+ <description>Name ranch - Socket acceptor pool for TCP protocols
+Description Ranch is a socket acceptor pool for TCP protocols.
+Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
+Modules Functions:
+ranch(3) - Socket acceptor pool ranch_proxy_header(3) - PROXY protocol Transports:
+ranch_ssl(3) - SSL transport ranch_tcp(3) - TCP transport Behaviors:</description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/2.0/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/2.0/manual/</guid>
+ <description>Name ranch - Socket acceptor pool for TCP protocols
+Description Ranch is a socket acceptor pool for TCP protocols.
+Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
+Modules Functions:
+ranch(3) - Socket acceptor pool ranch_proxy_header(3) - PROXY protocol Transports:
+ranch_ssl(3) - SSL transport ranch_tcp(3) - TCP transport Behaviors:</description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.4/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.4/guide/</guid>
+ <description>Introduction Listeners Transports Protocols Embedded mode Writing parsers SSL client authentication Internals </description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.5/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.5/guide/</guid>
+ <description>Introduction Listeners Transports Protocols Embedded mode Writing parsers SSL client authentication Internals </description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.6/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.6/guide/</guid>
+ <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Advanced Internals Additional information Upcoming changes in Ranch 2.0 Changes since Ranch 1.6 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.7/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.7/guide/</guid>
+ <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Advanced Internals Additional information Upcoming changes in Ranch 2.0 Changes since Ranch 1.7 Migrating from Ranch 1.6 to 1.7 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/2.0/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/2.0/guide/</guid>
+ <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Connection draining Advanced Internals Additional information Migrating from Ranch 1.7 to 2.0 Migrating from Ranch 1.6 to 1.7 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
+ </item>
+
+ <item>
<title>ranch(3)</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/manual/ranch/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
diff --git a/donate/index.html b/donate/index.html
index 15339578..36d80e67 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -616,6 +616,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
@@ -1859,6 +1883,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</div>
</div>
</div>
diff --git a/index.html b/index.html
index 8cf460a0..5d15ef1e 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
<html lang="en">
<head>
- <meta name="generator" content="Hugo 0.55.6" />
+ <meta name="generator" content="Hugo 0.58.1" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
@@ -174,10 +174,10 @@
<a class="btn btn-large" href="https://github.com/ninenines/gun">Source Code</a>
- <a class="btn btn-large" href="/docs/en/gun/1.3/guide/">User Guide</a>
+ <a class="btn btn-large" href="/docs/en/gun/2.0/guide/">User Guide</a>
- <a class="btn btn-large" href="/docs/en/gun/1.3/manual/">Manual</a>
+ <a class="btn btn-large" href="/docs/en/gun/2.0/manual/">Manual</a>
</p>
@@ -755,6 +755,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<p>Feeling generous? Love reading?<br/><a href="https://salt.bountysource.com/teams/ninenines">Crowdfund my salary</a> or buy <a href="/articles/erlanger-playbook">The Erlanger Playbook</a></p>
@@ -1982,6 +2006,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</div></div>
</div>
diff --git a/index.xml b/index.xml
index fa283d53..ded72c5a 100644
--- a/index.xml
+++ b/index.xml
@@ -6,7 +6,7 @@
<description>Recent content on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Thu, 22 Aug 2019 07:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Fri, 27 Sep 2019 07:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/index.xml" rel="self" type="application/rss+xml" />
@@ -73,6 +73,20 @@ Copyright (c) 2013-2018, Loïc Hoguin &amp;lt;[email protected]&amp;gt; Permiss
<item>
<title>Introduction</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/introduction/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/introduction/</guid>
+ <description>Gun is an HTTP client for Erlang/OTP.
+Gun supports the HTTP/2, HTTP/1.1 and Websocket protocols.
+Prerequisites Knowledge of Erlang, but also of the HTTP/1.1, HTTP/2 and Websocket protocols is required in order to read this guide.
+Supported platforms Gun is tested and supported on Linux, FreeBSD, Windows and OSX.
+Gun is developed for Erlang/OTP 20.0 and newer.
+Note that Gun will not work on the Windows build of Erlang/OTP 20.3 due to a bug in Erlang/OTP&amp;apos;s stdlib application.</description>
+ </item>
+
+ <item>
+ <title>Introduction</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/guide/introduction/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -339,6 +353,19 @@ Starting Gun in an Erlang shell 1&amp;gt; application:ensure_all_started(gun).</
</item>
<item>
+ <title>Starting and stopping</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/start/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/start/</guid>
+ <description>This chapter describes how to start and stop the Gun application.
+Setting up Specify Gun as a dependency to your application in your favorite build tool.
+With Erlang.mk this is done by adding gun to the DEPS variable in your Makefile.
+Adding Gun as an Erlang.mk dependency DEPS = gun Starting Gun is an OTP application. It needs to be started before you can use it.
+Starting Gun in an Erlang shell 1&amp;gt; application:ensure_all_started(gun).</description>
+ </item>
+
+ <item>
<title>Supported protocols</title>
<link>https://ninenines.eu/docs/en/gun/1.0/guide/protocols/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -387,6 +414,18 @@ Gun will send a gun_inform message for every intermediate informational response
</item>
<item>
+ <title>Supported protocols</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/protocols/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/protocols/</guid>
+ <description>This chapter describes the protocols supported and the operations available to them.
+HTTP/1.1 HTTP/1.1 is a text request-response protocol. The client sends a request, the server sends back a response.
+Gun provides convenience functions for performing GET, HEAD, OPTIONS, POST, PATCH, PUT, and DELETE requests. All these functions are aliases of gun:headers/4,5 or gun:request/5,6 for the respective methods. Gun also provides a gun:data/4 function for streaming the request body.
+Gun will send a gun_inform message for every intermediate informational responses received.</description>
+ </item>
+
+ <item>
<title>Introduction</title>
<link>https://ninenines.eu/docs/en/cowboy/2.2/guide/introduction/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -556,6 +595,17 @@ A Gun connection is an Erlang process that manages a socket to a remote endpoint
</item>
<item>
+ <title>Connection</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/connect/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/connect/</guid>
+ <description>This chapter describes how to open, monitor and close a connection using the Gun client.
+Gun connections Gun is designed with the HTTP/2 and Websocket protocols in mind. They are built for long-running connections that allow concurrent exchange of data, either in the form of request/responses for HTTP/2 or in the form of messages for Websocket.
+A Gun connection is an Erlang process that manages a socket to a remote endpoint.</description>
+ </item>
+
+ <item>
<title>Protocols</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/guide/protocols/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -704,6 +754,18 @@ Streams can be canceled at any time.</description>
</item>
<item>
+ <title>HTTP</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/http/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/http/</guid>
+ <description>This chapter describes how to use the Gun client for communicating with an HTTP/1.1 or HTTP/2 server.
+Streams Every time a request is initiated, Gun creates a stream. A stream reference uniquely identifies a set of request and response and must be used to perform additional operations with a stream or to identify its messages.
+Stream references use the Erlang reference data type and are therefore unique.
+Streams can be canceled at any time.</description>
+ </item>
+
+ <item>
<title>Embedded mode</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/guide/embedded/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -858,6 +920,17 @@ You must use the gun:ws_upgrade/2,3,4 function to upgrade to Websocket.</descrip
</item>
<item>
+ <title>Websocket</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/websocket/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/websocket/</guid>
+ <description>This chapter describes how to use the Gun client for communicating with a Websocket server.
+HTTP upgrade Websocket is a protocol built on top of HTTP. To use Websocket, you must first request for the connection to be upgraded. Only HTTP/1.1 connections can be upgraded to Websocket, so you might need to restrict the protocol to HTTP/1.1 if you are planning to use Websocket over TLS.
+You must use the gun:ws_upgrade/2,3,4 function to upgrade to Websocket.</description>
+ </item>
+
+ <item>
<title>Writing parsers</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/guide/parsers/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -913,6 +986,17 @@ This chapter isn&amp;apos;t specifically about Ranch, we assume here that you kn
</item>
<item>
+ <title>Changes since Gun 1.3</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.3/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.3/</guid>
+ <description>The following patch versions were released since Gun 1.3:
+Gun 1.3.1 This release backports a fix that will be included in the upcoming Gun 2.0 release:
+POTENTIAL SECURITY VULNERABILITY: Fix transfer-encoding precedence over content-length in responses. This bug may contribute to a response smuggling security vulnerability when Gun is used inside a proxy. </description>
+ </item>
+
+ <item>
<title>Migrating from Gun 1.0 to 1.1</title>
<link>https://ninenines.eu/docs/en/gun/1.1/guide/migrating_from_1.0/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -933,13 +1017,14 @@ Features added CONNECT requests can now be issued on HTTP/1.1 connections. The t
</item>
<item>
- <title>Migrating from Gun 1.2 to 1.3</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</link>
+ <title>Migrating from Gun 1.3 to 2.0</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
- <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</guid>
- <description>Gun 1.3 improves the support for CONNECT requests introduced in the previous version and documents Websocket protocol negotiation.
-Features added The protocols CONNECT destination option has been added as a replacement for the now deprecated protocol option. Add built-in support for Websocket protocol negotiation through the Websocket option protocols. The interface of the handler module currently remains undocumented and must be set to gun_ws_h. Add the h2specd HTTP/2 test suite from the h2spec project.</description>
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/</guid>
+ <description>Gun 2.0 adds many features including graceful shutdown, flow control for data messages, event handlers, support for tunneling TLS connections through TLS proxies, Socks proxy support, and much more. It has only a limited number of breaking changes compared to the previous version.
+Gun 2.0 greatly improves the HTTP/2 performance when it comes to receiving large response bodies; and when receiving response bodies from many separate requests concurrently.
+Gun now shares much of its HTTP/2 code with Cowboy, including the HTTP/2 state machine.</description>
</item>
<item>
@@ -1168,13 +1253,23 @@ Features added Update Cowlib to 2.5.1 Bugs fixed A bug in the experimental gun
</item>
<item>
- <title>Migrating from Gun 1.1 to 1.2</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</link>
+ <title>Migrating from Gun 1.2 to 1.3</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
- <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</guid>
- <description>Gun 1.2 adds support for the CONNECT request over HTTP/1.1 connections.
-Features added CONNECT requests can now be issued on HTTP/1.1 connections. The tunneled connection can use any of the protocols Gun supports: HTTP/1.1, HTTP/2 and Websocket over both TCP and TLS transports. Note that Gun currently does not support tunneling a TLS connection over a TLS connection due to limitations in Erlang/OTP. Gun supports sending multiple CONNECT requests, allowing the tunnel to the origin server to go through multiple proxies.</description>
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</guid>
+ <description>Gun 1.3 improves the support for CONNECT requests introduced in the previous version and documents Websocket protocol negotiation.
+Features added The protocols CONNECT destination option has been added as a replacement for the now deprecated protocol option. Add built-in support for Websocket protocol negotiation through the Websocket option protocols. The interface of the handler module currently remains undocumented and must be set to gun_ws_h. Add the h2specd HTTP/2 test suite from the h2spec project.</description>
+ </item>
+
+ <item>
+ <title>Migrating from Gun 1.2 to 1.3</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.2/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.2/</guid>
+ <description>Gun 1.3 improves the support for CONNECT requests introduced in the previous version and documents Websocket protocol negotiation.
+Features added The protocols CONNECT destination option has been added as a replacement for the now deprecated protocol option. Add built-in support for Websocket protocol negotiation through the Websocket option protocols. The interface of the handler module currently remains undocumented and must be set to gun_ws_h. Add the h2specd HTTP/2 test suite from the h2spec project.</description>
</item>
<item>
@@ -1268,13 +1363,23 @@ Note that for everything related to efficiency and performance, you should perfo
</item>
<item>
- <title>Migrating from Gun 1.0 to 1.1</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</link>
+ <title>Migrating from Gun 1.1 to 1.2</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
- <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</guid>
- <description>Gun 1.1 updates the Cowlib dependency to 2.5.1 and fixes a few problems with experimental features.
-Features added Update Cowlib to 2.5.1 Bugs fixed A bug in the experimental gun_sse_h where lone id lines were not propagated has been fixed by updating the Cowlib dependency. The status code was incorrectly given to the experimental content handlers as a binary. It has been fixed an an integer is now given as was intended.</description>
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</guid>
+ <description>Gun 1.2 adds support for the CONNECT request over HTTP/1.1 connections.
+Features added CONNECT requests can now be issued on HTTP/1.1 connections. The tunneled connection can use any of the protocols Gun supports: HTTP/1.1, HTTP/2 and Websocket over both TCP and TLS transports. Note that Gun currently does not support tunneling a TLS connection over a TLS connection due to limitations in Erlang/OTP. Gun supports sending multiple CONNECT requests, allowing the tunnel to the origin server to go through multiple proxies.</description>
+ </item>
+
+ <item>
+ <title>Migrating from Gun 1.1 to 1.2</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.1/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.1/</guid>
+ <description>Gun 1.2 adds support for the CONNECT request over HTTP/1.1 connections.
+Features added CONNECT requests can now be issued on HTTP/1.1 connections. The tunneled connection can use any of the protocols Gun supports: HTTP/1.1, HTTP/2 and Websocket over both TCP and TLS transports. Note that Gun currently does not support tunneling a TLS connection over a TLS connection due to limitations in Erlang/OTP. Gun supports sending multiple CONNECT requests, allowing the tunnel to the origin server to go through multiple proxies.</description>
</item>
<item>
@@ -1425,6 +1530,26 @@ Loop handlers are used for requests where a response might not be immediately av
</item>
<item>
+ <title>Migrating from Gun 1.0 to 1.1</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</guid>
+ <description>Gun 1.1 updates the Cowlib dependency to 2.5.1 and fixes a few problems with experimental features.
+Features added Update Cowlib to 2.5.1 Bugs fixed A bug in the experimental gun_sse_h where lone id lines were not propagated has been fixed by updating the Cowlib dependency. The status code was incorrectly given to the experimental content handlers as a binary. It has been fixed an an integer is now given as was intended.</description>
+ </item>
+
+ <item>
+ <title>Migrating from Gun 1.0 to 1.1</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.0/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.0/</guid>
+ <description>Gun 1.1 updates the Cowlib dependency to 2.5.1 and fixes a few problems with experimental features.
+Features added Update Cowlib to 2.5.1 Bugs fixed A bug in the experimental gun_sse_h where lone id lines were not propagated has been fixed by updating the Cowlib dependency. The status code was incorrectly given to the experimental content handlers as a binary. It has been fixed an an integer is now given as was intended.</description>
+ </item>
+
+ <item>
<title>Static files</title>
<link>https://ninenines.eu/docs/en/cowboy/2.2/guide/static_files/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2609,6 +2734,17 @@ HTTP IANA Registries HTTP Method Registry HTTP Status Code Registry Message He
</item>
<item>
+ <title>Gun 2.0 pre-release 1</title>
+ <link>https://ninenines.eu/articles/gun-2.0.0-pre.1/</link>
+ <pubDate>Fri, 27 Sep 2019 07:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/gun-2.0.0-pre.1/</guid>
+ <description>Gun 2.0.0-pre.1 has been released!
+The first pre-release version of Gun 2.0 has been released! Gun 2.0 adds a ton of features along with a small number of breaking changes.
+Before listing the features please note that this pre-release includes a fix for a potential security vulnerability! This only applies when Gun is used inside a proxy under specific circumstances. Please see the migration guide for details. Since the issue also exists in the previous version I have released Gun 1.</description>
+ </item>
+
+ <item>
<title>Erlang meetup: 10 septembre 2019</title>
<link>https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/</link>
<pubDate>Thu, 22 Aug 2019 07:00:00 +0100</pubDate>
@@ -3257,250 +3393,6 @@ cowboy(3) - Listener management cowboy_req(3) - Request and response cowboy_ro
</item>
<item>
- <title>Gun Function Reference</title>
- <link>https://ninenines.eu/docs/en/gun/1.0/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.0/manual/</guid>
- <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
-Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
-Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
-Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
- </item>
-
- <item>
- <title>Gun Function Reference</title>
- <link>https://ninenines.eu/docs/en/gun/1.1/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.1/manual/</guid>
- <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
-Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
-Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
-Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
- </item>
-
- <item>
- <title>Gun Function Reference</title>
- <link>https://ninenines.eu/docs/en/gun/1.2/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.2/manual/</guid>
- <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
-Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
-Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
-Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
- </item>
-
- <item>
- <title>Gun Function Reference</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.3/manual/</guid>
- <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
-Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
-Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
-Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
- </item>
-
- <item>
- <title>Gun User Guide</title>
- <link>https://ninenines.eu/docs/en/gun/1.0/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.0/guide/</guid>
- <description>Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket </description>
- </item>
-
- <item>
- <title>Gun User Guide</title>
- <link>https://ninenines.eu/docs/en/gun/1.1/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.1/guide/</guid>
- <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.0 to 1.1 </description>
- </item>
-
- <item>
- <title>Gun User Guide</title>
- <link>https://ninenines.eu/docs/en/gun/1.2/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.2/guide/</guid>
- <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
- </item>
-
- <item>
- <title>Gun User Guide</title>
- <link>https://ninenines.eu/docs/en/gun/1.3/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/gun/1.3/guide/</guid>
- <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.2 to 1.3 Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>HTTP status codes(7)</title>
- <link>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</guid>
- <description>Name HTTP status codes - status codes used by Cowboy
-Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
-100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/1.4/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.4/manual/</guid>
- <description>ranch(7) ranch(3) ranch_protocol(3) ranch_ssl(3) ranch_tcp(3) ranch_transport(3) </description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/1.5/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.5/manual/</guid>
- <description>ranch(7) ranch(3) ranch_protocol(3) ranch_ssl(3) ranch_tcp(3) ranch_transport(3) </description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/1.6/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.6/manual/</guid>
- <description>Name ranch - Socket acceptor pool for TCP protocols
-Description Ranch is a socket acceptor pool for TCP protocols.
-Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
-Modules Functions:
-ranch(3) - Socket acceptor pool Transports:
-ranch_ssl(3) - SSL transport ranch_tcp(3) - TLS transport Behaviors:</description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/1.7/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.7/manual/</guid>
- <description>Name ranch - Socket acceptor pool for TCP protocols
-Description Ranch is a socket acceptor pool for TCP protocols.
-Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
-Modules Functions:
-ranch(3) - Socket acceptor pool ranch_proxy_header(3) - PROXY protocol Transports:
-ranch_ssl(3) - SSL transport ranch_tcp(3) - TCP transport Behaviors:</description>
- </item>
-
- <item>
- <title>Ranch Function Reference</title>
- <link>https://ninenines.eu/docs/en/ranch/2.0/manual/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/2.0/manual/</guid>
- <description>Name ranch - Socket acceptor pool for TCP protocols
-Description Ranch is a socket acceptor pool for TCP protocols.
-Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
-Modules Functions:
-ranch(3) - Socket acceptor pool ranch_proxy_header(3) - PROXY protocol Transports:
-ranch_ssl(3) - SSL transport ranch_tcp(3) - TCP transport Behaviors:</description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/1.4/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.4/guide/</guid>
- <description>Introduction Listeners Transports Protocols Embedded mode Writing parsers SSL client authentication Internals </description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/1.5/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.5/guide/</guid>
- <description>Introduction Listeners Transports Protocols Embedded mode Writing parsers SSL client authentication Internals </description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/1.6/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.6/guide/</guid>
- <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Advanced Internals Additional information Upcoming changes in Ranch 2.0 Changes since Ranch 1.6 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/1.7/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/1.7/guide/</guid>
- <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Advanced Internals Additional information Upcoming changes in Ranch 2.0 Changes since Ranch 1.7 Migrating from Ranch 1.6 to 1.7 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
- </item>
-
- <item>
- <title>Ranch User Guide</title>
- <link>https://ninenines.eu/docs/en/ranch/2.0/guide/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://ninenines.eu/docs/en/ranch/2.0/guide/</guid>
- <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Connection draining Advanced Internals Additional information Migrating from Ranch 1.7 to 2.0 Migrating from Ranch 1.6 to 1.7 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
- </item>
-
- <item>
<title>cowboy(3)</title>
<link>https://ninenines.eu/docs/en/cowboy/2.2/manual/cowboy/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -4782,7 +4674,7 @@ Using the default configuration this function will always return undefined. You
<description>Name cowboy_req:cert - Client TLS certificate
Description cert(Req :: cowboy_req:req()) -&amp;gt; binary() | undefined Return the peer&amp;apos;s TLS certificate.
Using the default configuration this function will always return undefined. You need to explicitly configure Cowboy to request the client certificate. To do this you need to set the verify transport option to verify_peer:
-{ok, _} = cowboy:start_tls(example, [ {port, 8443}, {certfile, &#34;path/to/cert.pem&#34;}, {verify, verify_peer} ], #{ env =&amp;gt; #{dispatch =&amp;gt; Dispatch} }).</description>
+{ok, _} = cowboy:start_tls(example, [ {port, 8443}, {cert, &#34;path/to/cert.pem&#34;}, {verify, verify_peer} ], #{ env =&amp;gt; #{dispatch =&amp;gt; Dispatch} }).</description>
</item>
<item>
@@ -7702,6 +7594,111 @@ init(Req, State) -&amp;gt; {cowboy_websocket, Req, State} | {cowboy_websocket, R
</item>
<item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/1.0/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.0/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/1.1/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.1/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/1.2/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.2/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.3/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/1.0/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.0/guide/</guid>
+ <description>Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket </description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/1.1/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.1/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.0 to 1.1 </description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/1.2/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.2/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/1.3/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/1.3/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Changes since Gun 1.3 Migrating from Gun 1.2 to 1.3 Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
+ </item>
+
+ <item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Additional information Migrating from Gun 1.3 to 2.0 Migrating from Gun 1.2 to 1.3 Migrating from Gun 1.1 to 1.2 Migrating from Gun 1.0 to 1.1 </description>
+ </item>
+
+ <item>
<title>gun(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7750,6 +7747,18 @@ gun:open(3) - Open a connection to the given host and port gun:open_unix(3) - O
</item>
<item>
+ <title>gun(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun/</guid>
+ <description>Name gun - Asynchronous HTTP client
+Description The gun module provides an asynchronous interface for connecting and communicating with Web servers over HTTP, HTTP/2 or Websocket.
+Exports Connection:
+gun:open(3) - Open a connection to the given host and port gun:open_unix(3) - Open a connection to the given Unix domain socket gun:set_owner(3) - Set a new owner for the connection gun:shutdown(3) - Gracefully close the connection gun:close(3) - Brutally close the connection gun:info(3) - Obtain information about the connection Requests:</description>
+ </item>
+
+ <item>
<title>gun(7)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_app/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7798,6 +7807,18 @@ Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support lib
</item>
<item>
+ <title>gun(7)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_app/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_app/</guid>
+ <description>Name gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP
+Description Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.
+Gun aims to provide an easy to use, asynchronous and always-connected client. It maintains a permanent connection to the server and reconnects automatically when necessary.
+Modules gun(3) - Asynchronous HTTP client Dependencies cowlib(7) - Support library for manipulating Web protocols ssl - Secure communication over sockets All these applications must be started before the gun application.</description>
+ </item>
+
+ <item>
<title>gun:await(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7842,6 +7863,17 @@ This function waits for a message from the given stream and returns it as a tupl
</item>
<item>
+ <title>gun:await(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await/</guid>
+ <description>Name gun:await - Wait for a response
+Description await(ConnPid, StreamRef) -&amp;gt; await(ConnPid, StreamRef, 5000, MonitorRef) await(ConnPid, StreamRef, MonitorRef) -&amp;gt; await(ConnPid, StreamRef, 5000, MonitorRef) await(ConnPid, StreamRef, Timeout) -&amp;gt; await(ConnPid, StreamRef, Timeout, MonitorRef) await(ConnPid, StreamRef, Timeout, MonitorRef) -&amp;gt; Result ConnPid :: pid() StreamRef :: reference() MonitorRef :: reference() Timeout :: timeout() Result :: tuple() - see below Wait for a response.
+This function waits for a message from the given stream and returns it as a tuple.</description>
+ </item>
+
+ <item>
<title>gun:await_body(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await_body/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7882,6 +7914,16 @@ Description await_body(ConnPid, StreamRef) -&amp;gt; await_body(ConnPid, StreamR
</item>
<item>
+ <title>gun:await_body(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_body/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_body/</guid>
+ <description>Name gun:await_body - Wait for the complete response body
+Description await_body(ConnPid, StreamRef) -&amp;gt; await_body(ConnPid, StreamRef, 5000, MonitorRef) await_body(ConnPid, StreamRef, MonitorRef) -&amp;gt; await_body(ConnPid, StreamRef, 5000, MonitorRef) await_body(ConnPid, StreamRef, Timeout) -&amp;gt; await_body(ConnPid, StreamRef, Timeout, MonitorRef) await_body(ConnPid, StreamRef, Timeout, MonitorRef) -&amp;gt; {ok, Body} | {ok, Body, Trailers} | {error, Reason} ConnPid :: pid() StreamRef :: reference() MonitorRef :: reference() Timeout :: timeout() Body :: binary() Trailers :: [{binary(), binary()}] Reason :: {stream_error | connection_error | down, any()} | timeout Wait for the complete response body.</description>
+ </item>
+
+ <item>
<title>gun:await_up(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await_up/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7926,6 +7968,17 @@ Arguments ConnPid The pid of the Gun connection process.</description>
</item>
<item>
+ <title>gun:await_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_up/</guid>
+ <description>Name gun:await_up - Wait for the connection to be up
+Description await_up(ConnPid) -&amp;gt; await_up(ConnPid, 5000, MonitorRef) await_up(ConnPid, MonitorRef) -&amp;gt; await_up(ConnPid, 5000, MonitorRef) await_up(ConnPid, Timeout) -&amp;gt; await_up(ConnPid, Timeout, MonitorRef) await_up(ConnPid, Timeout, MonitorRef) -&amp;gt; {ok, Protocol} | {error, Reason} ConnPid :: pid() MonitorRef :: reference() Timeout :: timeout() Protocol :: http | http2 | socks Reason :: {down, any()} | timeout Wait for the connection to be up.
+Arguments ConnPid The pid of the Gun connection process.</description>
+ </item>
+
+ <item>
<title>gun:cancel(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.cancel/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -7974,6 +8027,18 @@ HTTP/1.1 does not support this feature. Gun will simply silence the stream and s
</item>
<item>
+ <title>gun:cancel(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.cancel/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.cancel/</guid>
+ <description>Name gun:cancel - Cancel the given stream
+Description cancel(ConnPid, StreamRef) -&amp;gt; ok ConnPid :: pid() StreamRef :: reference() Cancel the given stream.
+The behavior of this function depends on the protocol selected.
+HTTP/1.1 does not support this feature. Gun will simply silence the stream and stop relaying messages. Gun may also decide to close the connection if the response body is too large, to avoid wasting time and bandwidth.</description>
+ </item>
+
+ <item>
<title>gun:close(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.close/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8026,6 +8091,19 @@ Changelog 1.0: Function introduced. Examples Close the connection ok = gun:clo
</item>
<item>
+ <title>gun:close(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.close/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.close/</guid>
+ <description>Name gun:close - Brutally close the connection
+Description close(ConnPid) -&amp;gt; ok ConnPid :: pid() Brutally close the connection.
+Arguments ConnPid The pid of the Gun connection process.
+ Return value The atom ok is returned.
+Changelog 1.0: Function introduced. Examples Close the connection ok = gun:close(ConnPid). See also gun(3), gun:open(3), gun:open_unix(3), gun:shutdown(3)</description>
+ </item>
+
+ <item>
<title>gun:connect(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.2/manual/gun.connect/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8048,6 +8126,17 @@ This feature is currently only available for HTTP/1.1 connections. Upon successf
</item>
<item>
+ <title>gun:connect(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.connect/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.connect/</guid>
+ <description>Name gun:connect - Establish a tunnel to the origin server
+Description connect(ConnPid, Destination) -&amp;gt; connect(ConnPid, Destination, [], #{}). connect(ConnPid, Destination, Headers) -&amp;gt; connect(ConnPid, Destination, Headers, #{}). connect(ConnPid, Destination, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Destination :: gun:connect_destination() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Establish a tunnel to the origin server.
+This feature is currently only available for HTTP/1.1 connections. Upon successful completion of the CONNECT request a tunnel is established and subsequent requests will go through the tunnel.</description>
+ </item>
+
+ <item>
<title>gun:data(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.data/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8096,6 +8185,18 @@ All calls to this function must use the nofin flag except for the last which mus
</item>
<item>
+ <title>gun:data(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.data/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.data/</guid>
+ <description>Name gun:data - Stream the body of a request
+Description data(ConnPid, StreamRef, IsFin, Data) -&amp;gt; ok ConnPid :: pid() StreamRef :: reference() IsFin :: fin | nofin Data :: iodata() Stream the body of a request.
+This function can only be used if the original request had headers indicating that a body would be streamed.
+All calls to this function must use the nofin flag except for the last which must use fin to indicate the end of the request body.</description>
+ </item>
+
+ <item>
<title>gun:delete(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.delete/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8152,6 +8253,20 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:delete(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.delete/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.delete/</guid>
+ <description>Name gun:delete - Delete a resource
+Description delete(ConnPid, Path) -&amp;gt; delete(ConnPid, Path, [], #{}). delete(ConnPid, Path, Headers) -&amp;gt; delete(ConnPid, Path, Headers, #{}) delete(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Delete a resource.
+Arguments ConnPid The pid of the Gun connection process.
+ Path Path to the resource.
+ Headers Additional request headers.
+ ReqOpts Request options.</description>
+ </item>
+
+ <item>
<title>gun:flush(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.flush/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8208,6 +8323,20 @@ ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:flush(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.flush/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.flush/</guid>
+ <description>Name gun:flush - Flush all messages related to a connection or a stream
+Description flush(ConnPid) -&amp;gt; ok flush(StreamRef) -&amp;gt; ok ConnPid :: pid() StreamRef :: reference() Flush all messages related to a connection or a stream.
+Arguments Either of these arguments may be provided:
+ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.
+ Return value The atom ok is returned.</description>
+ </item>
+
+ <item>
<title>gun:get(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.get/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8260,6 +8389,20 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:get(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.get/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.get/</guid>
+ <description>Name gun:get - Get a resource representation
+Description get(ConnPid, Path) -&amp;gt; get(ConnPid, Path, [], #{}). get(ConnPid, Path, Headers) -&amp;gt; get(ConnPid, Path, Headers, #{}) get(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Get a resource representation.
+Arguments ConnPid The pid of the Gun connection process.
+ Path Path to the resource.
+ Headers Additional request headers.
+ ReqOpts Request options.</description>
+ </item>
+
+ <item>
<title>gun:head(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.head/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8304,6 +8447,29 @@ This function performs the same operation as gun:get(3), except the server will
</item>
<item>
+ <title>gun:head(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.head/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.head/</guid>
+ <description>Name gun:head - Get headers of a resource representation
+Description head(ConnPid, Path) -&amp;gt; head(ConnPid, Path, [], #{}). head(ConnPid, Path, Headers) -&amp;gt; head(ConnPid, Path, Headers, #{}) head(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Get headers of a resource representation.
+This function performs the same operation as gun:get(3), except the server will not send the resource representation, only the response&amp;apos;s status code and headers.</description>
+ </item>
+
+ <item>
+ <title>gun:headers(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.headers/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.headers/</guid>
+ <description>Name gun:headers - Initiate the given request
+Description headers(ConnPid, Method, Path, Headers) -&amp;gt; headers(ConnPid, Method, Path, Headers, #{}) headers(ConnPid, Method, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Method :: binary() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Initiate the given request.
+This is a general purpose function that should only be used when other method-specific functions do not apply.
+The function headers/4,5 initiates a request but does not send the request body.</description>
+ </item>
+
+ <item>
<title>gun:info(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.info/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8353,6 +8519,16 @@ Description info(ConnPid) -&amp;gt; Info ConnPid :: pid() Info :: #{ socket =&am
</item>
<item>
+ <title>gun:info(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.info/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.info/</guid>
+ <description>Name gun:info - Obtain information about the connection
+Description info(ConnPid) -&amp;gt; Info ConnPid :: pid() Info :: #{ owner =&amp;gt; pid(), socket =&amp;gt; inet:socket() | ssl:sslsocket(), transport =&amp;gt; tcp | tls, protocol =&amp;gt; http | http2 | socks | ws, sock_ip =&amp;gt; inet:ip_address(), sock_port =&amp;gt; inet:port_number(), origin_host =&amp;gt; inet:hostname() | inet:ip_address(), origin_port =&amp;gt; inet:port_number(), intermediaries =&amp;gt; [Intermediary] } Intermediary :: #{ type =&amp;gt; connect | socks5, host =&amp;gt; inet:hostname() | inet:ip_address(), port =&amp;gt; inet:port_number(), transport =&amp;gt; tcp | tls, protocol =&amp;gt; http | http2 | socks } Obtain information about the connection.</description>
+ </item>
+
+ <item>
<title>gun:open(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.open/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8405,6 +8581,17 @@ Arguments Host Host or IP address to connect to.
</item>
<item>
+ <title>gun:open(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open/</guid>
+ <description>Name gun:open - Open a connection to the given host and port
+Description open(Host, Port) -&amp;gt; open(Host, Port, #{}) open(Host, Port, Opts) -&amp;gt; {ok, pid()} | {error, Reason} Host :: inet:hostname() | inet:ip_address() Port :: inet:port_number() Opts :: gun:opts() Reason :: {options, OptName} | {options, {http | http2 | socks | ws, OptName}} | any() OptName :: atom() Open a connection to the given host and port.
+Arguments Host Host or IP address to connect to.</description>
+ </item>
+
+ <item>
<title>gun:open_unix(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.open_unix/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8457,6 +8644,18 @@ Arguments SocketPath Path to the Unix domain socket to connect to.
</item>
<item>
+ <title>gun:open_unix(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open_unix/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open_unix/</guid>
+ <description>Name gun:open_unix - Open a connection to the given Unix domain socket
+Description open_unix(SocketPath, Opts) -&amp;gt; {ok, pid()} | {error, Reason} SocketPath :: string() Opts :: gun:opts() Reason :: {options, OptName} | {options, {http | http2 | socks | ws, OptName}} | any() OptName :: atom() Open a connection to the given Unix domain socket.
+Arguments SocketPath Path to the Unix domain socket to connect to.
+ Opts Options for this connection.</description>
+ </item>
+
+ <item>
<title>gun:options(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.options/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8501,6 +8700,17 @@ The special path &amp;quot;*&amp;quot; can be used to obtain information about t
</item>
<item>
+ <title>gun:options(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.options/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.options/</guid>
+ <description>Name gun:options - Query the capabilities of the server or a resource
+Description options(ConnPid, Path) -&amp;gt; options(ConnPid, Path, [], #{}). options(ConnPid, Path, Headers) -&amp;gt; options(ConnPid, Path, Headers, #{}) options(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() ReqOpts :: gun:req_opts() StreamRef :: reference() Query the capabilities of the server or a resource.
+The special path &amp;quot;*&amp;quot; can be used to obtain information about the server as a whole.</description>
+ </item>
+
+ <item>
<title>gun:patch(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.patch/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8545,6 +8755,16 @@ The behavior of this function varies depending on whether a body is provided.</d
</item>
<item>
+ <title>gun:patch(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.patch/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.patch/</guid>
+ <description>Name gun:patch - Apply a set of changes to a resource
+Description patch(ConnPid, Path, Headers) -&amp;gt; patch(ConnPid, Path, Headers, #{}) patch(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef patch(ConnPid, Path, Headers, Body) -&amp;gt; patch(ConnPid, Path, Headers, Body, #{}) patch(ConnPid, Path, Headers, Body, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() Body :: iodata() ReqOpts :: gun:req_opts() StreamRef :: reference() Apply a set of changes to a resource.</description>
+ </item>
+
+ <item>
<title>gun:post(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.post/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8589,6 +8809,16 @@ The behavior of this function varies depending on whether a body is provided.</d
</item>
<item>
+ <title>gun:post(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.post/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.post/</guid>
+ <description>Name gun:post - Process the enclosed representation according to a resource&amp;apos;s own semantics
+Description post(ConnPid, Path, Headers) -&amp;gt; post(ConnPid, Path, Headers, #{}) post(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef post(ConnPid, Path, Headers, Body) -&amp;gt; post(ConnPid, Path, Headers, Body, #{}) post(ConnPid, Path, Headers, Body, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() Body :: iodata() ReqOpts :: gun:req_opts() StreamRef :: reference() Process the enclosed representation according to a resource&amp;apos;s own semantics.</description>
+ </item>
+
+ <item>
<title>gun:put(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.put/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8637,6 +8867,17 @@ The function put/3 expects either a content-length or content-type header to ind
</item>
<item>
+ <title>gun:put(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.put/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.put/</guid>
+ <description>Name gun:put - Create or replace a resource
+Description put(ConnPid, Path, Headers) -&amp;gt; put(ConnPid, Path, Headers, #{}) put(ConnPid, Path, Headers, ReqOpts) -&amp;gt; StreamRef put(ConnPid, Path, Headers, Body) -&amp;gt; put(ConnPid, Path, Headers, Body, #{}) put(ConnPid, Path, Headers, Body, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() Body :: iodata() ReqOpts :: gun:req_opts() StreamRef :: reference() Create or replace a resource.
+The behavior of this function varies depending on whether a body is provided.</description>
+ </item>
+
+ <item>
<title>gun:request(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.request/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8681,6 +8922,70 @@ This is a general purpose function that should only be used when other method-sp
</item>
<item>
+ <title>gun:request(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.request/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.request/</guid>
+ <description>Name gun:request - Perform the given request
+Description request(ConnPid, Method, Path, Headers, Body) -&amp;gt; request(ConnPid, Method, Path, Headers, Body, #{}) request(ConnPid, Method, Path, Headers, Body, ReqOpts) -&amp;gt; StreamRef ConnPid :: pid() Method :: binary() Path :: iodata() Headers :: gun:req_headers() Body :: iodata() ReqOpts :: gun:req_opts() StreamRef :: reference() Perform the given request.
+This is a general purpose function that should only be used when other method-specific functions do not apply.</description>
+ </item>
+
+ <item>
+ <title>gun:set_owner(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.set_owner/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.set_owner/</guid>
+ <description>Name gun:set_owner - Set a new owner for the connection
+Description set_owner(ConnPid, OwnerPid) -&amp;gt; ok ConnPid :: pid() OwnerPid :: pid() Set a new owner for the connection.
+Only the current owner of the connection can set a new owner.
+Gun monitors the owner of the connection and automatically shuts down gracefully when the owner exits.
+Arguments ConnPid The pid of the Gun connection process.
+ OwnerPid The pid of the new owner for the connection.</description>
+ </item>
+
+ <item>
+ <title>gun:shutdown(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.shutdown/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.shutdown/</guid>
+ <description>Name gun:shutdown - Gracefully close the connection
+Description shutdown(ConnPid) -&amp;gt; ok ConnPid :: pid() Gracefully close the connection.
+Gun will wait for up to closing_timeout milliseconds before brutally closing the connection. The graceful shutdown mechanism varies between the different protocols:
+For HTTP/1.1 there is no such mechanism and Gun will close the connection once the current response is received. Any pipelined requests are immediately terminated. For HTTP/2 Gun will send a GOAWAY frame and wait for the existing streams to terminate.</description>
+ </item>
+
+ <item>
+ <title>gun:stream_info(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.stream_info/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.stream_info/</guid>
+ <description>Name gun:stream_info - Obtain information about a stream
+Description stream_info(ConnPid, StreamRef) -&amp;gt; {ok, undefined | Info} | {error, not_connected} ConnPid :: pid() StreamRef :: reference() Info :: #{ ref =&amp;gt; reference(), reply_to =&amp;gt; pid(), state =&amp;gt; running | stopping } Obtain information about a stream.
+Arguments ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.
+ Return value A map is returned containing various informations about the stream.</description>
+ </item>
+
+ <item>
+ <title>gun:update_flow(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.update_flow/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.update_flow/</guid>
+ <description>Name gun:update_flow - Update a stream&amp;apos;s flow control value
+Description update_flow(ConnPid, StreamRef, Flow) -&amp;gt; ok ConnPid :: pid() StreamRef :: reference() Flow :: pos_integer() Update a stream&amp;apos;s flow control value.
+The flow value can only ever be incremented.
+This function does nothing for streams that have flow control disabled (which is the default).
+Arguments ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.</description>
+ </item>
+
+ <item>
<title>gun:ws_send(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.ws_send/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8733,6 +9038,19 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:ws_send(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_send/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_send/</guid>
+ <description>Name gun:ws_send - Send Websocket frames
+Description ws_send(ConnPid, Frames) -&amp;gt; ok ConnPid :: pid() Frames :: Frame | [Frame] Frame :: close | ping | pong | {text | binary | close | ping | pong, iodata()} | {close, non_neg_integer(), iodata()} Send Websocket frames.
+The connection must first be upgraded to Websocket using the function gun:ws_upgrade(3).
+Arguments ConnPid The pid of the Gun connection process.
+ Frames One or more Websocket frame(s).</description>
+ </item>
+
+ <item>
<title>gun:ws_upgrade(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun.ws_upgrade/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8781,6 +9099,18 @@ HTTP/1.1 cannot handle Websocket and HTTP requests concurrently. The upgrade, if
</item>
<item>
+ <title>gun:ws_upgrade(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_upgrade/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_upgrade/</guid>
+ <description>Name gun:ws_upgrade - Upgrade to Websocket
+Description ws_upgrade(ConnPid, Path) -&amp;gt; ws_upgrade(ConnPid, Path, []) ws_upgrade(ConnPid, Path, Headers) -&amp;gt; StreamRef ws_upgrade(ConnPid, Path, Headers, WsOpts) -&amp;gt; StreamRef ConnPid :: pid() Path :: iodata() Headers :: gun:req_headers() WsOpts :: gun:ws_opts StreamRef :: reference() Upgrade to Websocket.
+The behavior of this function depends on the protocol selected.
+HTTP/1.1 cannot handle Websocket and HTTP requests concurrently. The upgrade, if successful, will result in the complete takeover of the connection.</description>
+ </item>
+
+ <item>
<title>gun_data(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_data/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8833,6 +9163,19 @@ The response body may be terminated either by a data message with the flag fin s
</item>
<item>
+ <title>gun_data(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_data/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_data/</guid>
+ <description>Name gun_data - Response body
+Description {gun_data, ConnPid, StreamRef, IsFin, Data} ConnPid :: pid() StreamRef :: reference() IsFin :: fin | nofin Data :: binary() Response body.
+This message informs the relevant process that the server sent a all or part of the body for the response to the original request.
+A data message is always preceded by a response message.
+The response body may be terminated either by a data message with the flag fin set or by a gun_trailers(3) message.</description>
+ </item>
+
+ <item>
<title>gun_down(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_down/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8881,6 +9224,18 @@ When the connection goes back up, Gun will not attempt to retry requests.</descr
</item>
<item>
+ <title>gun_down(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_down/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_down/</guid>
+ <description>Name gun_down - The connection is down
+Description {gun_down, ConnPid, Protocol, Reason, KilledStreams} ConnPid :: pid() Protocol :: http | http2 | socks | ws Reason :: any() KilledStreams :: [reference()] The connection is down.
+This message informs the owner process that the connection was lost. Depending on the retry and retry_timeout options Gun may automatically attempt to reconnect.
+When the connection goes back up, Gun will not attempt to retry requests.</description>
+ </item>
+
+ <item>
<title>gun_error(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_error/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8925,6 +9280,17 @@ These messages inform the relevant process that an error occurred. A reference i
</item>
<item>
+ <title>gun_error(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_error/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_error/</guid>
+ <description>Name gun_error - Stream or connection-wide error
+Description {gun_error, ConnPid, StreamRef, Reason} {gun_error, ConnPid, Reason} ConnPid :: pid() StreamRef :: reference() Reason :: any() Stream or connection-wide error.
+These messages inform the relevant process that an error occurred. A reference is given when the error pertains to a specific stream. Connection-wide errors do not imply that the connection is no longer usable, they are used for all errors that are not specific to a stream.</description>
+ </item>
+
+ <item>
<title>gun_inform(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_inform/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -8973,6 +9339,18 @@ Informational responses are only intermediate responses and provide no guarantee
</item>
<item>
+ <title>gun_inform(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_inform/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_inform/</guid>
+ <description>Name gun_inform - Informational response
+Description {gun_inform, ConnPid, StreamRef, Status, Headers} ConnPid :: pid() StreamRef :: reference() Status :: 100..199 Headers :: [{binary(), binary()}] Informational response.
+This message informs the relevant process that the server sent an informational response to the original request.
+Informational responses are only intermediate responses and provide no guarantees as to what the final response will be. An informational response always precedes the response to the original request.</description>
+ </item>
+
+ <item>
<title>gun_push(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_push/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -9021,6 +9399,18 @@ A server-initiated push message always precedes the response to the original req
</item>
<item>
+ <title>gun_push(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_push/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_push/</guid>
+ <description>Name gun_push - Server-initiated push
+Description {gun_push, ConnPid, StreamRef, NewStreamRef, Method, URI, Headers} ConnPid :: pid() StreamRef :: reference() NewStreamRef :: reference() Method :: binary() URI :: binary() Headers :: [{binary(), binary()}] Server-initiated push.
+This message informs the relevant process that the server is pushing a resource related to the effective target URI of the original request.
+A server-initiated push message always precedes the response to the original request.</description>
+ </item>
+
+ <item>
<title>gun_response(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_response/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -9077,6 +9467,33 @@ Elements ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun_response(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_response/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_response/</guid>
+ <description>Name gun_response - Response
+Description {gun_response, ConnPid, StreamRef, IsFin, Status, Headers} ConnPid :: pid() StreamRef :: reference() IsFin :: fin | nofin Status :: non_neg_integer() Headers :: [{binary(), binary()}] Response.
+This message informs the relevant process that the server sent a response to the original request.
+Elements ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.
+ IsFin Whether this message terminates the response.</description>
+ </item>
+
+ <item>
+ <title>gun_socks_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_socks_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_socks_up/</guid>
+ <description>Name gun_socks_up - The Socks connection is up
+Description {gun_socks_up, ConnPid, Protocol} ConnPid :: pid() Protocol :: http | http2 | socks The Socks connection is up.
+This message informs the owner/calling process that the connection completed through the configured Socks proxy.
+If Gun is configured to connect to another Socks server, then the connection is not usable yet. One or more gun_socks_up(3) messages will follow.
+Otherwise, Gun will start processing the messages it received while waiting for the connection to be up.</description>
+ </item>
+
+ <item>
<title>gun_trailers(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_trailers/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -9137,6 +9554,21 @@ Elements ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun_trailers(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_trailers/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_trailers/</guid>
+ <description>Name gun_trailers - Response trailers
+Description {gun_trailers, ConnPid, StreamRef, Headers} ConnPid :: pid() StreamRef :: reference() Headers :: [{binary(), binary()}] Response trailers.
+This message informs the relevant process that the server sent response trailers for the response to the original request.
+A trailers message terminates the response.
+Elements ConnPid The pid of the Gun connection process.
+ StreamRef Identifier of the stream for the original request.
+ Headers Trailing headers sent after the response body.</description>
+ </item>
+
+ <item>
<title>gun_up(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_up/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -9185,6 +9617,19 @@ Gun will now start processing the messages it received while waiting for the con
</item>
<item>
+ <title>gun_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_up/</guid>
+ <description>Name gun_up - The connection is up
+Description {gun_up, ConnPid, Protocol} ConnPid :: pid() Protocol :: http | http2 | socks The connection is up.
+This message informs the owner process that the connection or reconnection completed.
+If Gun is configured to connect to a Socks server, then the connection is not usable yet. One or more gun_socks_up(3) messages will follow.
+Otherwise, Gun will start processing the messages it received while waiting for the connection to be up.</description>
+ </item>
+
+ <item>
<title>gun_upgrade(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_upgrade/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -9233,6 +9678,18 @@ The exact semantics of this message depend on the original protocol. HTTP/1.1 up
</item>
<item>
+ <title>gun_upgrade(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_upgrade/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_upgrade/</guid>
+ <description>Name gun_upgrade - Successful protocol upgrade
+Description {gun_upgrade, ConnPid, StreamRef, Protocols, Headers} ConnPid :: pid() StreamRef :: reference() Protocols :: [&amp;lt;&amp;lt;&#34;websocket&#34;&amp;gt;&amp;gt;] Headers :: [{binary(), binary()}] Successful protocol upgrade.
+This message informs the relevant process that the server accepted to upgrade to one or more protocols given in the original request.
+The exact semantics of this message depend on the original protocol. HTTP/1.1 upgrades apply to the entire connection. HTTP/2 uses a different mechanism which allows switching specific streams to a different protocol.</description>
+ </item>
+
+ <item>
<title>gun_ws(3)</title>
<link>https://ninenines.eu/docs/en/gun/1.0/manual/gun_ws/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -9285,6 +9742,178 @@ Elements ConnPid The pid of the Gun connection process.</description>
</item>
<item>
+ <title>gun_ws(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_ws/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.0/manual/gun_ws/</guid>
+ <description>Name gun_ws - Websocket frame
+Description {gun_ws, ConnPid, StreamRef, Frame} ConnPid :: pid() StreamRef :: reference() Frame :: close | ping | pong | {text | binary | close, binary()} | {close, non_neg_integer(), binary()} | {ping | pong, binary()} Websocket frame.
+This message informs the relevant process that the server sent the enclosed frame.
+This message can only be sent on streams that were upgraded to the Websocket protocol.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>HTTP status codes(7)</title>
+ <link>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</guid>
+ <description>Name HTTP status codes - status codes used by Cowboy
+Description This chapter aims to list all HTTP status codes that Cowboy may return, with details on the reasons why. The list given here only includes the replies that Cowboy sends, not user replies.
+100 Continue When the client sends an expect: 100-continue header, Cowboy automatically sends a this status code before trying to read the request body. This behavior can be disabled using the appropriate body option.</description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.4/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.4/manual/</guid>
+ <description>ranch(7) ranch(3) ranch_protocol(3) ranch_ssl(3) ranch_tcp(3) ranch_transport(3) </description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.5/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.5/manual/</guid>
+ <description>ranch(7) ranch(3) ranch_protocol(3) ranch_ssl(3) ranch_tcp(3) ranch_transport(3) </description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.6/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.6/manual/</guid>
+ <description>Name ranch - Socket acceptor pool for TCP protocols
+Description Ranch is a socket acceptor pool for TCP protocols.
+Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
+Modules Functions:
+ranch(3) - Socket acceptor pool Transports:
+ranch_ssl(3) - SSL transport ranch_tcp(3) - TLS transport Behaviors:</description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.7/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.7/manual/</guid>
+ <description>Name ranch - Socket acceptor pool for TCP protocols
+Description Ranch is a socket acceptor pool for TCP protocols.
+Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
+Modules Functions:
+ranch(3) - Socket acceptor pool ranch_proxy_header(3) - PROXY protocol Transports:
+ranch_ssl(3) - SSL transport ranch_tcp(3) - TCP transport Behaviors:</description>
+ </item>
+
+ <item>
+ <title>Ranch Function Reference</title>
+ <link>https://ninenines.eu/docs/en/ranch/2.0/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/2.0/manual/</guid>
+ <description>Name ranch - Socket acceptor pool for TCP protocols
+Description Ranch is a socket acceptor pool for TCP protocols.
+Ranch manages listeners which are a set of processes that accept and manage connections. The connection&amp;apos;s transport and protocol modules are configured per listener. Listeners can be inspected and reconfigured without interruptions in service.
+Modules Functions:
+ranch(3) - Socket acceptor pool ranch_proxy_header(3) - PROXY protocol Transports:
+ranch_ssl(3) - SSL transport ranch_tcp(3) - TCP transport Behaviors:</description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.4/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.4/guide/</guid>
+ <description>Introduction Listeners Transports Protocols Embedded mode Writing parsers SSL client authentication Internals </description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.5/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.5/guide/</guid>
+ <description>Introduction Listeners Transports Protocols Embedded mode Writing parsers SSL client authentication Internals </description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.6/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.6/guide/</guid>
+ <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Advanced Internals Additional information Upcoming changes in Ranch 2.0 Changes since Ranch 1.6 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/1.7/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/1.7/guide/</guid>
+ <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Advanced Internals Additional information Upcoming changes in Ranch 2.0 Changes since Ranch 1.7 Migrating from Ranch 1.6 to 1.7 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
+ </item>
+
+ <item>
+ <title>Ranch User Guide</title>
+ <link>https://ninenines.eu/docs/en/ranch/2.0/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/ranch/2.0/guide/</guid>
+ <description>Interface Introduction Listeners Transports Protocols Embedded mode How to Writing parsers SSL client authentication Connection draining Advanced Internals Additional information Migrating from Ranch 1.7 to 2.0 Migrating from Ranch 1.6 to 1.7 Migrating from Ranch 1.5 to 1.6 Migrating from Ranch 1.x </description>
+ </item>
+
+ <item>
<title>ranch(3)</title>
<link>https://ninenines.eu/docs/en/ranch/1.4/manual/ranch/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
diff --git a/services/index.html b/services/index.html
index c70c2d3a..a1440149 100644
--- a/services/index.html
+++ b/services/index.html
@@ -642,6 +642,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
@@ -1885,6 +1909,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</div>
</div>
</div>
diff --git a/sitemap.xml b/sitemap.xml
index 77c367dc..cf42a183 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -19,6 +19,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/introduction/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.4/guide/introduction/</loc>
</url>
@@ -115,6 +119,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/start/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/guide/protocols/</loc>
</url>
@@ -131,6 +139,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/protocols/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.2/guide/introduction/</loc>
</url>
@@ -187,6 +199,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/connect/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.4/guide/protocols/</loc>
</url>
@@ -243,6 +259,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/http/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.4/guide/embedded/</loc>
</url>
@@ -299,6 +319,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/websocket/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.4/guide/parsers/</loc>
</url>
@@ -319,6 +343,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.3/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.1/guide/migrating_from_1.0/</loc>
</url>
@@ -327,7 +355,7 @@
</url>
<url>
- <loc>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</loc>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.3/</loc>
</url>
<url>
@@ -415,7 +443,11 @@
</url>
<url>
- <loc>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</loc>
+ <loc>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.2/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.2/</loc>
</url>
<url>
@@ -451,7 +483,11 @@
</url>
<url>
- <loc>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</loc>
+ <loc>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.1/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.1/</loc>
</url>
<url>
@@ -507,6 +543,14 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/1.3/guide/migrating_from_1.0/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/migrating_from_1.0/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.2/guide/static_files/</loc>
</url>
@@ -948,19 +992,22 @@
<url>
<loc>https://ninenines.eu/articles/</loc>
- <lastmod>2019-08-22T07:00:00+01:00</lastmod>
- <priority>0</priority>
+ <lastmod>2019-09-27T07:00:00+01:00</lastmod>
</url>
<url>
- <loc>https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/</loc>
- <lastmod>2019-08-22T07:00:00+01:00</lastmod>
+ <loc>https://ninenines.eu/articles/gun-2.0.0-pre.1/</loc>
+ <lastmod>2019-09-27T07:00:00+01:00</lastmod>
</url>
<url>
<loc>https://ninenines.eu/</loc>
+ <lastmod>2019-09-27T07:00:00+01:00</lastmod>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/</loc>
<lastmod>2019-08-22T07:00:00+01:00</lastmod>
- <priority>0</priority>
</url>
<url>
@@ -1200,7 +1247,6 @@
<url>
<loc>https://ninenines.eu/categories/</loc>
- <priority>0</priority>
</url>
<url>
@@ -1244,108 +1290,6 @@
</url>
<url>
- <loc>https://ninenines.eu/docs/</loc>
- <priority>0</priority>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/gun/1.0/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/gun/1.1/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/gun/1.2/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/gun/1.3/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/gun/1.0/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/gun/1.1/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/gun/1.2/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/gun/1.3/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/1.4/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/1.5/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/1.6/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/1.7/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/2.0/manual/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/1.4/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/1.5/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/1.6/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/1.7/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/docs/en/ranch/2.0/guide/</loc>
- </url>
-
- <url>
- <loc>https://ninenines.eu/tags/</loc>
- <priority>0</priority>
- </url>
-
- <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.2/manual/cowboy/</loc>
</url>
@@ -2670,6 +2614,50 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/1.0/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/1.1/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/1.2/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/1.3/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/1.0/guide/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/1.1/guide/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/1.2/guide/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/1.3/guide/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/guide/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun/</loc>
</url>
@@ -2686,6 +2674,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_app/</loc>
</url>
@@ -2702,6 +2694,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_app/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await/</loc>
</url>
@@ -2718,6 +2714,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await_body/</loc>
</url>
@@ -2734,6 +2734,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_body/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await_up/</loc>
</url>
@@ -2750,6 +2754,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.await_up/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.cancel/</loc>
</url>
@@ -2766,6 +2774,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.cancel/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.close/</loc>
</url>
@@ -2782,6 +2794,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.close/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.2/manual/gun.connect/</loc>
</url>
@@ -2790,6 +2806,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.connect/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.data/</loc>
</url>
@@ -2806,6 +2826,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.data/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.delete/</loc>
</url>
@@ -2822,6 +2846,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.delete/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.flush/</loc>
</url>
@@ -2838,6 +2866,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.flush/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.get/</loc>
</url>
@@ -2854,6 +2886,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.get/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.head/</loc>
</url>
@@ -2870,6 +2906,14 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.head/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.headers/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.info/</loc>
</url>
@@ -2886,6 +2930,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.info/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.open/</loc>
</url>
@@ -2902,6 +2950,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.open_unix/</loc>
</url>
@@ -2918,6 +2970,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.open_unix/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.options/</loc>
</url>
@@ -2934,6 +2990,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.options/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.patch/</loc>
</url>
@@ -2950,6 +3010,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.patch/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.post/</loc>
</url>
@@ -2966,6 +3030,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.post/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.put/</loc>
</url>
@@ -2982,6 +3050,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.put/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.request/</loc>
</url>
@@ -2998,6 +3070,26 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.request/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.set_owner/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.shutdown/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.stream_info/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.update_flow/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.ws_send/</loc>
</url>
@@ -3014,6 +3106,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_send/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.ws_upgrade/</loc>
</url>
@@ -3030,6 +3126,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.ws_upgrade/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_data/</loc>
</url>
@@ -3046,6 +3146,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_data/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_down/</loc>
</url>
@@ -3062,6 +3166,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_down/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_error/</loc>
</url>
@@ -3078,6 +3186,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_error/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_inform/</loc>
</url>
@@ -3094,6 +3206,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_inform/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_push/</loc>
</url>
@@ -3110,6 +3226,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_push/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_response/</loc>
</url>
@@ -3126,6 +3246,14 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_response/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_socks_up/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_trailers/</loc>
</url>
@@ -3142,6 +3270,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_trailers/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_up/</loc>
</url>
@@ -3158,6 +3290,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_up/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_upgrade/</loc>
</url>
@@ -3174,6 +3310,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_upgrade/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_ws/</loc>
</url>
@@ -3190,6 +3330,70 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_ws/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/cowboy/2.2/manual/http_status_codes/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/cowboy/2.3/manual/http_status_codes/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/cowboy/2.4/manual/http_status_codes/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/cowboy/2.5/manual/http_status_codes/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/cowboy/2.6/manual/http_status_codes/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/1.4/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/1.5/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/1.6/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/1.7/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/2.0/manual/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/1.4/guide/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/1.5/guide/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/1.6/guide/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/1.7/guide/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/ranch/2.0/guide/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.4/manual/ranch/</loc>
</url>
@@ -3581,4 +3785,8 @@
<loc>https://ninenines.eu/docs/en/ranch/2.0/manual/ranch_transport.sendfile/</loc>
</url>
+ <url>
+ <loc>https://ninenines.eu/tags/</loc>
+ </url>
+
</urlset> \ No newline at end of file