summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2025-04-11 14:34:51 +0200
committerLoïc Hoguin <[email protected]>2025-04-11 14:34:51 +0200
commiteb808a3f8bbd97d2a2ea0114b43b708a17b44066 (patch)
treefc142e5b11792af4f84d8634d9a8809f32344634
parent25e93c91878b7f8536764b06d2cb72020031acd1 (diff)
downloadninenines.eu-eb808a3f8bbd97d2a2ea0114b43b708a17b44066.tar.gz
ninenines.eu-eb808a3f8bbd97d2a2ea0114b43b708a17b44066.tar.bz2
ninenines.eu-eb808a3f8bbd97d2a2ea0114b43b708a17b44066.zip
Gun 2.2.0HEADmaster
-rw-r--r--_build/content/articles/gun-2.2.0.asciidoc57
-rw-r--r--_build/data/projects/cowlib.toml4
-rw-r--r--_build/data/projects/gun.toml4
-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.11.0/index.html4
-rw-r--r--articles/cowboy-2.12.0/index.html4
-rw-r--r--articles/cowboy-2.13.0-performance/index.html4
-rw-r--r--articles/cowboy-2.13.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/cowboy-2.7.0/index.html4
-rw-r--r--articles/cowboy-2.8.0/index.html4
-rw-r--r--articles/cowboy-2.9.0/index.html4
-rw-r--r--articles/cowboy2-qs/index.html4
-rw-r--r--articles/discord-server/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/github-sponsors/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.html4
-rw-r--r--articles/gun-2.0.0-pre.2/index.html4
-rw-r--r--articles/gun-2.0.0-rc.1/index.html4
-rw-r--r--articles/gun-2.0.0/index.html4
-rw-r--r--articles/gun-2.2.0/index.html381
-rw-r--r--articles/index.html36
-rw-r--r--articles/index.xml14
-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/merry-christmas-2019/index.html4
-rw-r--r--articles/ml-archives/index.html4
-rw-r--r--articles/on-open-source/index.html4
-rw-r--r--articles/otp-26/index.html4
-rw-r--r--articles/page/2/index.html34
-rw-r--r--articles/page/3/index.html35
-rw-r--r--articles/page/4/index.html18
-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-2.0.0/index.html4
-rw-r--r--articles/ranch-2.1.0/index.html4
-rw-r--r--articles/ranch-2.2.0/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-gateway-trilogy/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/cowlib/2.10/manual/cow_cookie.cookie/index.html2
-rw-r--r--docs/en/cowlib/2.10/manual/cow_cookie.parse_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.10/manual/cow_cookie.parse_set_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.10/manual/cow_cookie.setcookie/index.html2
-rw-r--r--docs/en/cowlib/2.10/manual/cow_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.10/manual/cowlib_app/index.html2
-rw-r--r--docs/en/cowlib/2.10/manual/index.html2
-rw-r--r--docs/en/cowlib/2.11/manual/cow_cookie.cookie/index.html2
-rw-r--r--docs/en/cowlib/2.11/manual/cow_cookie.parse_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.11/manual/cow_cookie.parse_set_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.11/manual/cow_cookie.setcookie/index.html2
-rw-r--r--docs/en/cowlib/2.11/manual/cow_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.11/manual/cowlib_app/index.html2
-rw-r--r--docs/en/cowlib/2.11/manual/index.html2
-rw-r--r--docs/en/cowlib/2.12/manual/cow_cookie.cookie/index.html2
-rw-r--r--docs/en/cowlib/2.12/manual/cow_cookie.parse_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.12/manual/cow_cookie.parse_set_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.12/manual/cow_cookie.setcookie/index.html2
-rw-r--r--docs/en/cowlib/2.12/manual/cow_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.12/manual/cowlib_app/index.html2
-rw-r--r--docs/en/cowlib/2.12/manual/index.html2
-rw-r--r--docs/en/cowlib/2.13/manual/cow_cookie.cookie/index.html2
-rw-r--r--docs/en/cowlib/2.13/manual/cow_cookie.parse_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.13/manual/cow_cookie.parse_set_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.13/manual/cow_cookie.setcookie/index.html2
-rw-r--r--docs/en/cowlib/2.13/manual/cow_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.13/manual/cowlib_app/index.html2
-rw-r--r--docs/en/cowlib/2.13/manual/index.html2
-rw-r--r--docs/en/cowlib/2.14/manual/cow_cookie.cookie/index.html2
-rw-r--r--docs/en/cowlib/2.14/manual/cow_cookie.parse_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.14/manual/cow_cookie.parse_set_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.14/manual/cow_cookie.setcookie/index.html2
-rw-r--r--docs/en/cowlib/2.14/manual/cow_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.14/manual/cowlib_app/index.html2
-rw-r--r--docs/en/cowlib/2.14/manual/index.html2
-rw-r--r--docs/en/cowlib/2.15/manual/cow_cookie.cookie/index.html193
-rw-r--r--docs/en/cowlib/2.15/manual/cow_cookie.parse_cookie/index.html195
-rw-r--r--docs/en/cowlib/2.15/manual/cow_cookie.parse_set_cookie/index.html202
-rw-r--r--docs/en/cowlib/2.15/manual/cow_cookie.setcookie/index.html205
-rw-r--r--docs/en/cowlib/2.15/manual/cow_cookie/index.html239
-rw-r--r--docs/en/cowlib/2.15/manual/cowlib_app/index.html184
-rw-r--r--docs/en/cowlib/2.15/manual/index.html184
-rw-r--r--docs/en/cowlib/2.8/manual/cow_cookie.parse_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.8/manual/cow_cookie.setcookie/index.html2
-rw-r--r--docs/en/cowlib/2.8/manual/cow_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.8/manual/cowlib_app/index.html2
-rw-r--r--docs/en/cowlib/2.8/manual/index.html2
-rw-r--r--docs/en/cowlib/2.9/manual/cow_cookie.cookie/index.html2
-rw-r--r--docs/en/cowlib/2.9/manual/cow_cookie.parse_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.9/manual/cow_cookie.parse_set_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.9/manual/cow_cookie.setcookie/index.html2
-rw-r--r--docs/en/cowlib/2.9/manual/cow_cookie/index.html2
-rw-r--r--docs/en/cowlib/2.9/manual/cowlib_app/index.html2
-rw-r--r--docs/en/cowlib/2.9/manual/index.html2
-rw-r--r--docs/en/gun/1.0/guide/connect/index.html2
-rw-r--r--docs/en/gun/1.0/guide/http/index.html2
-rw-r--r--docs/en/gun/1.0/guide/index.html2
-rw-r--r--docs/en/gun/1.0/guide/introduction/index.html2
-rw-r--r--docs/en/gun/1.0/guide/protocols/index.html2
-rw-r--r--docs/en/gun/1.0/guide/start/index.html2
-rw-r--r--docs/en/gun/1.0/guide/websocket/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.await/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.await_body/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.await_up/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.cancel/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.close/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.data/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.delete/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.flush/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.get/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.head/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.info/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.open/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.open_unix/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.options/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.patch/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.post/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.put/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.request/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.ws_send/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun.ws_upgrade/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_app/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_data/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_down/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_error/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_inform/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_push/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_response/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_trailers/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_up/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_upgrade/index.html2
-rw-r--r--docs/en/gun/1.0/manual/gun_ws/index.html2
-rw-r--r--docs/en/gun/1.0/manual/index.html2
-rw-r--r--docs/en/gun/1.1/guide/connect/index.html2
-rw-r--r--docs/en/gun/1.1/guide/http/index.html2
-rw-r--r--docs/en/gun/1.1/guide/index.html2
-rw-r--r--docs/en/gun/1.1/guide/introduction/index.html2
-rw-r--r--docs/en/gun/1.1/guide/migrating_from_1.0/index.html2
-rw-r--r--docs/en/gun/1.1/guide/protocols/index.html2
-rw-r--r--docs/en/gun/1.1/guide/start/index.html2
-rw-r--r--docs/en/gun/1.1/guide/websocket/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.await/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.await_body/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.await_up/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.cancel/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.close/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.data/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.delete/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.flush/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.get/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.head/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.info/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.open/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.open_unix/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.options/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.patch/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.post/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.put/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.request/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.ws_send/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun.ws_upgrade/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_app/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_data/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_down/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_error/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_inform/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_push/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_response/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_trailers/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_up/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_upgrade/index.html2
-rw-r--r--docs/en/gun/1.1/manual/gun_ws/index.html2
-rw-r--r--docs/en/gun/1.1/manual/index.html2
-rw-r--r--docs/en/gun/1.2/guide/connect/index.html2
-rw-r--r--docs/en/gun/1.2/guide/http/index.html2
-rw-r--r--docs/en/gun/1.2/guide/index.html2
-rw-r--r--docs/en/gun/1.2/guide/introduction/index.html2
-rw-r--r--docs/en/gun/1.2/guide/migrating_from_1.0/index.html2
-rw-r--r--docs/en/gun/1.2/guide/migrating_from_1.1/index.html2
-rw-r--r--docs/en/gun/1.2/guide/protocols/index.html2
-rw-r--r--docs/en/gun/1.2/guide/start/index.html2
-rw-r--r--docs/en/gun/1.2/guide/websocket/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.await/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.await_body/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.await_up/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.cancel/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.close/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.connect/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.data/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.delete/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.flush/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.get/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.head/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.info/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.open/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.open_unix/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.options/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.patch/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.post/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.put/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.request/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.ws_send/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun.ws_upgrade/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_app/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_data/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_down/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_error/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_inform/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_push/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_response/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_trailers/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_up/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_upgrade/index.html2
-rw-r--r--docs/en/gun/1.2/manual/gun_ws/index.html2
-rw-r--r--docs/en/gun/1.2/manual/index.html2
-rw-r--r--docs/en/gun/1.3/guide/connect/index.html2
-rw-r--r--docs/en/gun/1.3/guide/http/index.html2
-rw-r--r--docs/en/gun/1.3/guide/index.html2
-rw-r--r--docs/en/gun/1.3/guide/introduction/index.html2
-rw-r--r--docs/en/gun/1.3/guide/migrating_from_1.0/index.html2
-rw-r--r--docs/en/gun/1.3/guide/migrating_from_1.1/index.html2
-rw-r--r--docs/en/gun/1.3/guide/migrating_from_1.2/index.html2
-rw-r--r--docs/en/gun/1.3/guide/migrating_from_1.3/index.html2
-rw-r--r--docs/en/gun/1.3/guide/protocols/index.html2
-rw-r--r--docs/en/gun/1.3/guide/start/index.html2
-rw-r--r--docs/en/gun/1.3/guide/websocket/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.await/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.await_body/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.await_up/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.cancel/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.close/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.connect/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.data/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.delete/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.flush/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.get/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.head/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.info/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.open/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.open_unix/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.options/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.patch/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.post/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.put/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.request/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.ws_send/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun.ws_upgrade/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_app/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_data/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_down/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_error/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_inform/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_push/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_response/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_trailers/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_up/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_upgrade/index.html2
-rw-r--r--docs/en/gun/1.3/manual/gun_ws/index.html2
-rw-r--r--docs/en/gun/1.3/manual/index.html2
-rw-r--r--docs/en/gun/2.0/guide/connect/index.html2
-rw-r--r--docs/en/gun/2.0/guide/http/index.html2
-rw-r--r--docs/en/gun/2.0/guide/index.html2
-rw-r--r--docs/en/gun/2.0/guide/internals_tls_over_tls/index.html2
-rw-r--r--docs/en/gun/2.0/guide/introduction/index.html2
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.0/index.html2
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.1/index.html2
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.2/index.html2
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_1.3/index.html2
-rw-r--r--docs/en/gun/2.0/guide/migrating_from_2.0/index.html2
-rw-r--r--docs/en/gun/2.0/guide/protocols/index.html2
-rw-r--r--docs/en/gun/2.0/guide/start/index.html2
-rw-r--r--docs/en/gun/2.0/guide/websocket/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.await/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.await_body/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.await_up/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.cancel/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.close/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.connect/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.data/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.delete/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.flush/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.get/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.head/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.headers/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.info/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.open/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.open_unix/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.options/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.patch/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.post/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.put/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.request/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.set_owner/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.shutdown/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.stream_info/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.update_flow/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.ws_send/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun.ws_upgrade/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_app/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_cookies.domain_match/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_cookies.path_match/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_cookies/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_cookies_list/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_data/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_down/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_error/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_event/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_inform/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_push/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_response/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_trailers/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_tunnel_up/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_up/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_upgrade/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_ws/index.html2
-rw-r--r--docs/en/gun/2.0/manual/gun_ws_protocol/index.html2
-rw-r--r--docs/en/gun/2.0/manual/index.html2
-rw-r--r--docs/en/gun/2.1/guide/connect/index.html2
-rw-r--r--docs/en/gun/2.1/guide/http/index.html2
-rw-r--r--docs/en/gun/2.1/guide/index.html2
-rw-r--r--docs/en/gun/2.1/guide/internals_tls_over_tls/index.html2
-rw-r--r--docs/en/gun/2.1/guide/introduction/index.html2
-rw-r--r--docs/en/gun/2.1/guide/migrating_from_1.0/index.html2
-rw-r--r--docs/en/gun/2.1/guide/migrating_from_1.1/index.html2
-rw-r--r--docs/en/gun/2.1/guide/migrating_from_1.2/index.html2
-rw-r--r--docs/en/gun/2.1/guide/migrating_from_1.3/index.html2
-rw-r--r--docs/en/gun/2.1/guide/migrating_from_2.0/index.html2
-rw-r--r--docs/en/gun/2.1/guide/protocols/index.html2
-rw-r--r--docs/en/gun/2.1/guide/start/index.html2
-rw-r--r--docs/en/gun/2.1/guide/websocket/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.await/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.await_body/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.await_up/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.cancel/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.close/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.connect/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.data/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.delete/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.flush/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.get/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.head/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.headers/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.info/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.open/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.open_unix/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.options/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.patch/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.post/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.put/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.request/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.set_owner/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.shutdown/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.stream_info/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.update_flow/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.ws_send/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun.ws_upgrade/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_app/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_cookies.domain_match/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_cookies.path_match/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_cookies/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_cookies_list/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_data/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_down/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_error/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_event/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_inform/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_push/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_response/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_trailers/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_tunnel_up/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_up/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_upgrade/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_ws/index.html2
-rw-r--r--docs/en/gun/2.1/manual/gun_ws_protocol/index.html2
-rw-r--r--docs/en/gun/2.1/manual/index.html2
-rw-r--r--docs/en/gun/2.2/guide/connect.asciidoc166
-rw-r--r--docs/en/gun/2.2/guide/connect/index.html280
-rw-r--r--docs/en/gun/2.2/guide/gun.sty8
-rw-r--r--docs/en/gun/2.2/guide/http.asciidoc387
-rw-r--r--docs/en/gun/2.2/guide/http/index.html454
-rw-r--r--docs/en/gun/2.2/guide/index.html192
-rw-r--r--docs/en/gun/2.2/guide/internals_tls_over_tls.asciidoc177
-rw-r--r--docs/en/gun/2.2/guide/internals_tls_over_tls/index.html224
-rw-r--r--docs/en/gun/2.2/guide/introduction.asciidoc49
-rw-r--r--docs/en/gun/2.2/guide/introduction/index.html205
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_1.0.asciidoc21
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_1.0/index.html191
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_1.1.asciidoc28
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_1.1/index.html197
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_1.2.asciidoc39
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_1.2/index.html207
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_1.3.asciidoc329
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_1.3/index.html339
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_2.0.asciidoc25
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_2.0/index.html196
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_2.1.asciidoc88
-rw-r--r--docs/en/gun/2.2/guide/migrating_from_2.1/index.html222
-rw-r--r--docs/en/gun/2.2/guide/protocols.asciidoc134
-rw-r--r--docs/en/gun/2.2/guide/protocols/index.html333
-rw-r--r--docs/en/gun/2.2/guide/start.asciidoc43
-rw-r--r--docs/en/gun/2.2/guide/start/index.html208
-rw-r--r--docs/en/gun/2.2/guide/websocket.asciidoc141
-rw-r--r--docs/en/gun/2.2/guide/websocket/index.html277
-rw-r--r--docs/en/gun/2.2/manual/gun.await/index.html258
-rw-r--r--docs/en/gun/2.2/manual/gun.await_body/index.html226
-rw-r--r--docs/en/gun/2.2/manual/gun.await_up/index.html217
-rw-r--r--docs/en/gun/2.2/manual/gun.cancel/index.html201
-rw-r--r--docs/en/gun/2.2/manual/gun.close/index.html193
-rw-r--r--docs/en/gun/2.2/manual/gun.connect/index.html254
-rw-r--r--docs/en/gun/2.2/manual/gun.data/index.html212
-rw-r--r--docs/en/gun/2.2/manual/gun.delete/index.html221
-rw-r--r--docs/en/gun/2.2/manual/gun.flush/index.html206
-rw-r--r--docs/en/gun/2.2/manual/gun.get/index.html224
-rw-r--r--docs/en/gun/2.2/manual/gun.head/index.html226
-rw-r--r--docs/en/gun/2.2/manual/gun.headers/index.html218
-rw-r--r--docs/en/gun/2.2/manual/gun.info/index.html222
-rw-r--r--docs/en/gun/2.2/manual/gun.open/index.html221
-rw-r--r--docs/en/gun/2.2/manual/gun.open_unix/index.html209
-rw-r--r--docs/en/gun/2.2/manual/gun.options/index.html221
-rw-r--r--docs/en/gun/2.2/manual/gun.patch/index.html249
-rw-r--r--docs/en/gun/2.2/manual/gun.ping/index.html208
-rw-r--r--docs/en/gun/2.2/manual/gun.post/index.html247
-rw-r--r--docs/en/gun/2.2/manual/gun.put/index.html247
-rw-r--r--docs/en/gun/2.2/manual/gun.request/index.html225
-rw-r--r--docs/en/gun/2.2/manual/gun.set_owner/index.html199
-rw-r--r--docs/en/gun/2.2/manual/gun.shutdown/index.html203
-rw-r--r--docs/en/gun/2.2/manual/gun.stream_info/index.html218
-rw-r--r--docs/en/gun/2.2/manual/gun.update_flow/index.html203
-rw-r--r--docs/en/gun/2.2/manual/gun.ws_send/index.html219
-rw-r--r--docs/en/gun/2.2/manual/gun.ws_upgrade/index.html247
-rw-r--r--docs/en/gun/2.2/manual/gun/index.html678
-rw-r--r--docs/en/gun/2.2/manual/gun_app/index.html194
-rw-r--r--docs/en/gun/2.2/manual/gun_cookies.domain_match/index.html198
-rw-r--r--docs/en/gun/2.2/manual/gun_cookies.path_match/index.html198
-rw-r--r--docs/en/gun/2.2/manual/gun_cookies/index.html297
-rw-r--r--docs/en/gun/2.2/manual/gun_cookies_list/index.html195
-rw-r--r--docs/en/gun/2.2/manual/gun_data/index.html210
-rw-r--r--docs/en/gun/2.2/manual/gun_down/index.html212
-rw-r--r--docs/en/gun/2.2/manual/gun_error/index.html209
-rw-r--r--docs/en/gun/2.2/manual/gun_event/index.html576
-rw-r--r--docs/en/gun/2.2/manual/gun_inform/index.html209
-rw-r--r--docs/en/gun/2.2/manual/gun_notify/index.html207
-rw-r--r--docs/en/gun/2.2/manual/gun_push/index.html229
-rw-r--r--docs/en/gun/2.2/manual/gun_response/index.html212
-rw-r--r--docs/en/gun/2.2/manual/gun_trailers/index.html204
-rw-r--r--docs/en/gun/2.2/manual/gun_tunnel_up/index.html204
-rw-r--r--docs/en/gun/2.2/manual/gun_up/index.html201
-rw-r--r--docs/en/gun/2.2/manual/gun_upgrade/index.html210
-rw-r--r--docs/en/gun/2.2/manual/gun_ws/index.html209
-rw-r--r--docs/en/gun/2.2/manual/gun_ws_protocol/index.html235
-rw-r--r--docs/en/gun/2.2/manual/index.html194
-rw-r--r--docs/index.html12
-rw-r--r--docs/index.xml828
-rw-r--r--donate/index.html140
-rw-r--r--erlanger-playbook/index.html140
-rw-r--r--index.html146
-rw-r--r--index.xml840
-rw-r--r--services/index.html140
-rw-r--r--sitemap.xml283
496 files changed, 21804 insertions, 61 deletions
diff --git a/_build/content/articles/gun-2.2.0.asciidoc b/_build/content/articles/gun-2.2.0.asciidoc
new file mode 100644
index 00000000..c4b6dcbd
--- /dev/null
+++ b/_build/content/articles/gun-2.2.0.asciidoc
@@ -0,0 +1,57 @@
++++
+date = "2025-04-11T07:00:00+01:00"
+title = "Gun 2.2"
+
++++
+
+Gun `2.2.0` has been released!
+
+Gun 2.2 contains many features and fixes, including
+an experimental HTTP/3 implementation.
+
+Gun 2.2 is the first release that includes an
+experimental support for the HTTP/3 protocol.
+Note that unlike Cowboy, Gun 2.2 does not yet
+support Websocket over HTTP/3.
+
+Gun 2.2 now sets the appropriate ssl options to
+perform wildcard certificate matching, which is
+a requirement for HTTP and previously had to be
+configured by users.
+
+Gun 2.2 also enables users to send HTTP/2 pings
+directly, including over tunnels, enabling use
+cases such as measuring the latency with the
+server. These pings are separate from the
+keepalive functionality.
+
+Gun 2.2 also contains various fixes, the most
+significant of which is a better handling of
+TLS 1.3 alerts in mTLS scenarios. TLS 1.3 may
+perform certificate validation after the handshake
+has completed, leading to the alerts often arriving
+asynchronously. When an ssl function call returns
+`{error, closed}` or equivalent, Gun will now check
+whether the closure was a result of a TLS alert,
+and in that case propagate the alert as the error
+reason to the user. This has also been made to work
+over tunnels.
+
+HTTP/2 tunneling has also seen a number of
+improvements.
+
+Gun 2.0 requires Erlang/OTP 24.0 or greater and is tested
+and supported on Linux, macOS and Windows.
+
+A complete
+list of changes can be found in the migration guide:
+https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.1/[Migrating from Gun 2.1 to 2.2].
+
+I will now focus on implementing HTTP/3 WebTransport
+in Cowboy and Gun.
+
+You can donate to this project via
+https://github.com/sponsors/essen[GitHub Sponsors].
+
+As usual, feedback is appreciated, and issues or
+questions should be sent via Github tickets. Thanks!
diff --git a/_build/data/projects/cowlib.toml b/_build/data/projects/cowlib.toml
index d2cca1a7..8a29a7c0 100644
--- a/_build/data/projects/cowlib.toml
+++ b/_build/data/projects/cowlib.toml
@@ -3,7 +3,7 @@ catchphrase = "Support library for the Web."
description = "The Web toolbox for HTTP/1.1, HTTP/2, Websocket, Multipart, Cookies, URL encoding..."
name = "cowlib"
repository = "https://github.com/ninenines/cowlib"
-versions = ["2.14", "2.13", "2.12", "2.11", "2.10", "2.9", "2.8"]
-branches = ["2.14.0", "2.13.0", "2.12.1", "2.11.0", "2.10.1", "2.9.1", "2.8.0"]
+versions = ["2.15", "2.14", "2.13", "2.12", "2.11", "2.10", "2.9", "2.8"]
+branches = ["2.15.0", "2.14.0", "2.13.0", "2.12.1", "2.11.0", "2.10.1", "2.9.1", "2.8.0"]
has_source = true
has_manual = true
diff --git a/_build/data/projects/gun.toml b/_build/data/projects/gun.toml
index 2aed64f5..1fbbfba1 100644
--- a/_build/data/projects/gun.toml
+++ b/_build/data/projects/gun.toml
@@ -3,8 +3,8 @@ catchphrase = "The smoking gun of HTTP clients."
description = "Asynchronous client with support for HTTP/1.1, HTTP/2, Websocket and more."
name = "gun"
repository = "https://github.com/ninenines/gun"
-versions = ["2.1", "2.0", "1.3", "1.2", "1.1", "1.0"]
-branches = ["e2ff7181186ca1e53c1d9386aed295e7b7239f09", "2.0.1", "1.3.1", "1.2.0", "1.1.0", "1.0.0"]
+versions = ["2.2", "2.1", "2.0", "1.3", "1.2", "1.1", "1.0"]
+branches = ["fa9f4663f219a9d7c7dcd7dc33ded323cce4cfcb", "e2ff7181186ca1e53c1d9386aed295e7b7239f09", "2.0.1", "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 ccfc586a..cc8489dd 100644
--- a/articles/asciideck/index.html
+++ b/articles/asciideck/index.html
@@ -109,6 +109,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</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 a9851d44..485cd940 100644
--- a/articles/cowboy-2.0.0-pre.4/index.html
+++ b/articles/cowboy-2.0.0-pre.4/index.html
@@ -128,6 +128,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</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 dd909d01..a12f6317 100644
--- a/articles/cowboy-2.0.0-rc.1/index.html
+++ b/articles/cowboy-2.0.0-rc.1/index.html
@@ -99,6 +99,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</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 3027b9af..4a1f11af 100644
--- a/articles/cowboy-2.0.0-rc.2/index.html
+++ b/articles/cowboy-2.0.0-rc.2/index.html
@@ -92,6 +92,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.0.0/index.html b/articles/cowboy-2.0.0/index.html
index 2742e197..f3ef2a8a 100644
--- a/articles/cowboy-2.0.0/index.html
+++ b/articles/cowboy-2.0.0/index.html
@@ -98,6 +98,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.1.0/index.html b/articles/cowboy-2.1.0/index.html
index 29ac1887..2880ce5d 100644
--- a/articles/cowboy-2.1.0/index.html
+++ b/articles/cowboy-2.1.0/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.11.0/index.html b/articles/cowboy-2.11.0/index.html
index f78364a5..e9e52b70 100644
--- a/articles/cowboy-2.11.0/index.html
+++ b/articles/cowboy-2.11.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.12.0/index.html b/articles/cowboy-2.12.0/index.html
index 118d825f..9f8d123c 100644
--- a/articles/cowboy-2.12.0/index.html
+++ b/articles/cowboy-2.12.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.13.0-performance/index.html b/articles/cowboy-2.13.0-performance/index.html
index fb1a0c59..178c78ae 100644
--- a/articles/cowboy-2.13.0-performance/index.html
+++ b/articles/cowboy-2.13.0-performance/index.html
@@ -103,6 +103,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.13.0/index.html b/articles/cowboy-2.13.0/index.html
index 0aec7b32..cbbb4a86 100644
--- a/articles/cowboy-2.13.0/index.html
+++ b/articles/cowboy-2.13.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.2.0/index.html b/articles/cowboy-2.2.0/index.html
index 871dc33c..e7d3bf2d 100644
--- a/articles/cowboy-2.2.0/index.html
+++ b/articles/cowboy-2.2.0/index.html
@@ -93,6 +93,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.3.0/index.html b/articles/cowboy-2.3.0/index.html
index ad41bb42..c47739af 100644
--- a/articles/cowboy-2.3.0/index.html
+++ b/articles/cowboy-2.3.0/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.4.0/index.html b/articles/cowboy-2.4.0/index.html
index a71d8046..efb0b980 100644
--- a/articles/cowboy-2.4.0/index.html
+++ b/articles/cowboy-2.4.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.5.0/index.html b/articles/cowboy-2.5.0/index.html
index e6f6be96..6bb89dc8 100644
--- a/articles/cowboy-2.5.0/index.html
+++ b/articles/cowboy-2.5.0/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.6.0/index.html b/articles/cowboy-2.6.0/index.html
index 6cf18362..97dc5d90 100644
--- a/articles/cowboy-2.6.0/index.html
+++ b/articles/cowboy-2.6.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.7.0/index.html b/articles/cowboy-2.7.0/index.html
index 604508be..325dc752 100644
--- a/articles/cowboy-2.7.0/index.html
+++ b/articles/cowboy-2.7.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.8.0/index.html b/articles/cowboy-2.8.0/index.html
index 8df53254..ab6562f3 100644
--- a/articles/cowboy-2.8.0/index.html
+++ b/articles/cowboy-2.8.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy-2.9.0/index.html b/articles/cowboy-2.9.0/index.html
index 105fd467..d915ec37 100644
--- a/articles/cowboy-2.9.0/index.html
+++ b/articles/cowboy-2.9.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/cowboy2-qs/index.html b/articles/cowboy2-qs/index.html
index 6202e813..0807bf78 100644
--- a/articles/cowboy2-qs/index.html
+++ b/articles/cowboy2-qs/index.html
@@ -129,6 +129,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/discord-server/index.html b/articles/discord-server/index.html
index 8009c348..013679b6 100644
--- a/articles/discord-server/index.html
+++ b/articles/discord-server/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/dont-let-it-crash/index.html b/articles/dont-let-it-crash/index.html
index 42524da9..ddb01724 100644
--- a/articles/dont-let-it-crash/index.html
+++ b/articles/dont-let-it-crash/index.html
@@ -104,6 +104,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/erlang-meetup-10-septembre-2019/index.html b/articles/erlang-meetup-10-septembre-2019/index.html
index 409f0b81..f6901661 100644
--- a/articles/erlang-meetup-10-septembre-2019/index.html
+++ b/articles/erlang-meetup-10-septembre-2019/index.html
@@ -84,6 +84,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/erlang-scalability/index.html b/articles/erlang-scalability/index.html
index 9a1aa8d6..77064a99 100644
--- a/articles/erlang-scalability/index.html
+++ b/articles/erlang-scalability/index.html
@@ -116,6 +116,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/erlang-validate-utf8/index.html b/articles/erlang-validate-utf8/index.html
index 7e44c1dd..23ac359c 100644
--- a/articles/erlang-validate-utf8/index.html
+++ b/articles/erlang-validate-utf8/index.html
@@ -232,6 +232,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/erlang.mk-and-relx/index.html b/articles/erlang.mk-and-relx/index.html
index d1385ad0..464d3fe2 100644
--- a/articles/erlang.mk-and-relx/index.html
+++ b/articles/erlang.mk-and-relx/index.html
@@ -118,6 +118,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.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/erlanger-playbook-september-2015-update/index.html b/articles/erlanger-playbook-september-2015-update/index.html
index 016cd9e3..d10fa7a2 100644
--- a/articles/erlanger-playbook-september-2015-update/index.html
+++ b/articles/erlanger-playbook-september-2015-update/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/erlanger-playbook/index.html b/articles/erlanger-playbook/index.html
index 7f917449..ba18fd2d 100644
--- a/articles/erlanger-playbook/index.html
+++ b/articles/erlanger-playbook/index.html
@@ -128,6 +128,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/farwest-funded/index.html b/articles/farwest-funded/index.html
index f1f867df..f9dba26c 100644
--- a/articles/farwest-funded/index.html
+++ b/articles/farwest-funded/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/github-sponsors/index.html b/articles/github-sponsors/index.html
index e7910dc0..83f77f28 100644
--- a/articles/github-sponsors/index.html
+++ b/articles/github-sponsors/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</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 b26375f3..0dd68793 100644
--- a/articles/gun-1.0.0-rc.1/index.html
+++ b/articles/gun-1.0.0-rc.1/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/gun-1.0.0/index.html b/articles/gun-1.0.0/index.html
index 7731c63c..9ad2fa24 100644
--- a/articles/gun-1.0.0/index.html
+++ b/articles/gun-1.0.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/gun-1.2.0/index.html b/articles/gun-1.2.0/index.html
index 2219e622..ba71b510 100644
--- a/articles/gun-1.2.0/index.html
+++ b/articles/gun-1.2.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/gun-1.3.0/index.html b/articles/gun-1.3.0/index.html
index 15246fe7..cbd76a3c 100644
--- a/articles/gun-1.3.0/index.html
+++ b/articles/gun-1.3.0/index.html
@@ -86,6 +86,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/gun-2.0.0-pre.1/index.html b/articles/gun-2.0.0-pre.1/index.html
index 8635550e..fb3537b6 100644
--- a/articles/gun-2.0.0-pre.1/index.html
+++ b/articles/gun-2.0.0-pre.1/index.html
@@ -93,6 +93,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/gun-2.0.0-pre.2/index.html b/articles/gun-2.0.0-pre.2/index.html
index 9aa8cca4..ae2b7fc3 100644
--- a/articles/gun-2.0.0-pre.2/index.html
+++ b/articles/gun-2.0.0-pre.2/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/gun-2.0.0-rc.1/index.html b/articles/gun-2.0.0-rc.1/index.html
index 10b3e94c..32c675ff 100644
--- a/articles/gun-2.0.0-rc.1/index.html
+++ b/articles/gun-2.0.0-rc.1/index.html
@@ -96,6 +96,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/gun-2.0.0/index.html b/articles/gun-2.0.0/index.html
index 3053cf81..c426e3f6 100644
--- a/articles/gun-2.0.0/index.html
+++ b/articles/gun-2.0.0/index.html
@@ -98,6 +98,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/gun-2.2.0/index.html b/articles/gun-2.2.0/index.html
new file mode 100644
index 00000000..79d967ff
--- /dev/null
+++ b/articles/gun-2.2.0/index.html
@@ -0,0 +1,381 @@
+<!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.2</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=7" 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.2</span></h1>
+ <p class="date">
+ <span class="year">2025</span>
+ <span class="day-month">11 Apr</span>
+ </p>
+</header>
+
+<p>Gun <code>2.2.0</code> has been released!</p>
+<p>Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation.</p>
+<p>Gun 2.2 is the first release that includes an experimental support for the HTTP/3 protocol. Note that unlike Cowboy, Gun 2.2 does not yet support Websocket over HTTP/3.</p>
+<p>Gun 2.2 now sets the appropriate ssl options to perform wildcard certificate matching, which is a requirement for HTTP and previously had to be configured by users.</p>
+<p>Gun 2.2 also enables users to send HTTP/2 pings directly, including over tunnels, enabling use cases such as measuring the latency with the server. These pings are separate from the keepalive functionality.</p>
+<p>Gun 2.2 also contains various fixes, the most significant of which is a better handling of TLS 1.3 alerts in mTLS scenarios. TLS 1.3 may perform certificate validation after the handshake has completed, leading to the alerts often arriving asynchronously. When an ssl function call returns <code>{error, closed}</code> or equivalent, Gun will now check whether the closure was a result of a TLS alert, and in that case propagate the alert as the error reason to the user. This has also been made to work over tunnels.</p>
+<p>HTTP/2 tunneling has also seen a number of improvements.</p>
+<p>Gun 2.0 requires Erlang/OTP 24.0 or greater and is tested and supported on Linux, 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.2/guide/migrating_from_2.1/">Migrating from Gun 2.1 to 2.2</a>.</p>
+<p>I will now focus on implementing HTTP/3 WebTransport in Cowboy and Gun.</p>
+<p>You can donate to this project via <a href="https://github.com/sponsors/essen">GitHub Sponsors</a>.</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.2.0/">Gun 2.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0-performance/">Performance improvements in Cowboy 2.13</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/discord-server/">Erlang OSS Discord server</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.12.0/">Cowboy 2.12</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.11.0/">Cowboy 2.11</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/otp-26/">Erlang/OTP 26</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0/">Gun 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.1.0/">Ranch 2.1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.9.0/">Cowboy 2.9</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-rc.1/">Gun 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.0.0/">Ranch 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.8.0/">Cowboy 2.8</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-gateway-trilogy/">The Gateway Trilogy</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.2/">Gun 2.0 pre-release 2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/merry-christmas-2019/">Merry Christmas 2019: New Beginnings</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/github-sponsors/">GitHub Sponsors</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.7.0/">Cowboy 2.7</a></li>
+
+
+
+ <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 d1cf2a6a..4f10d828 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -65,6 +65,25 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></h2>
+ <p class="date">
+ <span class="year">2025</span>
+ <span class="day-month">11 Apr</span>
+ </p>
+ </header>
+
+ <p>Gun 2.2.0 has been released!
+Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation.
+Gun 2.2 is the first release that includes an experimental support for the HTTP/3 protocol. Note that unlike Cowboy, Gun 2.2 does not yet support Websocket over HTTP/3.
+Gun 2.2 now sets the appropriate ssl options to perform wildcard certificate matching, which is a requirement for HTTP and previously had to be configured by users.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/gun-2.2.0/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></h2>
<p class="date">
<span class="year">2025</span>
@@ -410,23 +429,6 @@ Before listing the features please note that this pre-release includes a fix for
</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>
- <span class="day-month">22 Aug</span>
- </p>
- </header>
-
- <p>Erlang meetups are resuming and I will be present at the next one in Paris on the 10th of September. As the meetup and my talk about Gun will be in French the rest of this post will be in French as well. If you are around Paris that night, you are welcome to join and chat, even if you don&apos;t speak the language!
-Je serai au meetup Erlang le 10 septembre chez Datadog à Paris.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/index.xml b/articles/index.xml
index 72c8b1dd..c800fc26 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,12 +6,24 @@
<description>Recent content in Articles on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Tue, 18 Feb 2025 07:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Fri, 11 Apr 2025 07:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Gun 2.2</title>
+ <link>https://ninenines.eu/articles/gun-2.2.0/</link>
+ <pubDate>Fri, 11 Apr 2025 07:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/gun-2.2.0/</guid>
+ <description>Gun 2.2.0 has been released!
+Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation.
+Gun 2.2 is the first release that includes an experimental support for the HTTP/3 protocol. Note that unlike Cowboy, Gun 2.2 does not yet support Websocket over HTTP/3.
+Gun 2.2 now sets the appropriate ssl options to perform wildcard certificate matching, which is a requirement for HTTP and previously had to be configured by users.</description>
+ </item>
+
+ <item>
<title>Cowboy 2.13</title>
<link>https://ninenines.eu/articles/cowboy-2.13.0/</link>
<pubDate>Tue, 18 Feb 2025 07:00:00 +0100</pubDate>
diff --git a/articles/january-2014-status/index.html b/articles/january-2014-status/index.html
index 1936d650..7d7aacd1 100644
--- a/articles/january-2014-status/index.html
+++ b/articles/january-2014-status/index.html
@@ -114,6 +114,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/joe_the_rubber_duck/index.html b/articles/joe_the_rubber_duck/index.html
index 88875513..2f59922b 100644
--- a/articles/joe_the_rubber_duck/index.html
+++ b/articles/joe_the_rubber_duck/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/merry-christmas-2018/index.html b/articles/merry-christmas-2018/index.html
index 99a88e73..732f123b 100644
--- a/articles/merry-christmas-2018/index.html
+++ b/articles/merry-christmas-2018/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/merry-christmas-2019/index.html b/articles/merry-christmas-2019/index.html
index 1f5e891e..91957286 100644
--- a/articles/merry-christmas-2019/index.html
+++ b/articles/merry-christmas-2019/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/ml-archives/index.html b/articles/ml-archives/index.html
index 413415c1..525ff222 100644
--- a/articles/ml-archives/index.html
+++ b/articles/ml-archives/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/on-open-source/index.html b/articles/on-open-source/index.html
index 567dca2c..35c9f683 100644
--- a/articles/on-open-source/index.html
+++ b/articles/on-open-source/index.html
@@ -97,6 +97,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.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/otp-26/index.html b/articles/otp-26/index.html
index 222761e4..da40f8d4 100644
--- a/articles/otp-26/index.html
+++ b/articles/otp-26/index.html
@@ -92,6 +92,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
index 3855283a..4fc0096a 100644
--- a/articles/page/2/index.html
+++ b/articles/page/2/index.html
@@ -65,6 +65,23 @@
<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>
+ <span class="day-month">22 Aug</span>
+ </p>
+ </header>
+
+ <p>Erlang meetups are resuming and I will be present at the next one in Paris on the 10th of September. As the meetup and my talk about Gun will be in French the rest of this post will be in French as well. If you are around Paris that night, you are welcome to join and chat, even if you don&apos;t speak the language!
+Je serai au meetup Erlang le 10 septembre chez Datadog à Paris.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Ranch 2.0 release candidate 1</a></h2>
<p class="date">
<span class="year">2019</span>
@@ -418,23 +435,6 @@ The plan is to have a new RC version every couple weeks until the summer ends or
</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>
- <span class="day-month">26 Mar</span>
- </p>
- </header>
-
- <p>Have you ever tried telling someone why they should use Erlang? You boast the smaller code size, the auto healing mechanisms, the distribution and they seem really excited. They wonder why they never heard about Erlang before. And then you show them what the code looks like. All excitement goes away. The smiles disappear. Their face starts becoming really serious.
-You lost them. You know you lost them. They comment on the syntax, or perhaps you do, already admitting defeat.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/the-elephant-in-the-room/">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 492d6b14..0fd4fe6b 100644
--- a/articles/page/3/index.html
+++ b/articles/page/3/index.html
@@ -65,6 +65,23 @@
<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>
+ <span class="day-month">26 Mar</span>
+ </p>
+ </header>
+
+ <p>Have you ever tried telling someone why they should use Erlang? You boast the smaller code size, the auto healing mechanisms, the distribution and they seem really excited. They wonder why they never heard about Erlang before. And then you show them what the code looks like. All excitement goes away. The smiles disappear. Their face starts becoming really serious.
+You lost them. You know you lost them. They comment on the syntax, or perhaps you do, already admitting defeat.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/the-elephant-in-the-room/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></h2>
<p class="date">
<span class="year">2017</span>
@@ -407,24 +424,6 @@ mod out_module begin mod in_module begin end end Of course, in the context of t
</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>
- <span class="day-month">30 Jan</span>
- </p>
- </header>
-
- <p>Let&apos;s build a programming language. I call it Xerl: eXtended ERLang. It&apos;ll be an occasion for us to learn a few things, especially me.
-Unlike in Erlang, in this language, everything is an expression. This means that modules and functions are expression, and indeed that you can have more than one module per file.
-We are just starting, so let&apos;s no go ahead of ourselves here. We&apos;ll begin with writing the code allowing us to compile an empty module.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/page/4/index.html b/articles/page/4/index.html
index 53e77536..86752a19 100644
--- a/articles/page/4/index.html
+++ b/articles/page/4/index.html
@@ -65,6 +65,24 @@
<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>
+ <span class="day-month">30 Jan</span>
+ </p>
+ </header>
+
+ <p>Let&apos;s build a programming language. I call it Xerl: eXtended ERLang. It&apos;ll be an occasion for us to learn a few things, especially me.
+Unlike in Erlang, in this language, everything is an expression. This means that modules and functions are expression, and indeed that you can have more than one module per file.
+We are just starting, so let&apos;s no go ahead of ourselves here. We&apos;ll begin with writing the code allowing us to compile an empty module.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></h2>
<p class="date">
<span class="year">2012</span>
diff --git a/articles/ranch-1.3/index.html b/articles/ranch-1.3/index.html
index 3c1850df..d7300acf 100644
--- a/articles/ranch-1.3/index.html
+++ b/articles/ranch-1.3/index.html
@@ -126,6 +126,10 @@ Primary key fingerprint<font color="#990000">:</font> F19F 189C ECC7 <font color
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/ranch-1.6.0/index.html b/articles/ranch-1.6.0/index.html
index f4140cc1..be88f288 100644
--- a/articles/ranch-1.6.0/index.html
+++ b/articles/ranch-1.6.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/ranch-1.7.0/index.html b/articles/ranch-1.7.0/index.html
index f29a7915..ac2a4433 100644
--- a/articles/ranch-1.7.0/index.html
+++ b/articles/ranch-1.7.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</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 513dbaa6..85284166 100644
--- a/articles/ranch-2.0.0-rc.1/index.html
+++ b/articles/ranch-2.0.0-rc.1/index.html
@@ -96,6 +96,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/ranch-2.0.0/index.html b/articles/ranch-2.0.0/index.html
index 3f595900..acee64bb 100644
--- a/articles/ranch-2.0.0/index.html
+++ b/articles/ranch-2.0.0/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/ranch-2.1.0/index.html b/articles/ranch-2.1.0/index.html
index 9bb62a80..d1ce138c 100644
--- a/articles/ranch-2.1.0/index.html
+++ b/articles/ranch-2.1.0/index.html
@@ -90,6 +90,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/ranch-2.2.0/index.html b/articles/ranch-2.2.0/index.html
index 4fea2c69..e358a763 100644
--- a/articles/ranch-2.2.0/index.html
+++ b/articles/ranch-2.2.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/ranch-ftp/index.html b/articles/ranch-ftp/index.html
index bd7c4fc6..b51f6ba0 100644
--- a/articles/ranch-ftp/index.html
+++ b/articles/ranch-ftp/index.html
@@ -228,6 +228,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html
index 08a25daf..01498b78 100644
--- a/articles/the-elephant-in-the-room/index.html
+++ b/articles/the-elephant-in-the-room/index.html
@@ -110,6 +110,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/the-gateway-trilogy/index.html b/articles/the-gateway-trilogy/index.html
index 6d6bbc33..2f406fd6 100644
--- a/articles/the-gateway-trilogy/index.html
+++ b/articles/the-gateway-trilogy/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/the-story-so-far/index.html b/articles/the-story-so-far/index.html
index 49953d32..2f4b0526 100644
--- a/articles/the-story-so-far/index.html
+++ b/articles/the-story-so-far/index.html
@@ -101,6 +101,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/tictactoe/index.html b/articles/tictactoe/index.html
index a790b193..2382be79 100644
--- a/articles/tictactoe/index.html
+++ b/articles/tictactoe/index.html
@@ -133,6 +133,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/website-update/index.html b/articles/website-update/index.html
index d3ccbcca..440e1adf 100644
--- a/articles/website-update/index.html
+++ b/articles/website-update/index.html
@@ -90,6 +90,10 @@
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/xerl-0.1-empty-modules/index.html b/articles/xerl-0.1-empty-modules/index.html
index cc4b2e35..7dd8a514 100644
--- a/articles/xerl-0.1-empty-modules/index.html
+++ b/articles/xerl-0.1-empty-modules/index.html
@@ -168,6 +168,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/xerl-0.2-two-modules/index.html b/articles/xerl-0.2-two-modules/index.html
index 3662f675..2d0cf9b0 100644
--- a/articles/xerl-0.2-two-modules/index.html
+++ b/articles/xerl-0.2-two-modules/index.html
@@ -196,6 +196,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/xerl-0.3-atomic-expressions/index.html b/articles/xerl-0.3-atomic-expressions/index.html
index d6a25886..a28bfda5 100644
--- a/articles/xerl-0.3-atomic-expressions/index.html
+++ b/articles/xerl-0.3-atomic-expressions/index.html
@@ -165,6 +165,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/xerl-0.4-expression-separator/index.html b/articles/xerl-0.4-expression-separator/index.html
index 74813db8..e34e56ac 100644
--- a/articles/xerl-0.4-expression-separator/index.html
+++ b/articles/xerl-0.4-expression-separator/index.html
@@ -117,6 +117,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/articles/xerl-0.5-intermediate-module/index.html b/articles/xerl-0.5-intermediate-module/index.html
index 2ac33af1..bd555350 100644
--- a/articles/xerl-0.5-intermediate-module/index.html
+++ b/articles/xerl-0.5-intermediate-module/index.html
@@ -161,6 +161,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
diff --git a/docs/en/cowlib/2.10/manual/cow_cookie.cookie/index.html b/docs/en/cowlib/2.10/manual/cow_cookie.cookie/index.html
index 2a9571eb..eddb0f4a 100644
--- a/docs/en/cowlib/2.10/manual/cow_cookie.cookie/index.html
+++ b/docs/en/cowlib/2.10/manual/cow_cookie.cookie/index.html
@@ -127,6 +127,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.10/manual/cow_cookie.parse_cookie/index.html b/docs/en/cowlib/2.10/manual/cow_cookie.parse_cookie/index.html
index 17c0c17a..d391fb19 100644
--- a/docs/en/cowlib/2.10/manual/cow_cookie.parse_cookie/index.html
+++ b/docs/en/cowlib/2.10/manual/cow_cookie.parse_cookie/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.10/manual/cow_cookie.parse_set_cookie/index.html b/docs/en/cowlib/2.10/manual/cow_cookie.parse_set_cookie/index.html
index 5192ea56..019c8077 100644
--- a/docs/en/cowlib/2.10/manual/cow_cookie.parse_set_cookie/index.html
+++ b/docs/en/cowlib/2.10/manual/cow_cookie.parse_set_cookie/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.10/manual/cow_cookie.setcookie/index.html b/docs/en/cowlib/2.10/manual/cow_cookie.setcookie/index.html
index 1fd6e33e..3a4bce9c 100644
--- a/docs/en/cowlib/2.10/manual/cow_cookie.setcookie/index.html
+++ b/docs/en/cowlib/2.10/manual/cow_cookie.setcookie/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.10/manual/cow_cookie/index.html b/docs/en/cowlib/2.10/manual/cow_cookie/index.html
index 5d1b1711..620cf753 100644
--- a/docs/en/cowlib/2.10/manual/cow_cookie/index.html
+++ b/docs/en/cowlib/2.10/manual/cow_cookie/index.html
@@ -171,6 +171,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.10/manual/cowlib_app/index.html b/docs/en/cowlib/2.10/manual/cowlib_app/index.html
index 4660d18a..c7c2cb46 100644
--- a/docs/en/cowlib/2.10/manual/cowlib_app/index.html
+++ b/docs/en/cowlib/2.10/manual/cowlib_app/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.10/manual/index.html b/docs/en/cowlib/2.10/manual/index.html
index e174b4b2..e0bc6643 100644
--- a/docs/en/cowlib/2.10/manual/index.html
+++ b/docs/en/cowlib/2.10/manual/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.11/manual/cow_cookie.cookie/index.html b/docs/en/cowlib/2.11/manual/cow_cookie.cookie/index.html
index 34c5a35b..753207e0 100644
--- a/docs/en/cowlib/2.11/manual/cow_cookie.cookie/index.html
+++ b/docs/en/cowlib/2.11/manual/cow_cookie.cookie/index.html
@@ -127,6 +127,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.11/manual/cow_cookie.parse_cookie/index.html b/docs/en/cowlib/2.11/manual/cow_cookie.parse_cookie/index.html
index b240bbda..da0fc6c6 100644
--- a/docs/en/cowlib/2.11/manual/cow_cookie.parse_cookie/index.html
+++ b/docs/en/cowlib/2.11/manual/cow_cookie.parse_cookie/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.11/manual/cow_cookie.parse_set_cookie/index.html b/docs/en/cowlib/2.11/manual/cow_cookie.parse_set_cookie/index.html
index 5a60875b..2a7f9902 100644
--- a/docs/en/cowlib/2.11/manual/cow_cookie.parse_set_cookie/index.html
+++ b/docs/en/cowlib/2.11/manual/cow_cookie.parse_set_cookie/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.11/manual/cow_cookie.setcookie/index.html b/docs/en/cowlib/2.11/manual/cow_cookie.setcookie/index.html
index 166330d2..b1ae8e9d 100644
--- a/docs/en/cowlib/2.11/manual/cow_cookie.setcookie/index.html
+++ b/docs/en/cowlib/2.11/manual/cow_cookie.setcookie/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.11/manual/cow_cookie/index.html b/docs/en/cowlib/2.11/manual/cow_cookie/index.html
index 4fcd8895..8f1e46a1 100644
--- a/docs/en/cowlib/2.11/manual/cow_cookie/index.html
+++ b/docs/en/cowlib/2.11/manual/cow_cookie/index.html
@@ -171,6 +171,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.11/manual/cowlib_app/index.html b/docs/en/cowlib/2.11/manual/cowlib_app/index.html
index 5e016f0b..4faf1fd5 100644
--- a/docs/en/cowlib/2.11/manual/cowlib_app/index.html
+++ b/docs/en/cowlib/2.11/manual/cowlib_app/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.11/manual/index.html b/docs/en/cowlib/2.11/manual/index.html
index b9cc01f4..fdfcaa03 100644
--- a/docs/en/cowlib/2.11/manual/index.html
+++ b/docs/en/cowlib/2.11/manual/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.12/manual/cow_cookie.cookie/index.html b/docs/en/cowlib/2.12/manual/cow_cookie.cookie/index.html
index 01ccf74b..a74572b6 100644
--- a/docs/en/cowlib/2.12/manual/cow_cookie.cookie/index.html
+++ b/docs/en/cowlib/2.12/manual/cow_cookie.cookie/index.html
@@ -127,6 +127,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.12/manual/cow_cookie.parse_cookie/index.html b/docs/en/cowlib/2.12/manual/cow_cookie.parse_cookie/index.html
index b78c2dcd..1b6a46d1 100644
--- a/docs/en/cowlib/2.12/manual/cow_cookie.parse_cookie/index.html
+++ b/docs/en/cowlib/2.12/manual/cow_cookie.parse_cookie/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.12/manual/cow_cookie.parse_set_cookie/index.html b/docs/en/cowlib/2.12/manual/cow_cookie.parse_set_cookie/index.html
index 73c76278..75cd1067 100644
--- a/docs/en/cowlib/2.12/manual/cow_cookie.parse_set_cookie/index.html
+++ b/docs/en/cowlib/2.12/manual/cow_cookie.parse_set_cookie/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.12/manual/cow_cookie.setcookie/index.html b/docs/en/cowlib/2.12/manual/cow_cookie.setcookie/index.html
index 9010369e..dd851c5e 100644
--- a/docs/en/cowlib/2.12/manual/cow_cookie.setcookie/index.html
+++ b/docs/en/cowlib/2.12/manual/cow_cookie.setcookie/index.html
@@ -139,6 +139,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.12/manual/cow_cookie/index.html b/docs/en/cowlib/2.12/manual/cow_cookie/index.html
index 8e7b494a..a37756c0 100644
--- a/docs/en/cowlib/2.12/manual/cow_cookie/index.html
+++ b/docs/en/cowlib/2.12/manual/cow_cookie/index.html
@@ -173,6 +173,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.12/manual/cowlib_app/index.html b/docs/en/cowlib/2.12/manual/cowlib_app/index.html
index b3867d16..209456ea 100644
--- a/docs/en/cowlib/2.12/manual/cowlib_app/index.html
+++ b/docs/en/cowlib/2.12/manual/cowlib_app/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.12/manual/index.html b/docs/en/cowlib/2.12/manual/index.html
index 574fb312..4073353f 100644
--- a/docs/en/cowlib/2.12/manual/index.html
+++ b/docs/en/cowlib/2.12/manual/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.13/manual/cow_cookie.cookie/index.html b/docs/en/cowlib/2.13/manual/cow_cookie.cookie/index.html
index 7b921813..19b307eb 100644
--- a/docs/en/cowlib/2.13/manual/cow_cookie.cookie/index.html
+++ b/docs/en/cowlib/2.13/manual/cow_cookie.cookie/index.html
@@ -127,6 +127,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.13/manual/cow_cookie.parse_cookie/index.html b/docs/en/cowlib/2.13/manual/cow_cookie.parse_cookie/index.html
index 9a7481a7..e3a4180a 100644
--- a/docs/en/cowlib/2.13/manual/cow_cookie.parse_cookie/index.html
+++ b/docs/en/cowlib/2.13/manual/cow_cookie.parse_cookie/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.13/manual/cow_cookie.parse_set_cookie/index.html b/docs/en/cowlib/2.13/manual/cow_cookie.parse_set_cookie/index.html
index 24ec444f..5af0eaad 100644
--- a/docs/en/cowlib/2.13/manual/cow_cookie.parse_set_cookie/index.html
+++ b/docs/en/cowlib/2.13/manual/cow_cookie.parse_set_cookie/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.13/manual/cow_cookie.setcookie/index.html b/docs/en/cowlib/2.13/manual/cow_cookie.setcookie/index.html
index 120a4e43..b4b219a9 100644
--- a/docs/en/cowlib/2.13/manual/cow_cookie.setcookie/index.html
+++ b/docs/en/cowlib/2.13/manual/cow_cookie.setcookie/index.html
@@ -139,6 +139,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.13/manual/cow_cookie/index.html b/docs/en/cowlib/2.13/manual/cow_cookie/index.html
index ef91bda1..f5a9f4c5 100644
--- a/docs/en/cowlib/2.13/manual/cow_cookie/index.html
+++ b/docs/en/cowlib/2.13/manual/cow_cookie/index.html
@@ -173,6 +173,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.13/manual/cowlib_app/index.html b/docs/en/cowlib/2.13/manual/cowlib_app/index.html
index c1fc4a2a..c161e023 100644
--- a/docs/en/cowlib/2.13/manual/cowlib_app/index.html
+++ b/docs/en/cowlib/2.13/manual/cowlib_app/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.13/manual/index.html b/docs/en/cowlib/2.13/manual/index.html
index c243f40a..8cffdca4 100644
--- a/docs/en/cowlib/2.13/manual/index.html
+++ b/docs/en/cowlib/2.13/manual/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.14/manual/cow_cookie.cookie/index.html b/docs/en/cowlib/2.14/manual/cow_cookie.cookie/index.html
index 31627142..2bdea07e 100644
--- a/docs/en/cowlib/2.14/manual/cow_cookie.cookie/index.html
+++ b/docs/en/cowlib/2.14/manual/cow_cookie.cookie/index.html
@@ -127,6 +127,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.14/manual/cow_cookie.parse_cookie/index.html b/docs/en/cowlib/2.14/manual/cow_cookie.parse_cookie/index.html
index f223e7d6..1a79a8da 100644
--- a/docs/en/cowlib/2.14/manual/cow_cookie.parse_cookie/index.html
+++ b/docs/en/cowlib/2.14/manual/cow_cookie.parse_cookie/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.14/manual/cow_cookie.parse_set_cookie/index.html b/docs/en/cowlib/2.14/manual/cow_cookie.parse_set_cookie/index.html
index 0eeff992..a5cf3a34 100644
--- a/docs/en/cowlib/2.14/manual/cow_cookie.parse_set_cookie/index.html
+++ b/docs/en/cowlib/2.14/manual/cow_cookie.parse_set_cookie/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.14/manual/cow_cookie.setcookie/index.html b/docs/en/cowlib/2.14/manual/cow_cookie.setcookie/index.html
index 0473994e..6b314385 100644
--- a/docs/en/cowlib/2.14/manual/cow_cookie.setcookie/index.html
+++ b/docs/en/cowlib/2.14/manual/cow_cookie.setcookie/index.html
@@ -139,6 +139,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.14/manual/cow_cookie/index.html b/docs/en/cowlib/2.14/manual/cow_cookie/index.html
index 40f39626..53bcfbcf 100644
--- a/docs/en/cowlib/2.14/manual/cow_cookie/index.html
+++ b/docs/en/cowlib/2.14/manual/cow_cookie/index.html
@@ -173,6 +173,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.14/manual/cowlib_app/index.html b/docs/en/cowlib/2.14/manual/cowlib_app/index.html
index bf2ca322..d5a8eb4c 100644
--- a/docs/en/cowlib/2.14/manual/cowlib_app/index.html
+++ b/docs/en/cowlib/2.14/manual/cowlib_app/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.14/manual/index.html b/docs/en/cowlib/2.14/manual/index.html
index e0613609..d66010a4 100644
--- a/docs/en/cowlib/2.14/manual/index.html
+++ b/docs/en/cowlib/2.14/manual/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.15/manual/cow_cookie.cookie/index.html b/docs/en/cowlib/2.15/manual/cow_cookie.cookie/index.html
new file mode 100644
index 00000000..bb766e32
--- /dev/null
+++ b/docs/en/cowlib/2.15/manual/cow_cookie.cookie/index.html
@@ -0,0 +1,193 @@
+<!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: cow_cookie:cookie(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=7" 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>cow_cookie:cookie(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>cow_cookie:cookie - Generate a cookie header</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">cookie</font></b>(<font color="#009900">Cookies</font>) <font color="#990000">-&gt;</font> <b><font color="#000000">iolist</font></b>()
+
+<font color="#009900">Cookies</font> <font color="#990000">::</font> [{<font color="#009900">Name</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>(), <font color="#009900">Value</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()}]</tt></pre>
+</div></div>
+<p>Generate a cookie header.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>Cookies</dt>
+<dd><p>A list of pairs of cookie name and value.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>An iolist with the generated cookie header value.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.9</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Generate a cookie header</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Cookie</font> <font color="#990000">=</font> <b><font color="#000000">cow_cookie:cookie</font></b>([{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"sessionid"</font><font color="#990000">&gt;&gt;</font>, <font color="#009900">ID</font>}])<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../cow_cookie">cow_cookie(3)</a>, <a href="../cow_cookie.parse_cookie">cow_cookie:parse_cookie(3)</a>, <a href="../cow_cookie.parse_set_cookie">cow_cookie:parse_set_cookie(3)</a>, <a href="../cow_cookie.setcookie">cow_cookie:setcookie(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Cowlib
+ 2.15
+ Function Reference
+
+</h3>
+
+<ul>
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
+ <li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
+
+ <li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
+
+ <li><a href="/docs/en/cowlib/2.12/manual">2.12</a></li>
+
+ <li><a href="/docs/en/cowlib/2.11/manual">2.11</a></li>
+
+ <li><a href="/docs/en/cowlib/2.10/manual">2.10</a></li>
+
+ <li><a href="/docs/en/cowlib/2.9/manual">2.9</a></li>
+
+ <li><a href="/docs/en/cowlib/2.8/manual">2.8</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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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/cowlib/2.15/manual/cow_cookie.parse_cookie/index.html b/docs/en/cowlib/2.15/manual/cow_cookie.parse_cookie/index.html
new file mode 100644
index 00000000..6268e3b3
--- /dev/null
+++ b/docs/en/cowlib/2.15/manual/cow_cookie.parse_cookie/index.html
@@ -0,0 +1,195 @@
+<!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: cow_cookie:parse_cookie(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=7" 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>cow_cookie:parse_cookie(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>cow_cookie:parse_cookie - Parse a cookie header</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">parse_cookie</font></b>(<font color="#009900">Cookie</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>())
+ <font color="#990000">-&gt;</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]</tt></pre>
+</div></div>
+<p>Parse a cookie header.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>Cookie</dt>
+<dd><p>The cookie header value.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A list of cookie name/value pairs is returned on success.</p>
+<p>An exception is thrown in the event of a parse error.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.9</strong>: Fixes to the parser may lead to potential incompatibilities. A cookie name starting with <code>$</code> is no longer ignored. A cookie without a <code>=</code> will be parsed as the value of the cookie named <code>&lt;&lt;&gt;&gt;</code> (empty name).
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Parse a cookie header</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Cookies</font> <font color="#990000">=</font> <b><font color="#000000">cow_cookie:parse_cookie</font></b>(<font color="#009900">CookieHd</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../cow_cookie">cow_cookie(3)</a>, <a href="../cow_cookie.parse_set_cookie">cow_cookie:parse_set_cookie(3)</a>, <a href="../cow_cookie.cookie">cow_cookie:cookie(3)</a>, <a href="../cow_cookie.setcookie">cow_cookie:setcookie(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Cowlib
+ 2.15
+ Function Reference
+
+</h3>
+
+<ul>
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
+ <li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
+
+ <li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
+
+ <li><a href="/docs/en/cowlib/2.12/manual">2.12</a></li>
+
+ <li><a href="/docs/en/cowlib/2.11/manual">2.11</a></li>
+
+ <li><a href="/docs/en/cowlib/2.10/manual">2.10</a></li>
+
+ <li><a href="/docs/en/cowlib/2.9/manual">2.9</a></li>
+
+ <li><a href="/docs/en/cowlib/2.8/manual">2.8</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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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/cowlib/2.15/manual/cow_cookie.parse_set_cookie/index.html b/docs/en/cowlib/2.15/manual/cow_cookie.parse_set_cookie/index.html
new file mode 100644
index 00000000..768cde36
--- /dev/null
+++ b/docs/en/cowlib/2.15/manual/cow_cookie.parse_set_cookie/index.html
@@ -0,0 +1,202 @@
+<!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: cow_cookie:parse_set_cookie(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=7" 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>cow_cookie:parse_set_cookie(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>cow_cookie:parse_set_cookie - Parse a set-cookie header</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">parse_set_cookie</font></b>(<font color="#009900">SetCookie</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>())
+ <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">Name</font>, <font color="#009900">Value</font>, <font color="#009900">Attrs</font>} | <font color="#FF6600">ignore</font>
+
+<font color="#009900">Name</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">Value</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">Attrs</font> <font color="#990000">::</font> <b><font color="#000000">cow_cookie:cookie_attrs</font></b>()</tt></pre>
+</div></div>
+<p>Parse a set-cookie header.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>SetCookie</dt>
+<dd><p>The set-cookie header value.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>An <code>ok</code> tuple with the cookie name, value and attributes is returned on success.</p>
+<p>An atom <code>ignore</code> is returned when the cookie has both an empty name and an empty value, and must be ignored.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.9</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Parse a cookie header</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#0000FF">case</font></b> <b><font color="#000000">cow_cookie:parse_set_cookie</font></b>(<font color="#009900">SetCookieHd</font>) <b><font color="#0000FF">of</font></b>
+ {<font color="#FF6600">ok</font>, <font color="#009900">Name</font>, <font color="#009900">Value</font>, <font color="#009900">Attrs</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">cookie_engine_set_cookie</font></b>(<font color="#009900">Name</font>, <font color="#009900">Value</font>, <font color="#009900">Attrs</font>);
+ <font color="#FF6600">ignore</font> <font color="#990000">-&gt;</font>
+ <b><font color="#000000">do_nothing</font></b>()
+<b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../cow_cookie">cow_cookie(3)</a>, <a href="../cow_cookie.parse_cookie">cow_cookie:parse_cookie(3)</a>, <a href="../cow_cookie.cookie">cow_cookie:cookie(3)</a>, <a href="../cow_cookie.setcookie">cow_cookie:setcookie(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Cowlib
+ 2.15
+ Function Reference
+
+</h3>
+
+<ul>
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
+ <li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
+
+ <li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
+
+ <li><a href="/docs/en/cowlib/2.12/manual">2.12</a></li>
+
+ <li><a href="/docs/en/cowlib/2.11/manual">2.11</a></li>
+
+ <li><a href="/docs/en/cowlib/2.10/manual">2.10</a></li>
+
+ <li><a href="/docs/en/cowlib/2.9/manual">2.9</a></li>
+
+ <li><a href="/docs/en/cowlib/2.8/manual">2.8</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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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/cowlib/2.15/manual/cow_cookie.setcookie/index.html b/docs/en/cowlib/2.15/manual/cow_cookie.setcookie/index.html
new file mode 100644
index 00000000..594fc65e
--- /dev/null
+++ b/docs/en/cowlib/2.15/manual/cow_cookie.setcookie/index.html
@@ -0,0 +1,205 @@
+<!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: cow_cookie:setcookie(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=7" 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>cow_cookie:setcookie(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>cow_cookie:setcookie - Generate a set-cookie header</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">setcookie</font></b>(<font color="#009900">Name</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>(),
+ <font color="#009900">Value</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>(),
+ <font color="#009900">Opts</font> <font color="#990000">::</font> <b><font color="#000000">cow_cookie:cookie_opts</font></b>())
+ <font color="#990000">-&gt;</font> <b><font color="#000000">iolist</font></b>()</tt></pre>
+</div></div>
+<p>Generate a set-cookie header.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>Name</dt>
+<dd><p>Cookie name.</p>
+</dd>
+<dt>Value</dt>
+<dd><p>Cookie value.</p>
+</dd>
+<dt>Opts</dt>
+<dd><p>Options added to the set-cookie header as attributes.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>An iolist with the generated set-cookie header value.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.12</strong>: The <code>Version</code> attribute is no longer generated.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Generate a set-cookie header</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">SetCookie</font> <font color="#990000">=</font> <b><font color="#000000">cow_cookie:setcookie</font></b>(<font color="#990000">&lt;&lt;</font><font color="#FF0000">"sessionid"</font><font color="#990000">&gt;&gt;</font>, <font color="#009900">ID</font>, #{
+ <font color="#0000FF">http_only</font> <font color="#990000">=&gt;</font> <font color="#000080">true</font>,
+ <font color="#0000FF">secure</font> <font color="#990000">=&gt;</font> <font color="#000080">true</font>
+})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../cow_cookie">cow_cookie(3)</a>, <a href="../cow_cookie.parse_cookie">cow_cookie:parse_cookie(3)</a>, <a href="../cow_cookie.parse_set_cookie">cow_cookie:parse_set_cookie(3)</a>, <a href="../cow_cookie.cookie">cow_cookie:cookie(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Cowlib
+ 2.15
+ Function Reference
+
+</h3>
+
+<ul>
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
+ <li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
+
+ <li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
+
+ <li><a href="/docs/en/cowlib/2.12/manual">2.12</a></li>
+
+ <li><a href="/docs/en/cowlib/2.11/manual">2.11</a></li>
+
+ <li><a href="/docs/en/cowlib/2.10/manual">2.10</a></li>
+
+ <li><a href="/docs/en/cowlib/2.9/manual">2.9</a></li>
+
+ <li><a href="/docs/en/cowlib/2.8/manual">2.8</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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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/cowlib/2.15/manual/cow_cookie/index.html b/docs/en/cowlib/2.15/manual/cow_cookie/index.html
new file mode 100644
index 00000000..6b7d5116
--- /dev/null
+++ b/docs/en/cowlib/2.15/manual/cow_cookie/index.html
@@ -0,0 +1,239 @@
+<!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: cow_cookie(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=7" 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>cow_cookie(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>cow_cookie - Cookies</p>
+<h2 id="_description">Description</h2>
+<p>The module <code>cow_cookie</code> provides functions for parsing and manipulating cookie headers.</p>
+<h2 id="_exports">Exports</h2>
+<ul><li><a href="../cow_cookie.parse_cookie">cow_cookie:parse_cookie(3)</a> - Parse a cookie header
+</li>
+<li><a href="../cow_cookie.parse_set_cookie">cow_cookie:parse_set_cookie(3)</a> - Parse a set-cookie header
+</li>
+<li><a href="../cow_cookie.cookie">cow_cookie:cookie(3)</a> - Generate a cookie header
+</li>
+<li><a href="../cow_cookie.setcookie">cow_cookie:setcookie(3)</a> - Generate a set-cookie header
+</li>
+</ul>
+<h2 id="_types">Types</h2>
+<h3 id="_cookie_attrs">cookie_attrs()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">cookie_attrs</font></b>() <font color="#990000">::</font> #{
+ <font color="#0000FF">expires</font> <font color="#990000">=&gt;</font> <b><font color="#000000">calendar:datetime</font></b>(),
+ <font color="#0000FF">max_age</font> <font color="#990000">=&gt;</font> <b><font color="#000000">calendar:datetime</font></b>(),
+ <font color="#0000FF">domain</font> <font color="#990000">=&gt;</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#0000FF">path</font> <font color="#990000">=&gt;</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#0000FF">secure</font> <font color="#990000">=&gt;</font> <font color="#000080">true</font>,
+ <font color="#0000FF">http_only</font> <font color="#990000">=&gt;</font> <font color="#000080">true</font>,
+ <font color="#0000FF">same_site</font> <font color="#990000">=&gt;</font> <font color="#FF6600">default</font> | <font color="#FF6600">none</font> | <font color="#FF6600">strict</font> | <font color="#FF6600">lax</font>
+}</tt></pre>
+</div></div>
+<p>Cookie attributes parsed from the set-cookie header. The attributes must be passed as-is to a cookie store engine for processing, along with the cookie name and value. More information about the attributes can be found in <a href="https://tools.ietf.org/html/rfc6265">RFC 6265</a>.</p>
+<h3 id="_cookie_opts">cookie_opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">cookie_opts</font></b>() <font color="#990000">::</font> #{
+ <font color="#0000FF">domain</font> <font color="#990000">=&gt;</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#0000FF">http_only</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#0000FF">max_age</font> <font color="#990000">=&gt;</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#0000FF">path</font> <font color="#990000">=&gt;</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#0000FF">same_site</font> <font color="#990000">=&gt;</font> <font color="#FF6600">default</font> | <font color="#FF6600">none</font> | <font color="#FF6600">strict</font> | <font color="#FF6600">lax</font>,
+ <font color="#0000FF">secure</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</font></b>()
+}</tt></pre>
+</div></div>
+<p>Options for the set-cookie header. They are added to the header as attributes. More information about the options can be found in <a href="https://tools.ietf.org/html/rfc6265">RFC 6265</a>.</p>
+<p>The following options are defined:</p>
+<dl><dt>domain</dt>
+<dd><p>Hosts to which the cookie will be sent. By default it will only be sent to the origin server.</p>
+</dd>
+<dt>http_only</dt>
+<dd><p>Whether the cookie should be restricted to HTTP requests, or it should also be exposed to other APIs, for example Javascript. By default there are no restrictions.</p>
+</dd>
+<dt>max_age</dt>
+<dd><p>Maximum lifetime of the cookie, in seconds. By default the cookie is kept for the duration of the session.</p>
+</dd>
+<dt>path</dt>
+<dd><p>Path to which the cookie will be sent. By default it will be sent to the current &quot;directory&quot; of the effective request URI.</p>
+</dd>
+<dt>same_site</dt>
+<dd><p>Whether the cookie should be sent along with cross-site requests. This attribute is currently non-standard but is in the process of being standardized. Please refer to the <a href="https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7">RFC 6265 (bis) draft</a> for details.</p>
+<p>The default value for this attribute may vary depending on user agent and configuration. Browsers are known to be more strict over TCP compared to TLS.</p>
+</dd>
+<dt>secure</dt>
+<dd><p>Whether the cookie should be sent only on secure channels (for example TLS). Note that this does not guarantee the integrity of the cookie, only its confidentiality during transfer. By default there are no restrictions.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.12</strong>: The <code>same_site</code> attribute and option may now be set to <code>default</code>.
+</li>
+<li><strong>2.10</strong>: The <code>same_site</code> attribute and option may now be set to <code>none</code>.
+</li>
+<li><strong>2.9</strong>: The <code>cookie_attrs</code> type was added.
+</li>
+<li><strong>1.0</strong>: Module introduced.
+</li>
+</ul>
+<h2 id="_see_also">See also</h2>
+<p><a href="..">cowlib(7)</a>, <a href="https://tools.ietf.org/html/rfc6265">RFC 6265</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Cowlib
+ 2.15
+ Function Reference
+
+</h3>
+
+<ul>
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
+ <li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
+
+ <li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
+
+ <li><a href="/docs/en/cowlib/2.12/manual">2.12</a></li>
+
+ <li><a href="/docs/en/cowlib/2.11/manual">2.11</a></li>
+
+ <li><a href="/docs/en/cowlib/2.10/manual">2.10</a></li>
+
+ <li><a href="/docs/en/cowlib/2.9/manual">2.9</a></li>
+
+ <li><a href="/docs/en/cowlib/2.8/manual">2.8</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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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/cowlib/2.15/manual/cowlib_app/index.html b/docs/en/cowlib/2.15/manual/cowlib_app/index.html
new file mode 100644
index 00000000..55a2f393
--- /dev/null
+++ b/docs/en/cowlib/2.15/manual/cowlib_app/index.html
@@ -0,0 +1,184 @@
+<!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: cowlib(7)</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=7" 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>cowlib(7)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>cowlib - Support library for manipulating Web protocols</p>
+<h2 id="_description">Description</h2>
+<p>Cowlib provides libraries for parsing and building messages for various Web protocols, including HTTP/1.1, HTTP/2 and Websocket.</p>
+<p>It is optimized for completeness rather than speed. No value is ignored, they are all returned.</p>
+<h2 id="_modules">Modules</h2>
+<ul><li><a href="../cow_cookie">cow_cookie(3)</a> - Cookies
+</li>
+</ul>
+<h2 id="_dependencies">Dependencies</h2>
+<ul><li>crypto - Crypto functions
+</li>
+</ul>
+<p>All these applications must be started before the <code>cowlib</code> application. To start Cowlib and all dependencies at once:</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#990000">_</font>} <font color="#990000">=</font> <b><font color="#000000">application:ensure_all_started</font></b>(<font color="#FF6600">cowlib</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_environment">Environment</h2>
+<p>The <code>cowlib</code> application does not define any application environment configuration parameters.</p>
+<h2 id="_see_also">See also</h2>
+<p><a href="../cowboy">cowboy(7)</a>, <a href="../gun">gun(7)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Cowlib
+ 2.15
+ Function Reference
+
+</h3>
+
+<ul>
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
+ <li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
+
+ <li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
+
+ <li><a href="/docs/en/cowlib/2.12/manual">2.12</a></li>
+
+ <li><a href="/docs/en/cowlib/2.11/manual">2.11</a></li>
+
+ <li><a href="/docs/en/cowlib/2.10/manual">2.10</a></li>
+
+ <li><a href="/docs/en/cowlib/2.9/manual">2.9</a></li>
+
+ <li><a href="/docs/en/cowlib/2.8/manual">2.8</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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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/cowlib/2.15/manual/index.html b/docs/en/cowlib/2.15/manual/index.html
new file mode 100644
index 00000000..40e15dd1
--- /dev/null
+++ b/docs/en/cowlib/2.15/manual/index.html
@@ -0,0 +1,184 @@
+<!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: Cowlib Function Reference</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=7" 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>Cowlib Function Reference</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>cowlib - Support library for manipulating Web protocols</p>
+<h2 id="_description">Description</h2>
+<p>Cowlib provides libraries for parsing and building messages for various Web protocols, including HTTP/1.1, HTTP/2 and Websocket.</p>
+<p>It is optimized for completeness rather than speed. No value is ignored, they are all returned.</p>
+<h2 id="_modules">Modules</h2>
+<ul><li><a href="cow_cookie">cow_cookie(3)</a> - Cookies
+</li>
+</ul>
+<h2 id="_dependencies">Dependencies</h2>
+<ul><li>crypto - Crypto functions
+</li>
+</ul>
+<p>All these applications must be started before the <code>cowlib</code> application. To start Cowlib and all dependencies at once:</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#990000">_</font>} <font color="#990000">=</font> <b><font color="#000000">application:ensure_all_started</font></b>(<font color="#FF6600">cowlib</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_environment">Environment</h2>
+<p>The <code>cowlib</code> application does not define any application environment configuration parameters.</p>
+<h2 id="_see_also">See also</h2>
+<p><a href="cowboy_app">cowboy(7)</a>, <a href="gun_app">gun(7)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Cowlib
+ 2.15
+ Function Reference
+
+</h3>
+
+<ul>
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
+ <li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
+
+ <li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
+
+ <li><a href="/docs/en/cowlib/2.12/manual">2.12</a></li>
+
+ <li><a href="/docs/en/cowlib/2.11/manual">2.11</a></li>
+
+ <li><a href="/docs/en/cowlib/2.10/manual">2.10</a></li>
+
+ <li><a href="/docs/en/cowlib/2.9/manual">2.9</a></li>
+
+ <li><a href="/docs/en/cowlib/2.8/manual">2.8</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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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/cowlib/2.8/manual/cow_cookie.parse_cookie/index.html b/docs/en/cowlib/2.8/manual/cow_cookie.parse_cookie/index.html
index a2b08083..810c2fbf 100644
--- a/docs/en/cowlib/2.8/manual/cow_cookie.parse_cookie/index.html
+++ b/docs/en/cowlib/2.8/manual/cow_cookie.parse_cookie/index.html
@@ -127,6 +127,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.8/manual/cow_cookie.setcookie/index.html b/docs/en/cowlib/2.8/manual/cow_cookie.setcookie/index.html
index d119892d..bd106b78 100644
--- a/docs/en/cowlib/2.8/manual/cow_cookie.setcookie/index.html
+++ b/docs/en/cowlib/2.8/manual/cow_cookie.setcookie/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.8/manual/cow_cookie/index.html b/docs/en/cowlib/2.8/manual/cow_cookie/index.html
index 49a8e4a9..ba7212a3 100644
--- a/docs/en/cowlib/2.8/manual/cow_cookie/index.html
+++ b/docs/en/cowlib/2.8/manual/cow_cookie/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.8/manual/cowlib_app/index.html b/docs/en/cowlib/2.8/manual/cowlib_app/index.html
index 185895dc..320b5442 100644
--- a/docs/en/cowlib/2.8/manual/cowlib_app/index.html
+++ b/docs/en/cowlib/2.8/manual/cowlib_app/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.8/manual/index.html b/docs/en/cowlib/2.8/manual/index.html
index 4369746d..573dc2d8 100644
--- a/docs/en/cowlib/2.8/manual/index.html
+++ b/docs/en/cowlib/2.8/manual/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.9/manual/cow_cookie.cookie/index.html b/docs/en/cowlib/2.9/manual/cow_cookie.cookie/index.html
index 141b0d47..37280a2d 100644
--- a/docs/en/cowlib/2.9/manual/cow_cookie.cookie/index.html
+++ b/docs/en/cowlib/2.9/manual/cow_cookie.cookie/index.html
@@ -127,6 +127,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.9/manual/cow_cookie.parse_cookie/index.html b/docs/en/cowlib/2.9/manual/cow_cookie.parse_cookie/index.html
index c7da3cff..f09017a0 100644
--- a/docs/en/cowlib/2.9/manual/cow_cookie.parse_cookie/index.html
+++ b/docs/en/cowlib/2.9/manual/cow_cookie.parse_cookie/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.9/manual/cow_cookie.parse_set_cookie/index.html b/docs/en/cowlib/2.9/manual/cow_cookie.parse_set_cookie/index.html
index ff16d625..9839b8e2 100644
--- a/docs/en/cowlib/2.9/manual/cow_cookie.parse_set_cookie/index.html
+++ b/docs/en/cowlib/2.9/manual/cow_cookie.parse_set_cookie/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.9/manual/cow_cookie.setcookie/index.html b/docs/en/cowlib/2.9/manual/cow_cookie.setcookie/index.html
index 28b75081..afd1b40f 100644
--- a/docs/en/cowlib/2.9/manual/cow_cookie.setcookie/index.html
+++ b/docs/en/cowlib/2.9/manual/cow_cookie.setcookie/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.9/manual/cow_cookie/index.html b/docs/en/cowlib/2.9/manual/cow_cookie/index.html
index 330ecf11..2db417c0 100644
--- a/docs/en/cowlib/2.9/manual/cow_cookie/index.html
+++ b/docs/en/cowlib/2.9/manual/cow_cookie/index.html
@@ -168,6 +168,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.9/manual/cowlib_app/index.html b/docs/en/cowlib/2.9/manual/cowlib_app/index.html
index d3a9f9dc..10cfeebd 100644
--- a/docs/en/cowlib/2.9/manual/cowlib_app/index.html
+++ b/docs/en/cowlib/2.9/manual/cowlib_app/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/cowlib/2.9/manual/index.html b/docs/en/cowlib/2.9/manual/index.html
index 2ecf5e64..a50b233b 100644
--- a/docs/en/cowlib/2.9/manual/index.html
+++ b/docs/en/cowlib/2.9/manual/index.html
@@ -118,6 +118,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/cowlib/2.15/manual">2.15</a></li>
+
<li><a href="/docs/en/cowlib/2.14/manual">2.14</a></li>
<li><a href="/docs/en/cowlib/2.13/manual">2.13</a></li>
diff --git a/docs/en/gun/1.0/guide/connect/index.html b/docs/en/gun/1.0/guide/connect/index.html
index 973f6954..66708601 100644
--- a/docs/en/gun/1.0/guide/connect/index.html
+++ b/docs/en/gun/1.0/guide/connect/index.html
@@ -215,6 +215,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.0/guide/http/index.html b/docs/en/gun/1.0/guide/http/index.html
index f160bd9d..35f6333c 100644
--- a/docs/en/gun/1.0/guide/http/index.html
+++ b/docs/en/gun/1.0/guide/http/index.html
@@ -390,6 +390,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.0/guide/index.html b/docs/en/gun/1.0/guide/index.html
index b797d9b7..cf554d52 100644
--- a/docs/en/gun/1.0/guide/index.html
+++ b/docs/en/gun/1.0/guide/index.html
@@ -109,6 +109,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.0/guide/introduction/index.html b/docs/en/gun/1.0/guide/introduction/index.html
index e7749cb1..48cec93d 100644
--- a/docs/en/gun/1.0/guide/introduction/index.html
+++ b/docs/en/gun/1.0/guide/introduction/index.html
@@ -142,6 +142,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</pre></div></div>
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.0/guide/protocols/index.html b/docs/en/gun/1.0/guide/protocols/index.html
index c594cfb0..9226cbda 100644
--- a/docs/en/gun/1.0/guide/protocols/index.html
+++ b/docs/en/gun/1.0/guide/protocols/index.html
@@ -269,6 +269,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.0/guide/start/index.html b/docs/en/gun/1.0/guide/start/index.html
index b8e6b109..aca2c8f1 100644
--- a/docs/en/gun/1.0/guide/start/index.html
+++ b/docs/en/gun/1.0/guide/start/index.html
@@ -144,6 +144,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.0/guide/websocket/index.html b/docs/en/gun/1.0/guide/websocket/index.html
index 3d2083a9..cbc694b8 100644
--- a/docs/en/gun/1.0/guide/websocket/index.html
+++ b/docs/en/gun/1.0/guide/websocket/index.html
@@ -195,6 +195,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.await/index.html b/docs/en/gun/1.0/manual/gun.await/index.html
index e90fec94..cae132b7 100644
--- a/docs/en/gun/1.0/manual/gun.await/index.html
+++ b/docs/en/gun/1.0/manual/gun.await/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.await_body/index.html b/docs/en/gun/1.0/manual/gun.await_body/index.html
index 4cc9cab7..eff351c2 100644
--- a/docs/en/gun/1.0/manual/gun.await_body/index.html
+++ b/docs/en/gun/1.0/manual/gun.await_body/index.html
@@ -159,6 +159,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.await_up/index.html b/docs/en/gun/1.0/manual/gun.await_up/index.html
index bb3bd06e..bcaebe23 100644
--- a/docs/en/gun/1.0/manual/gun.await_up/index.html
+++ b/docs/en/gun/1.0/manual/gun.await_up/index.html
@@ -151,6 +151,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.cancel/index.html b/docs/en/gun/1.0/manual/gun.cancel/index.html
index 114b1e84..6ab1ac9b 100644
--- a/docs/en/gun/1.0/manual/gun.cancel/index.html
+++ b/docs/en/gun/1.0/manual/gun.cancel/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.close/index.html b/docs/en/gun/1.0/manual/gun.close/index.html
index 6e02e3c4..0d37f044 100644
--- a/docs/en/gun/1.0/manual/gun.close/index.html
+++ b/docs/en/gun/1.0/manual/gun.close/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.data/index.html b/docs/en/gun/1.0/manual/gun.data/index.html
index f797f411..41f0b2bb 100644
--- a/docs/en/gun/1.0/manual/gun.data/index.html
+++ b/docs/en/gun/1.0/manual/gun.data/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.delete/index.html b/docs/en/gun/1.0/manual/gun.delete/index.html
index 1ebe2473..dbacc363 100644
--- a/docs/en/gun/1.0/manual/gun.delete/index.html
+++ b/docs/en/gun/1.0/manual/gun.delete/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.flush/index.html b/docs/en/gun/1.0/manual/gun.flush/index.html
index a8c6d81c..cb010353 100644
--- a/docs/en/gun/1.0/manual/gun.flush/index.html
+++ b/docs/en/gun/1.0/manual/gun.flush/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.get/index.html b/docs/en/gun/1.0/manual/gun.get/index.html
index 7c05e2dc..a748376c 100644
--- a/docs/en/gun/1.0/manual/gun.get/index.html
+++ b/docs/en/gun/1.0/manual/gun.get/index.html
@@ -160,6 +160,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.head/index.html b/docs/en/gun/1.0/manual/gun.head/index.html
index 7905d8da..fb78ef16 100644
--- a/docs/en/gun/1.0/manual/gun.head/index.html
+++ b/docs/en/gun/1.0/manual/gun.head/index.html
@@ -162,6 +162,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.info/index.html b/docs/en/gun/1.0/manual/gun.info/index.html
index 1574080b..dd1fd433 100644
--- a/docs/en/gun/1.0/manual/gun.info/index.html
+++ b/docs/en/gun/1.0/manual/gun.info/index.html
@@ -133,6 +133,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.open/index.html b/docs/en/gun/1.0/manual/gun.open/index.html
index 8964d71e..44558ec4 100644
--- a/docs/en/gun/1.0/manual/gun.open/index.html
+++ b/docs/en/gun/1.0/manual/gun.open/index.html
@@ -153,6 +153,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.open_unix/index.html b/docs/en/gun/1.0/manual/gun.open_unix/index.html
index 56c54248..608ce9e4 100644
--- a/docs/en/gun/1.0/manual/gun.open_unix/index.html
+++ b/docs/en/gun/1.0/manual/gun.open_unix/index.html
@@ -141,6 +141,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.options/index.html b/docs/en/gun/1.0/manual/gun.options/index.html
index 863feed7..16f06167 100644
--- a/docs/en/gun/1.0/manual/gun.options/index.html
+++ b/docs/en/gun/1.0/manual/gun.options/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.patch/index.html b/docs/en/gun/1.0/manual/gun.patch/index.html
index faa86d7a..b915ec27 100644
--- a/docs/en/gun/1.0/manual/gun.patch/index.html
+++ b/docs/en/gun/1.0/manual/gun.patch/index.html
@@ -180,6 +180,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.post/index.html b/docs/en/gun/1.0/manual/gun.post/index.html
index c7bb5f64..c6dc76f6 100644
--- a/docs/en/gun/1.0/manual/gun.post/index.html
+++ b/docs/en/gun/1.0/manual/gun.post/index.html
@@ -178,6 +178,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.put/index.html b/docs/en/gun/1.0/manual/gun.put/index.html
index c7ae5ba8..fbcc9882 100644
--- a/docs/en/gun/1.0/manual/gun.put/index.html
+++ b/docs/en/gun/1.0/manual/gun.put/index.html
@@ -178,6 +178,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.request/index.html b/docs/en/gun/1.0/manual/gun.request/index.html
index 0d73bf28..a73617d9 100644
--- a/docs/en/gun/1.0/manual/gun.request/index.html
+++ b/docs/en/gun/1.0/manual/gun.request/index.html
@@ -164,6 +164,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.ws_send/index.html b/docs/en/gun/1.0/manual/gun.ws_send/index.html
index 6f7c575f..6da8dad9 100644
--- a/docs/en/gun/1.0/manual/gun.ws_send/index.html
+++ b/docs/en/gun/1.0/manual/gun.ws_send/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun.ws_upgrade/index.html b/docs/en/gun/1.0/manual/gun.ws_upgrade/index.html
index 11a6a3ad..e96b3d6f 100644
--- a/docs/en/gun/1.0/manual/gun.ws_upgrade/index.html
+++ b/docs/en/gun/1.0/manual/gun.ws_upgrade/index.html
@@ -170,6 +170,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun/index.html b/docs/en/gun/1.0/manual/gun/index.html
index 295daa52..6dcf29f4 100644
--- a/docs/en/gun/1.0/manual/gun/index.html
+++ b/docs/en/gun/1.0/manual/gun/index.html
@@ -308,6 +308,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_app/index.html b/docs/en/gun/1.0/manual/gun_app/index.html
index 364069c8..934f97e6 100644
--- a/docs/en/gun/1.0/manual/gun_app/index.html
+++ b/docs/en/gun/1.0/manual/gun_app/index.html
@@ -122,6 +122,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_data/index.html b/docs/en/gun/1.0/manual/gun_data/index.html
index bfd96bb5..a10d3e6a 100644
--- a/docs/en/gun/1.0/manual/gun_data/index.html
+++ b/docs/en/gun/1.0/manual/gun_data/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_down/index.html b/docs/en/gun/1.0/manual/gun_down/index.html
index df1ac7a6..be321d3b 100644
--- a/docs/en/gun/1.0/manual/gun_down/index.html
+++ b/docs/en/gun/1.0/manual/gun_down/index.html
@@ -152,6 +152,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_error/index.html b/docs/en/gun/1.0/manual/gun_error/index.html
index a01d149d..71f40143 100644
--- a/docs/en/gun/1.0/manual/gun_error/index.html
+++ b/docs/en/gun/1.0/manual/gun_error/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_inform/index.html b/docs/en/gun/1.0/manual/gun_inform/index.html
index f0d01ed8..8d805011 100644
--- a/docs/en/gun/1.0/manual/gun_inform/index.html
+++ b/docs/en/gun/1.0/manual/gun_inform/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_push/index.html b/docs/en/gun/1.0/manual/gun_push/index.html
index f45e68de..6ad9cd19 100644
--- a/docs/en/gun/1.0/manual/gun_push/index.html
+++ b/docs/en/gun/1.0/manual/gun_push/index.html
@@ -165,6 +165,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_response/index.html b/docs/en/gun/1.0/manual/gun_response/index.html
index ac02fefb..f7a8d84a 100644
--- a/docs/en/gun/1.0/manual/gun_response/index.html
+++ b/docs/en/gun/1.0/manual/gun_response/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_trailers/index.html b/docs/en/gun/1.0/manual/gun_trailers/index.html
index a0efa6c2..a0165c66 100644
--- a/docs/en/gun/1.0/manual/gun_trailers/index.html
+++ b/docs/en/gun/1.0/manual/gun_trailers/index.html
@@ -140,6 +140,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_up/index.html b/docs/en/gun/1.0/manual/gun_up/index.html
index 3ad67af1..22a6479d 100644
--- a/docs/en/gun/1.0/manual/gun_up/index.html
+++ b/docs/en/gun/1.0/manual/gun_up/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_upgrade/index.html b/docs/en/gun/1.0/manual/gun_upgrade/index.html
index b2974898..554d7940 100644
--- a/docs/en/gun/1.0/manual/gun_upgrade/index.html
+++ b/docs/en/gun/1.0/manual/gun_upgrade/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/gun_ws/index.html b/docs/en/gun/1.0/manual/gun_ws/index.html
index 47835d91..d28d32ca 100644
--- a/docs/en/gun/1.0/manual/gun_ws/index.html
+++ b/docs/en/gun/1.0/manual/gun_ws/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.0/manual/index.html b/docs/en/gun/1.0/manual/index.html
index 68654b5c..80e20125 100644
--- a/docs/en/gun/1.0/manual/index.html
+++ b/docs/en/gun/1.0/manual/index.html
@@ -122,6 +122,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/guide/connect/index.html b/docs/en/gun/1.1/guide/connect/index.html
index 4f5519a7..bc85eb3c 100644
--- a/docs/en/gun/1.1/guide/connect/index.html
+++ b/docs/en/gun/1.1/guide/connect/index.html
@@ -215,6 +215,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.1/guide/http/index.html b/docs/en/gun/1.1/guide/http/index.html
index c9365d50..e3ec79ea 100644
--- a/docs/en/gun/1.1/guide/http/index.html
+++ b/docs/en/gun/1.1/guide/http/index.html
@@ -390,6 +390,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.1/guide/index.html b/docs/en/gun/1.1/guide/index.html
index b18cb347..a92e3144 100644
--- a/docs/en/gun/1.1/guide/index.html
+++ b/docs/en/gun/1.1/guide/index.html
@@ -114,6 +114,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.1/guide/introduction/index.html b/docs/en/gun/1.1/guide/introduction/index.html
index 9410d163..366c1347 100644
--- a/docs/en/gun/1.1/guide/introduction/index.html
+++ b/docs/en/gun/1.1/guide/introduction/index.html
@@ -142,6 +142,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</pre></div></div>
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.1/guide/migrating_from_1.0/index.html b/docs/en/gun/1.1/guide/migrating_from_1.0/index.html
index d9cd0f6e..3914b882 100644
--- a/docs/en/gun/1.1/guide/migrating_from_1.0/index.html
+++ b/docs/en/gun/1.1/guide/migrating_from_1.0/index.html
@@ -127,6 +127,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.1/guide/protocols/index.html b/docs/en/gun/1.1/guide/protocols/index.html
index d01e404a..41ca53ae 100644
--- a/docs/en/gun/1.1/guide/protocols/index.html
+++ b/docs/en/gun/1.1/guide/protocols/index.html
@@ -269,6 +269,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.1/guide/start/index.html b/docs/en/gun/1.1/guide/start/index.html
index 65ec6c54..3ba54fbb 100644
--- a/docs/en/gun/1.1/guide/start/index.html
+++ b/docs/en/gun/1.1/guide/start/index.html
@@ -144,6 +144,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.1/guide/websocket/index.html b/docs/en/gun/1.1/guide/websocket/index.html
index 9247dfec..4ee33c2a 100644
--- a/docs/en/gun/1.1/guide/websocket/index.html
+++ b/docs/en/gun/1.1/guide/websocket/index.html
@@ -199,6 +199,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.await/index.html b/docs/en/gun/1.1/manual/gun.await/index.html
index 651bb059..153354c6 100644
--- a/docs/en/gun/1.1/manual/gun.await/index.html
+++ b/docs/en/gun/1.1/manual/gun.await/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.await_body/index.html b/docs/en/gun/1.1/manual/gun.await_body/index.html
index 8cf45022..42b540d1 100644
--- a/docs/en/gun/1.1/manual/gun.await_body/index.html
+++ b/docs/en/gun/1.1/manual/gun.await_body/index.html
@@ -159,6 +159,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.await_up/index.html b/docs/en/gun/1.1/manual/gun.await_up/index.html
index 82272568..2b18d802 100644
--- a/docs/en/gun/1.1/manual/gun.await_up/index.html
+++ b/docs/en/gun/1.1/manual/gun.await_up/index.html
@@ -151,6 +151,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.cancel/index.html b/docs/en/gun/1.1/manual/gun.cancel/index.html
index 8e9e20df..454aef14 100644
--- a/docs/en/gun/1.1/manual/gun.cancel/index.html
+++ b/docs/en/gun/1.1/manual/gun.cancel/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.close/index.html b/docs/en/gun/1.1/manual/gun.close/index.html
index ddfdaec1..f132b019 100644
--- a/docs/en/gun/1.1/manual/gun.close/index.html
+++ b/docs/en/gun/1.1/manual/gun.close/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.data/index.html b/docs/en/gun/1.1/manual/gun.data/index.html
index f606872a..7ba62778 100644
--- a/docs/en/gun/1.1/manual/gun.data/index.html
+++ b/docs/en/gun/1.1/manual/gun.data/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.delete/index.html b/docs/en/gun/1.1/manual/gun.delete/index.html
index f0ea2f43..de802836 100644
--- a/docs/en/gun/1.1/manual/gun.delete/index.html
+++ b/docs/en/gun/1.1/manual/gun.delete/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.flush/index.html b/docs/en/gun/1.1/manual/gun.flush/index.html
index ac226bb2..806b051a 100644
--- a/docs/en/gun/1.1/manual/gun.flush/index.html
+++ b/docs/en/gun/1.1/manual/gun.flush/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.get/index.html b/docs/en/gun/1.1/manual/gun.get/index.html
index 29e1ce13..909001b9 100644
--- a/docs/en/gun/1.1/manual/gun.get/index.html
+++ b/docs/en/gun/1.1/manual/gun.get/index.html
@@ -160,6 +160,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.head/index.html b/docs/en/gun/1.1/manual/gun.head/index.html
index a312d0b7..02150fd6 100644
--- a/docs/en/gun/1.1/manual/gun.head/index.html
+++ b/docs/en/gun/1.1/manual/gun.head/index.html
@@ -162,6 +162,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.info/index.html b/docs/en/gun/1.1/manual/gun.info/index.html
index 8532e966..509a3221 100644
--- a/docs/en/gun/1.1/manual/gun.info/index.html
+++ b/docs/en/gun/1.1/manual/gun.info/index.html
@@ -133,6 +133,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.open/index.html b/docs/en/gun/1.1/manual/gun.open/index.html
index e86ca70d..a9b24f5e 100644
--- a/docs/en/gun/1.1/manual/gun.open/index.html
+++ b/docs/en/gun/1.1/manual/gun.open/index.html
@@ -153,6 +153,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.open_unix/index.html b/docs/en/gun/1.1/manual/gun.open_unix/index.html
index 596c13e0..e695ceda 100644
--- a/docs/en/gun/1.1/manual/gun.open_unix/index.html
+++ b/docs/en/gun/1.1/manual/gun.open_unix/index.html
@@ -141,6 +141,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.options/index.html b/docs/en/gun/1.1/manual/gun.options/index.html
index abb09822..32aedccd 100644
--- a/docs/en/gun/1.1/manual/gun.options/index.html
+++ b/docs/en/gun/1.1/manual/gun.options/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.patch/index.html b/docs/en/gun/1.1/manual/gun.patch/index.html
index f7d98c3c..ece5a056 100644
--- a/docs/en/gun/1.1/manual/gun.patch/index.html
+++ b/docs/en/gun/1.1/manual/gun.patch/index.html
@@ -180,6 +180,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.post/index.html b/docs/en/gun/1.1/manual/gun.post/index.html
index 362b7973..eafd151c 100644
--- a/docs/en/gun/1.1/manual/gun.post/index.html
+++ b/docs/en/gun/1.1/manual/gun.post/index.html
@@ -178,6 +178,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.put/index.html b/docs/en/gun/1.1/manual/gun.put/index.html
index 6148b8d9..315c1897 100644
--- a/docs/en/gun/1.1/manual/gun.put/index.html
+++ b/docs/en/gun/1.1/manual/gun.put/index.html
@@ -178,6 +178,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.request/index.html b/docs/en/gun/1.1/manual/gun.request/index.html
index 3ff8675e..d3c2889a 100644
--- a/docs/en/gun/1.1/manual/gun.request/index.html
+++ b/docs/en/gun/1.1/manual/gun.request/index.html
@@ -164,6 +164,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.ws_send/index.html b/docs/en/gun/1.1/manual/gun.ws_send/index.html
index be9bbd36..41fbf158 100644
--- a/docs/en/gun/1.1/manual/gun.ws_send/index.html
+++ b/docs/en/gun/1.1/manual/gun.ws_send/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun.ws_upgrade/index.html b/docs/en/gun/1.1/manual/gun.ws_upgrade/index.html
index e7c3a9ba..bdd49817 100644
--- a/docs/en/gun/1.1/manual/gun.ws_upgrade/index.html
+++ b/docs/en/gun/1.1/manual/gun.ws_upgrade/index.html
@@ -170,6 +170,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun/index.html b/docs/en/gun/1.1/manual/gun/index.html
index 10c26dde..35e2edc5 100644
--- a/docs/en/gun/1.1/manual/gun/index.html
+++ b/docs/en/gun/1.1/manual/gun/index.html
@@ -308,6 +308,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_app/index.html b/docs/en/gun/1.1/manual/gun_app/index.html
index b3fe5ac7..c0b32a8e 100644
--- a/docs/en/gun/1.1/manual/gun_app/index.html
+++ b/docs/en/gun/1.1/manual/gun_app/index.html
@@ -122,6 +122,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_data/index.html b/docs/en/gun/1.1/manual/gun_data/index.html
index 9fc5311a..df347535 100644
--- a/docs/en/gun/1.1/manual/gun_data/index.html
+++ b/docs/en/gun/1.1/manual/gun_data/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_down/index.html b/docs/en/gun/1.1/manual/gun_down/index.html
index 320c6c51..8a58e20d 100644
--- a/docs/en/gun/1.1/manual/gun_down/index.html
+++ b/docs/en/gun/1.1/manual/gun_down/index.html
@@ -152,6 +152,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_error/index.html b/docs/en/gun/1.1/manual/gun_error/index.html
index d6867d60..0927b4e5 100644
--- a/docs/en/gun/1.1/manual/gun_error/index.html
+++ b/docs/en/gun/1.1/manual/gun_error/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_inform/index.html b/docs/en/gun/1.1/manual/gun_inform/index.html
index 244103b7..d1ccb1a1 100644
--- a/docs/en/gun/1.1/manual/gun_inform/index.html
+++ b/docs/en/gun/1.1/manual/gun_inform/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_push/index.html b/docs/en/gun/1.1/manual/gun_push/index.html
index 59f1fba7..5b06c010 100644
--- a/docs/en/gun/1.1/manual/gun_push/index.html
+++ b/docs/en/gun/1.1/manual/gun_push/index.html
@@ -165,6 +165,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_response/index.html b/docs/en/gun/1.1/manual/gun_response/index.html
index e4f84d91..6506211a 100644
--- a/docs/en/gun/1.1/manual/gun_response/index.html
+++ b/docs/en/gun/1.1/manual/gun_response/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_trailers/index.html b/docs/en/gun/1.1/manual/gun_trailers/index.html
index f18010c1..7c8a4d19 100644
--- a/docs/en/gun/1.1/manual/gun_trailers/index.html
+++ b/docs/en/gun/1.1/manual/gun_trailers/index.html
@@ -140,6 +140,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_up/index.html b/docs/en/gun/1.1/manual/gun_up/index.html
index 95ba7336..f51a5c3d 100644
--- a/docs/en/gun/1.1/manual/gun_up/index.html
+++ b/docs/en/gun/1.1/manual/gun_up/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_upgrade/index.html b/docs/en/gun/1.1/manual/gun_upgrade/index.html
index 44b061cc..f0e589a4 100644
--- a/docs/en/gun/1.1/manual/gun_upgrade/index.html
+++ b/docs/en/gun/1.1/manual/gun_upgrade/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/gun_ws/index.html b/docs/en/gun/1.1/manual/gun_ws/index.html
index 7e798393..dc2ce714 100644
--- a/docs/en/gun/1.1/manual/gun_ws/index.html
+++ b/docs/en/gun/1.1/manual/gun_ws/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.1/manual/index.html b/docs/en/gun/1.1/manual/index.html
index 3bb4e898..cba6872a 100644
--- a/docs/en/gun/1.1/manual/index.html
+++ b/docs/en/gun/1.1/manual/index.html
@@ -122,6 +122,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/connect/index.html b/docs/en/gun/1.2/guide/connect/index.html
index c9f806ac..16176b9a 100644
--- a/docs/en/gun/1.2/guide/connect/index.html
+++ b/docs/en/gun/1.2/guide/connect/index.html
@@ -215,6 +215,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/http/index.html b/docs/en/gun/1.2/guide/http/index.html
index c300298c..95d1ed8d 100644
--- a/docs/en/gun/1.2/guide/http/index.html
+++ b/docs/en/gun/1.2/guide/http/index.html
@@ -390,6 +390,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/index.html b/docs/en/gun/1.2/guide/index.html
index 8eebd780..3887f9a5 100644
--- a/docs/en/gun/1.2/guide/index.html
+++ b/docs/en/gun/1.2/guide/index.html
@@ -116,6 +116,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/introduction/index.html b/docs/en/gun/1.2/guide/introduction/index.html
index b9e64d9b..bede611b 100644
--- a/docs/en/gun/1.2/guide/introduction/index.html
+++ b/docs/en/gun/1.2/guide/introduction/index.html
@@ -142,6 +142,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</pre></div></div>
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/migrating_from_1.0/index.html b/docs/en/gun/1.2/guide/migrating_from_1.0/index.html
index 3cf21d25..81fa1547 100644
--- a/docs/en/gun/1.2/guide/migrating_from_1.0/index.html
+++ b/docs/en/gun/1.2/guide/migrating_from_1.0/index.html
@@ -127,6 +127,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/migrating_from_1.1/index.html b/docs/en/gun/1.2/guide/migrating_from_1.1/index.html
index b5e971ec..0d2bc5c7 100644
--- a/docs/en/gun/1.2/guide/migrating_from_1.1/index.html
+++ b/docs/en/gun/1.2/guide/migrating_from_1.1/index.html
@@ -133,6 +133,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/protocols/index.html b/docs/en/gun/1.2/guide/protocols/index.html
index 1b2ffb5b..35a6e707 100644
--- a/docs/en/gun/1.2/guide/protocols/index.html
+++ b/docs/en/gun/1.2/guide/protocols/index.html
@@ -269,6 +269,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/start/index.html b/docs/en/gun/1.2/guide/start/index.html
index 1ea556c6..cf15caa8 100644
--- a/docs/en/gun/1.2/guide/start/index.html
+++ b/docs/en/gun/1.2/guide/start/index.html
@@ -144,6 +144,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/guide/websocket/index.html b/docs/en/gun/1.2/guide/websocket/index.html
index fbfb8fe5..91697141 100644
--- a/docs/en/gun/1.2/guide/websocket/index.html
+++ b/docs/en/gun/1.2/guide/websocket/index.html
@@ -199,6 +199,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.await/index.html b/docs/en/gun/1.2/manual/gun.await/index.html
index 35bd4418..def534ba 100644
--- a/docs/en/gun/1.2/manual/gun.await/index.html
+++ b/docs/en/gun/1.2/manual/gun.await/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.await_body/index.html b/docs/en/gun/1.2/manual/gun.await_body/index.html
index 5dfeb05f..7f728737 100644
--- a/docs/en/gun/1.2/manual/gun.await_body/index.html
+++ b/docs/en/gun/1.2/manual/gun.await_body/index.html
@@ -159,6 +159,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.await_up/index.html b/docs/en/gun/1.2/manual/gun.await_up/index.html
index e6e32889..cbfa73c8 100644
--- a/docs/en/gun/1.2/manual/gun.await_up/index.html
+++ b/docs/en/gun/1.2/manual/gun.await_up/index.html
@@ -151,6 +151,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.cancel/index.html b/docs/en/gun/1.2/manual/gun.cancel/index.html
index c971b5b5..ca00a4c4 100644
--- a/docs/en/gun/1.2/manual/gun.cancel/index.html
+++ b/docs/en/gun/1.2/manual/gun.cancel/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.close/index.html b/docs/en/gun/1.2/manual/gun.close/index.html
index a5f97a3d..2251d891 100644
--- a/docs/en/gun/1.2/manual/gun.close/index.html
+++ b/docs/en/gun/1.2/manual/gun.close/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.connect/index.html b/docs/en/gun/1.2/manual/gun.connect/index.html
index a8b9b363..cbe4941c 100644
--- a/docs/en/gun/1.2/manual/gun.connect/index.html
+++ b/docs/en/gun/1.2/manual/gun.connect/index.html
@@ -190,6 +190,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.data/index.html b/docs/en/gun/1.2/manual/gun.data/index.html
index 62d4d21c..05499417 100644
--- a/docs/en/gun/1.2/manual/gun.data/index.html
+++ b/docs/en/gun/1.2/manual/gun.data/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.delete/index.html b/docs/en/gun/1.2/manual/gun.delete/index.html
index 59dd0ed6..7511da92 100644
--- a/docs/en/gun/1.2/manual/gun.delete/index.html
+++ b/docs/en/gun/1.2/manual/gun.delete/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.flush/index.html b/docs/en/gun/1.2/manual/gun.flush/index.html
index ef263146..7d0dee04 100644
--- a/docs/en/gun/1.2/manual/gun.flush/index.html
+++ b/docs/en/gun/1.2/manual/gun.flush/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.get/index.html b/docs/en/gun/1.2/manual/gun.get/index.html
index b38e5091..bd6d00d8 100644
--- a/docs/en/gun/1.2/manual/gun.get/index.html
+++ b/docs/en/gun/1.2/manual/gun.get/index.html
@@ -160,6 +160,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.head/index.html b/docs/en/gun/1.2/manual/gun.head/index.html
index 262e44eb..e70235c9 100644
--- a/docs/en/gun/1.2/manual/gun.head/index.html
+++ b/docs/en/gun/1.2/manual/gun.head/index.html
@@ -162,6 +162,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.info/index.html b/docs/en/gun/1.2/manual/gun.info/index.html
index 45f544ab..c1f45048 100644
--- a/docs/en/gun/1.2/manual/gun.info/index.html
+++ b/docs/en/gun/1.2/manual/gun.info/index.html
@@ -133,6 +133,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.open/index.html b/docs/en/gun/1.2/manual/gun.open/index.html
index 613f88d5..7ff3e950 100644
--- a/docs/en/gun/1.2/manual/gun.open/index.html
+++ b/docs/en/gun/1.2/manual/gun.open/index.html
@@ -153,6 +153,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.open_unix/index.html b/docs/en/gun/1.2/manual/gun.open_unix/index.html
index 43ba0d84..5760a138 100644
--- a/docs/en/gun/1.2/manual/gun.open_unix/index.html
+++ b/docs/en/gun/1.2/manual/gun.open_unix/index.html
@@ -141,6 +141,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.options/index.html b/docs/en/gun/1.2/manual/gun.options/index.html
index a58c6ecb..290d80b8 100644
--- a/docs/en/gun/1.2/manual/gun.options/index.html
+++ b/docs/en/gun/1.2/manual/gun.options/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.patch/index.html b/docs/en/gun/1.2/manual/gun.patch/index.html
index 3a1a72d1..559bd239 100644
--- a/docs/en/gun/1.2/manual/gun.patch/index.html
+++ b/docs/en/gun/1.2/manual/gun.patch/index.html
@@ -180,6 +180,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.post/index.html b/docs/en/gun/1.2/manual/gun.post/index.html
index 336be965..6eb04147 100644
--- a/docs/en/gun/1.2/manual/gun.post/index.html
+++ b/docs/en/gun/1.2/manual/gun.post/index.html
@@ -178,6 +178,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.put/index.html b/docs/en/gun/1.2/manual/gun.put/index.html
index 9d1a816a..f16732c0 100644
--- a/docs/en/gun/1.2/manual/gun.put/index.html
+++ b/docs/en/gun/1.2/manual/gun.put/index.html
@@ -178,6 +178,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.request/index.html b/docs/en/gun/1.2/manual/gun.request/index.html
index 541e3865..867df81a 100644
--- a/docs/en/gun/1.2/manual/gun.request/index.html
+++ b/docs/en/gun/1.2/manual/gun.request/index.html
@@ -164,6 +164,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.ws_send/index.html b/docs/en/gun/1.2/manual/gun.ws_send/index.html
index 7aa0e504..d66e3f9e 100644
--- a/docs/en/gun/1.2/manual/gun.ws_send/index.html
+++ b/docs/en/gun/1.2/manual/gun.ws_send/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun.ws_upgrade/index.html b/docs/en/gun/1.2/manual/gun.ws_upgrade/index.html
index d65ca896..090271d6 100644
--- a/docs/en/gun/1.2/manual/gun.ws_upgrade/index.html
+++ b/docs/en/gun/1.2/manual/gun.ws_upgrade/index.html
@@ -170,6 +170,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun/index.html b/docs/en/gun/1.2/manual/gun/index.html
index 149a1391..877eeb59 100644
--- a/docs/en/gun/1.2/manual/gun/index.html
+++ b/docs/en/gun/1.2/manual/gun/index.html
@@ -356,6 +356,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_app/index.html b/docs/en/gun/1.2/manual/gun_app/index.html
index 616b00f7..1e561843 100644
--- a/docs/en/gun/1.2/manual/gun_app/index.html
+++ b/docs/en/gun/1.2/manual/gun_app/index.html
@@ -122,6 +122,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_data/index.html b/docs/en/gun/1.2/manual/gun_data/index.html
index f3f0b3e8..6250b40e 100644
--- a/docs/en/gun/1.2/manual/gun_data/index.html
+++ b/docs/en/gun/1.2/manual/gun_data/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_down/index.html b/docs/en/gun/1.2/manual/gun_down/index.html
index df35f629..138ca09d 100644
--- a/docs/en/gun/1.2/manual/gun_down/index.html
+++ b/docs/en/gun/1.2/manual/gun_down/index.html
@@ -152,6 +152,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_error/index.html b/docs/en/gun/1.2/manual/gun_error/index.html
index 01b7a02c..7a520e89 100644
--- a/docs/en/gun/1.2/manual/gun_error/index.html
+++ b/docs/en/gun/1.2/manual/gun_error/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_inform/index.html b/docs/en/gun/1.2/manual/gun_inform/index.html
index d9636a71..57b3e77c 100644
--- a/docs/en/gun/1.2/manual/gun_inform/index.html
+++ b/docs/en/gun/1.2/manual/gun_inform/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_push/index.html b/docs/en/gun/1.2/manual/gun_push/index.html
index 05e643cc..30e2773c 100644
--- a/docs/en/gun/1.2/manual/gun_push/index.html
+++ b/docs/en/gun/1.2/manual/gun_push/index.html
@@ -165,6 +165,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_response/index.html b/docs/en/gun/1.2/manual/gun_response/index.html
index 79b03f29..83f075a5 100644
--- a/docs/en/gun/1.2/manual/gun_response/index.html
+++ b/docs/en/gun/1.2/manual/gun_response/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_trailers/index.html b/docs/en/gun/1.2/manual/gun_trailers/index.html
index b8f01a5d..035b8a5c 100644
--- a/docs/en/gun/1.2/manual/gun_trailers/index.html
+++ b/docs/en/gun/1.2/manual/gun_trailers/index.html
@@ -140,6 +140,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_up/index.html b/docs/en/gun/1.2/manual/gun_up/index.html
index 636e5d59..b6439876 100644
--- a/docs/en/gun/1.2/manual/gun_up/index.html
+++ b/docs/en/gun/1.2/manual/gun_up/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_upgrade/index.html b/docs/en/gun/1.2/manual/gun_upgrade/index.html
index db941a54..f65b766b 100644
--- a/docs/en/gun/1.2/manual/gun_upgrade/index.html
+++ b/docs/en/gun/1.2/manual/gun_upgrade/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/gun_ws/index.html b/docs/en/gun/1.2/manual/gun_ws/index.html
index 3b1b6511..01ec319c 100644
--- a/docs/en/gun/1.2/manual/gun_ws/index.html
+++ b/docs/en/gun/1.2/manual/gun_ws/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.2/manual/index.html b/docs/en/gun/1.2/manual/index.html
index 88974967..86e8d7df 100644
--- a/docs/en/gun/1.2/manual/index.html
+++ b/docs/en/gun/1.2/manual/index.html
@@ -122,6 +122,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/connect/index.html b/docs/en/gun/1.3/guide/connect/index.html
index 4623177a..01be495e 100644
--- a/docs/en/gun/1.3/guide/connect/index.html
+++ b/docs/en/gun/1.3/guide/connect/index.html
@@ -215,6 +215,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/http/index.html b/docs/en/gun/1.3/guide/http/index.html
index 4f34020e..fd2b31e4 100644
--- a/docs/en/gun/1.3/guide/http/index.html
+++ b/docs/en/gun/1.3/guide/http/index.html
@@ -390,6 +390,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/index.html b/docs/en/gun/1.3/guide/index.html
index 22225274..daf135b7 100644
--- a/docs/en/gun/1.3/guide/index.html
+++ b/docs/en/gun/1.3/guide/index.html
@@ -120,6 +120,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/introduction/index.html b/docs/en/gun/1.3/guide/introduction/index.html
index 7b8ee38e..cc45941f 100644
--- a/docs/en/gun/1.3/guide/introduction/index.html
+++ b/docs/en/gun/1.3/guide/introduction/index.html
@@ -142,6 +142,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</pre></div></div>
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/migrating_from_1.0/index.html b/docs/en/gun/1.3/guide/migrating_from_1.0/index.html
index 89496439..263dc79c 100644
--- a/docs/en/gun/1.3/guide/migrating_from_1.0/index.html
+++ b/docs/en/gun/1.3/guide/migrating_from_1.0/index.html
@@ -127,6 +127,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/migrating_from_1.1/index.html b/docs/en/gun/1.3/guide/migrating_from_1.1/index.html
index 177bd479..7b046768 100644
--- a/docs/en/gun/1.3/guide/migrating_from_1.1/index.html
+++ b/docs/en/gun/1.3/guide/migrating_from_1.1/index.html
@@ -133,6 +133,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</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 b57e792f..3f299b9f 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
@@ -143,6 +143,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
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
index 76cd092b..a60879df 100644
--- 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
@@ -124,6 +124,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/protocols/index.html b/docs/en/gun/1.3/guide/protocols/index.html
index 3434a21c..ffa5e97d 100644
--- a/docs/en/gun/1.3/guide/protocols/index.html
+++ b/docs/en/gun/1.3/guide/protocols/index.html
@@ -269,6 +269,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/start/index.html b/docs/en/gun/1.3/guide/start/index.html
index 9ab8ce4e..6d6a4a88 100644
--- a/docs/en/gun/1.3/guide/start/index.html
+++ b/docs/en/gun/1.3/guide/start/index.html
@@ -144,6 +144,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/guide/websocket/index.html b/docs/en/gun/1.3/guide/websocket/index.html
index 28119678..77d97e43 100644
--- a/docs/en/gun/1.3/guide/websocket/index.html
+++ b/docs/en/gun/1.3/guide/websocket/index.html
@@ -209,6 +209,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.await/index.html b/docs/en/gun/1.3/manual/gun.await/index.html
index 1b152a50..a7767138 100644
--- a/docs/en/gun/1.3/manual/gun.await/index.html
+++ b/docs/en/gun/1.3/manual/gun.await/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.await_body/index.html b/docs/en/gun/1.3/manual/gun.await_body/index.html
index 8d9254ae..922117f5 100644
--- a/docs/en/gun/1.3/manual/gun.await_body/index.html
+++ b/docs/en/gun/1.3/manual/gun.await_body/index.html
@@ -159,6 +159,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.await_up/index.html b/docs/en/gun/1.3/manual/gun.await_up/index.html
index b30ce834..06e5f557 100644
--- a/docs/en/gun/1.3/manual/gun.await_up/index.html
+++ b/docs/en/gun/1.3/manual/gun.await_up/index.html
@@ -151,6 +151,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.cancel/index.html b/docs/en/gun/1.3/manual/gun.cancel/index.html
index 8dd9b60d..1d9c2fe2 100644
--- a/docs/en/gun/1.3/manual/gun.cancel/index.html
+++ b/docs/en/gun/1.3/manual/gun.cancel/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.close/index.html b/docs/en/gun/1.3/manual/gun.close/index.html
index ea4d8088..da3b2b5d 100644
--- a/docs/en/gun/1.3/manual/gun.close/index.html
+++ b/docs/en/gun/1.3/manual/gun.close/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.connect/index.html b/docs/en/gun/1.3/manual/gun.connect/index.html
index 6b5bff42..47fb10c2 100644
--- a/docs/en/gun/1.3/manual/gun.connect/index.html
+++ b/docs/en/gun/1.3/manual/gun.connect/index.html
@@ -190,6 +190,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.data/index.html b/docs/en/gun/1.3/manual/gun.data/index.html
index c90288e6..91d55897 100644
--- a/docs/en/gun/1.3/manual/gun.data/index.html
+++ b/docs/en/gun/1.3/manual/gun.data/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.delete/index.html b/docs/en/gun/1.3/manual/gun.delete/index.html
index 2825f5f2..78a967f9 100644
--- a/docs/en/gun/1.3/manual/gun.delete/index.html
+++ b/docs/en/gun/1.3/manual/gun.delete/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.flush/index.html b/docs/en/gun/1.3/manual/gun.flush/index.html
index e7d3399c..c581e5f3 100644
--- a/docs/en/gun/1.3/manual/gun.flush/index.html
+++ b/docs/en/gun/1.3/manual/gun.flush/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.get/index.html b/docs/en/gun/1.3/manual/gun.get/index.html
index 7800e31f..9a82cfe2 100644
--- a/docs/en/gun/1.3/manual/gun.get/index.html
+++ b/docs/en/gun/1.3/manual/gun.get/index.html
@@ -160,6 +160,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.head/index.html b/docs/en/gun/1.3/manual/gun.head/index.html
index 7bf23809..b4922f30 100644
--- a/docs/en/gun/1.3/manual/gun.head/index.html
+++ b/docs/en/gun/1.3/manual/gun.head/index.html
@@ -162,6 +162,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.info/index.html b/docs/en/gun/1.3/manual/gun.info/index.html
index c50cbf21..b23987fa 100644
--- a/docs/en/gun/1.3/manual/gun.info/index.html
+++ b/docs/en/gun/1.3/manual/gun.info/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.open/index.html b/docs/en/gun/1.3/manual/gun.open/index.html
index a55d7b34..993b7317 100644
--- a/docs/en/gun/1.3/manual/gun.open/index.html
+++ b/docs/en/gun/1.3/manual/gun.open/index.html
@@ -153,6 +153,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.open_unix/index.html b/docs/en/gun/1.3/manual/gun.open_unix/index.html
index 8f6d5f35..8a874e56 100644
--- a/docs/en/gun/1.3/manual/gun.open_unix/index.html
+++ b/docs/en/gun/1.3/manual/gun.open_unix/index.html
@@ -141,6 +141,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.options/index.html b/docs/en/gun/1.3/manual/gun.options/index.html
index 6e17fbb8..db8dba0a 100644
--- a/docs/en/gun/1.3/manual/gun.options/index.html
+++ b/docs/en/gun/1.3/manual/gun.options/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.patch/index.html b/docs/en/gun/1.3/manual/gun.patch/index.html
index 077f1116..c046b5f0 100644
--- a/docs/en/gun/1.3/manual/gun.patch/index.html
+++ b/docs/en/gun/1.3/manual/gun.patch/index.html
@@ -180,6 +180,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.post/index.html b/docs/en/gun/1.3/manual/gun.post/index.html
index 17c50bc1..605be0b0 100644
--- a/docs/en/gun/1.3/manual/gun.post/index.html
+++ b/docs/en/gun/1.3/manual/gun.post/index.html
@@ -178,6 +178,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.put/index.html b/docs/en/gun/1.3/manual/gun.put/index.html
index 9974b335..cf2b5fc8 100644
--- a/docs/en/gun/1.3/manual/gun.put/index.html
+++ b/docs/en/gun/1.3/manual/gun.put/index.html
@@ -178,6 +178,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.request/index.html b/docs/en/gun/1.3/manual/gun.request/index.html
index 49488969..dd9203e0 100644
--- a/docs/en/gun/1.3/manual/gun.request/index.html
+++ b/docs/en/gun/1.3/manual/gun.request/index.html
@@ -164,6 +164,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.ws_send/index.html b/docs/en/gun/1.3/manual/gun.ws_send/index.html
index 11d0e8a4..759688a7 100644
--- a/docs/en/gun/1.3/manual/gun.ws_send/index.html
+++ b/docs/en/gun/1.3/manual/gun.ws_send/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun.ws_upgrade/index.html b/docs/en/gun/1.3/manual/gun.ws_upgrade/index.html
index d54d5e41..efa989f2 100644
--- a/docs/en/gun/1.3/manual/gun.ws_upgrade/index.html
+++ b/docs/en/gun/1.3/manual/gun.ws_upgrade/index.html
@@ -170,6 +170,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun/index.html b/docs/en/gun/1.3/manual/gun/index.html
index b70b2dce..af46bb02 100644
--- a/docs/en/gun/1.3/manual/gun/index.html
+++ b/docs/en/gun/1.3/manual/gun/index.html
@@ -362,6 +362,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_app/index.html b/docs/en/gun/1.3/manual/gun_app/index.html
index 160f39ce..a0fe628c 100644
--- a/docs/en/gun/1.3/manual/gun_app/index.html
+++ b/docs/en/gun/1.3/manual/gun_app/index.html
@@ -122,6 +122,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_data/index.html b/docs/en/gun/1.3/manual/gun_data/index.html
index 82b3f0d6..f707280f 100644
--- a/docs/en/gun/1.3/manual/gun_data/index.html
+++ b/docs/en/gun/1.3/manual/gun_data/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_down/index.html b/docs/en/gun/1.3/manual/gun_down/index.html
index 1b13aff3..3a2dff2e 100644
--- a/docs/en/gun/1.3/manual/gun_down/index.html
+++ b/docs/en/gun/1.3/manual/gun_down/index.html
@@ -152,6 +152,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_error/index.html b/docs/en/gun/1.3/manual/gun_error/index.html
index bb7c0154..5e1b4d92 100644
--- a/docs/en/gun/1.3/manual/gun_error/index.html
+++ b/docs/en/gun/1.3/manual/gun_error/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_inform/index.html b/docs/en/gun/1.3/manual/gun_inform/index.html
index 84f5123a..8d10882d 100644
--- a/docs/en/gun/1.3/manual/gun_inform/index.html
+++ b/docs/en/gun/1.3/manual/gun_inform/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_push/index.html b/docs/en/gun/1.3/manual/gun_push/index.html
index 29767245..25bb650a 100644
--- a/docs/en/gun/1.3/manual/gun_push/index.html
+++ b/docs/en/gun/1.3/manual/gun_push/index.html
@@ -165,6 +165,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_response/index.html b/docs/en/gun/1.3/manual/gun_response/index.html
index 0d242cca..03083e40 100644
--- a/docs/en/gun/1.3/manual/gun_response/index.html
+++ b/docs/en/gun/1.3/manual/gun_response/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_trailers/index.html b/docs/en/gun/1.3/manual/gun_trailers/index.html
index 3ec374b6..a2588397 100644
--- a/docs/en/gun/1.3/manual/gun_trailers/index.html
+++ b/docs/en/gun/1.3/manual/gun_trailers/index.html
@@ -140,6 +140,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_up/index.html b/docs/en/gun/1.3/manual/gun_up/index.html
index 27942792..43fceeb5 100644
--- a/docs/en/gun/1.3/manual/gun_up/index.html
+++ b/docs/en/gun/1.3/manual/gun_up/index.html
@@ -136,6 +136,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_upgrade/index.html b/docs/en/gun/1.3/manual/gun_upgrade/index.html
index 6f550571..59121e6a 100644
--- a/docs/en/gun/1.3/manual/gun_upgrade/index.html
+++ b/docs/en/gun/1.3/manual/gun_upgrade/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/gun_ws/index.html b/docs/en/gun/1.3/manual/gun_ws/index.html
index a32074c3..6bdb51e9 100644
--- a/docs/en/gun/1.3/manual/gun_ws/index.html
+++ b/docs/en/gun/1.3/manual/gun_ws/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/1.3/manual/index.html b/docs/en/gun/1.3/manual/index.html
index c64239f4..028bdac7 100644
--- a/docs/en/gun/1.3/manual/index.html
+++ b/docs/en/gun/1.3/manual/index.html
@@ -122,6 +122,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/connect/index.html b/docs/en/gun/2.0/guide/connect/index.html
index a0eb61b9..0fe46cb4 100644
--- a/docs/en/gun/2.0/guide/connect/index.html
+++ b/docs/en/gun/2.0/guide/connect/index.html
@@ -216,6 +216,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/http/index.html b/docs/en/gun/2.0/guide/http/index.html
index 1ba1fcf1..58d36297 100644
--- a/docs/en/gun/2.0/guide/http/index.html
+++ b/docs/en/gun/2.0/guide/http/index.html
@@ -390,6 +390,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/index.html b/docs/en/gun/2.0/guide/index.html
index af9d2e31..c3a90683 100644
--- a/docs/en/gun/2.0/guide/index.html
+++ b/docs/en/gun/2.0/guide/index.html
@@ -126,6 +126,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/internals_tls_over_tls/index.html b/docs/en/gun/2.0/guide/internals_tls_over_tls/index.html
index 4f66ec05..dfde6e0f 100644
--- a/docs/en/gun/2.0/guide/internals_tls_over_tls/index.html
+++ b/docs/en/gun/2.0/guide/internals_tls_over_tls/index.html
@@ -160,6 +160,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/introduction/index.html b/docs/en/gun/2.0/guide/introduction/index.html
index 7fa188bd..30ff7a3f 100644
--- a/docs/en/gun/2.0/guide/introduction/index.html
+++ b/docs/en/gun/2.0/guide/introduction/index.html
@@ -141,6 +141,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</pre></div></div>
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/migrating_from_1.0/index.html b/docs/en/gun/2.0/guide/migrating_from_1.0/index.html
index 8780c635..37cfc054 100644
--- a/docs/en/gun/2.0/guide/migrating_from_1.0/index.html
+++ b/docs/en/gun/2.0/guide/migrating_from_1.0/index.html
@@ -127,6 +127,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/migrating_from_1.1/index.html b/docs/en/gun/2.0/guide/migrating_from_1.1/index.html
index 3eee31f0..30f1b884 100644
--- a/docs/en/gun/2.0/guide/migrating_from_1.1/index.html
+++ b/docs/en/gun/2.0/guide/migrating_from_1.1/index.html
@@ -133,6 +133,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
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 8c5af4fe..694300c8 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
@@ -143,6 +143,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
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
index ed970fb3..66e86987 100644
--- 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
@@ -275,6 +275,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/migrating_from_2.0/index.html b/docs/en/gun/2.0/guide/migrating_from_2.0/index.html
index ba1b88a8..1a0a2051 100644
--- a/docs/en/gun/2.0/guide/migrating_from_2.0/index.html
+++ b/docs/en/gun/2.0/guide/migrating_from_2.0/index.html
@@ -122,6 +122,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/protocols/index.html b/docs/en/gun/2.0/guide/protocols/index.html
index d27c2416..72212f19 100644
--- a/docs/en/gun/2.0/guide/protocols/index.html
+++ b/docs/en/gun/2.0/guide/protocols/index.html
@@ -267,6 +267,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/start/index.html b/docs/en/gun/2.0/guide/start/index.html
index 62caeed4..796e4a0b 100644
--- a/docs/en/gun/2.0/guide/start/index.html
+++ b/docs/en/gun/2.0/guide/start/index.html
@@ -144,6 +144,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/guide/websocket/index.html b/docs/en/gun/2.0/guide/websocket/index.html
index 49884142..a38a1e8a 100644
--- a/docs/en/gun/2.0/guide/websocket/index.html
+++ b/docs/en/gun/2.0/guide/websocket/index.html
@@ -202,6 +202,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.await/index.html b/docs/en/gun/2.0/manual/gun.await/index.html
index 1b55f001..648fcc1e 100644
--- a/docs/en/gun/2.0/manual/gun.await/index.html
+++ b/docs/en/gun/2.0/manual/gun.await/index.html
@@ -194,6 +194,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.await_body/index.html b/docs/en/gun/2.0/manual/gun.await_body/index.html
index b65ec566..939bc3d6 100644
--- a/docs/en/gun/2.0/manual/gun.await_body/index.html
+++ b/docs/en/gun/2.0/manual/gun.await_body/index.html
@@ -162,6 +162,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.await_up/index.html b/docs/en/gun/2.0/manual/gun.await_up/index.html
index 9833b403..839f1ccd 100644
--- a/docs/en/gun/2.0/manual/gun.await_up/index.html
+++ b/docs/en/gun/2.0/manual/gun.await_up/index.html
@@ -153,6 +153,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.cancel/index.html b/docs/en/gun/2.0/manual/gun.cancel/index.html
index 2fa4739e..b87e6ae9 100644
--- a/docs/en/gun/2.0/manual/gun.cancel/index.html
+++ b/docs/en/gun/2.0/manual/gun.cancel/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.close/index.html b/docs/en/gun/2.0/manual/gun.close/index.html
index 9f1c2537..10d1143d 100644
--- a/docs/en/gun/2.0/manual/gun.close/index.html
+++ b/docs/en/gun/2.0/manual/gun.close/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.connect/index.html b/docs/en/gun/2.0/manual/gun.connect/index.html
index ff0f348f..71f272a6 100644
--- a/docs/en/gun/2.0/manual/gun.connect/index.html
+++ b/docs/en/gun/2.0/manual/gun.connect/index.html
@@ -190,6 +190,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.data/index.html b/docs/en/gun/2.0/manual/gun.data/index.html
index 944b87d8..768bf601 100644
--- a/docs/en/gun/2.0/manual/gun.data/index.html
+++ b/docs/en/gun/2.0/manual/gun.data/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.delete/index.html b/docs/en/gun/2.0/manual/gun.delete/index.html
index c2bd9841..edb025e8 100644
--- a/docs/en/gun/2.0/manual/gun.delete/index.html
+++ b/docs/en/gun/2.0/manual/gun.delete/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.flush/index.html b/docs/en/gun/2.0/manual/gun.flush/index.html
index bf3eaff1..f3e466a9 100644
--- a/docs/en/gun/2.0/manual/gun.flush/index.html
+++ b/docs/en/gun/2.0/manual/gun.flush/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.get/index.html b/docs/en/gun/2.0/manual/gun.get/index.html
index 853c11b1..5b314195 100644
--- a/docs/en/gun/2.0/manual/gun.get/index.html
+++ b/docs/en/gun/2.0/manual/gun.get/index.html
@@ -160,6 +160,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.head/index.html b/docs/en/gun/2.0/manual/gun.head/index.html
index e9695a9c..256faa6d 100644
--- a/docs/en/gun/2.0/manual/gun.head/index.html
+++ b/docs/en/gun/2.0/manual/gun.head/index.html
@@ -162,6 +162,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.headers/index.html b/docs/en/gun/2.0/manual/gun.headers/index.html
index 34827382..db640847 100644
--- a/docs/en/gun/2.0/manual/gun.headers/index.html
+++ b/docs/en/gun/2.0/manual/gun.headers/index.html
@@ -154,6 +154,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.info/index.html b/docs/en/gun/2.0/manual/gun.info/index.html
index b3d58161..4a72065f 100644
--- a/docs/en/gun/2.0/manual/gun.info/index.html
+++ b/docs/en/gun/2.0/manual/gun.info/index.html
@@ -153,6 +153,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.open/index.html b/docs/en/gun/2.0/manual/gun.open/index.html
index fa5b24b4..96e83397 100644
--- a/docs/en/gun/2.0/manual/gun.open/index.html
+++ b/docs/en/gun/2.0/manual/gun.open/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.open_unix/index.html b/docs/en/gun/2.0/manual/gun.open_unix/index.html
index 4cfedbef..eaee5bee 100644
--- a/docs/en/gun/2.0/manual/gun.open_unix/index.html
+++ b/docs/en/gun/2.0/manual/gun.open_unix/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.options/index.html b/docs/en/gun/2.0/manual/gun.options/index.html
index 8dc5e332..1890687a 100644
--- a/docs/en/gun/2.0/manual/gun.options/index.html
+++ b/docs/en/gun/2.0/manual/gun.options/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.patch/index.html b/docs/en/gun/2.0/manual/gun.patch/index.html
index f84c6cb1..8a6eff44 100644
--- a/docs/en/gun/2.0/manual/gun.patch/index.html
+++ b/docs/en/gun/2.0/manual/gun.patch/index.html
@@ -185,6 +185,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.post/index.html b/docs/en/gun/2.0/manual/gun.post/index.html
index 303070bc..66f8898a 100644
--- a/docs/en/gun/2.0/manual/gun.post/index.html
+++ b/docs/en/gun/2.0/manual/gun.post/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.put/index.html b/docs/en/gun/2.0/manual/gun.put/index.html
index 6ea87f72..3349dc60 100644
--- a/docs/en/gun/2.0/manual/gun.put/index.html
+++ b/docs/en/gun/2.0/manual/gun.put/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.request/index.html b/docs/en/gun/2.0/manual/gun.request/index.html
index 5735195f..bc0110ac 100644
--- a/docs/en/gun/2.0/manual/gun.request/index.html
+++ b/docs/en/gun/2.0/manual/gun.request/index.html
@@ -161,6 +161,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.set_owner/index.html b/docs/en/gun/2.0/manual/gun.set_owner/index.html
index 8463d0e7..162dd3b5 100644
--- a/docs/en/gun/2.0/manual/gun.set_owner/index.html
+++ b/docs/en/gun/2.0/manual/gun.set_owner/index.html
@@ -135,6 +135,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.shutdown/index.html b/docs/en/gun/2.0/manual/gun.shutdown/index.html
index 1c1211cf..603be981 100644
--- a/docs/en/gun/2.0/manual/gun.shutdown/index.html
+++ b/docs/en/gun/2.0/manual/gun.shutdown/index.html
@@ -139,6 +139,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.stream_info/index.html b/docs/en/gun/2.0/manual/gun.stream_info/index.html
index bf2110b5..c89d1250 100644
--- a/docs/en/gun/2.0/manual/gun.stream_info/index.html
+++ b/docs/en/gun/2.0/manual/gun.stream_info/index.html
@@ -154,6 +154,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.update_flow/index.html b/docs/en/gun/2.0/manual/gun.update_flow/index.html
index 9fbd1efa..35954f7a 100644
--- a/docs/en/gun/2.0/manual/gun.update_flow/index.html
+++ b/docs/en/gun/2.0/manual/gun.update_flow/index.html
@@ -139,6 +139,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.ws_send/index.html b/docs/en/gun/2.0/manual/gun.ws_send/index.html
index b3b5cd05..3b9af0d8 100644
--- a/docs/en/gun/2.0/manual/gun.ws_send/index.html
+++ b/docs/en/gun/2.0/manual/gun.ws_send/index.html
@@ -155,6 +155,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun.ws_upgrade/index.html b/docs/en/gun/2.0/manual/gun.ws_upgrade/index.html
index de6756cf..f8655f94 100644
--- a/docs/en/gun/2.0/manual/gun.ws_upgrade/index.html
+++ b/docs/en/gun/2.0/manual/gun.ws_upgrade/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun/index.html b/docs/en/gun/2.0/manual/gun/index.html
index 41dc02b9..513007fa 100644
--- a/docs/en/gun/2.0/manual/gun/index.html
+++ b/docs/en/gun/2.0/manual/gun/index.html
@@ -597,6 +597,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_app/index.html b/docs/en/gun/2.0/manual/gun_app/index.html
index e268812a..3e8747f5 100644
--- a/docs/en/gun/2.0/manual/gun_app/index.html
+++ b/docs/en/gun/2.0/manual/gun_app/index.html
@@ -130,6 +130,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_cookies.domain_match/index.html b/docs/en/gun/2.0/manual/gun_cookies.domain_match/index.html
index 5b9fb769..0f6867d4 100644
--- a/docs/en/gun/2.0/manual/gun_cookies.domain_match/index.html
+++ b/docs/en/gun/2.0/manual/gun_cookies.domain_match/index.html
@@ -134,6 +134,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_cookies.path_match/index.html b/docs/en/gun/2.0/manual/gun_cookies.path_match/index.html
index 9d53282d..0043c38a 100644
--- a/docs/en/gun/2.0/manual/gun_cookies.path_match/index.html
+++ b/docs/en/gun/2.0/manual/gun_cookies.path_match/index.html
@@ -134,6 +134,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_cookies/index.html b/docs/en/gun/2.0/manual/gun_cookies/index.html
index 4d2595a2..350f0867 100644
--- a/docs/en/gun/2.0/manual/gun_cookies/index.html
+++ b/docs/en/gun/2.0/manual/gun_cookies/index.html
@@ -233,6 +233,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_cookies_list/index.html b/docs/en/gun/2.0/manual/gun_cookies_list/index.html
index a2e6d207..c260e72a 100644
--- a/docs/en/gun/2.0/manual/gun_cookies_list/index.html
+++ b/docs/en/gun/2.0/manual/gun_cookies_list/index.html
@@ -131,6 +131,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_data/index.html b/docs/en/gun/2.0/manual/gun_data/index.html
index b5fa189d..ef9693fb 100644
--- a/docs/en/gun/2.0/manual/gun_data/index.html
+++ b/docs/en/gun/2.0/manual/gun_data/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_down/index.html b/docs/en/gun/2.0/manual/gun_down/index.html
index d2f1370f..8d1e8615 100644
--- a/docs/en/gun/2.0/manual/gun_down/index.html
+++ b/docs/en/gun/2.0/manual/gun_down/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_error/index.html b/docs/en/gun/2.0/manual/gun_error/index.html
index b83d346a..efd72bda 100644
--- a/docs/en/gun/2.0/manual/gun_error/index.html
+++ b/docs/en/gun/2.0/manual/gun_error/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_event/index.html b/docs/en/gun/2.0/manual/gun_event/index.html
index bafd6e13..769ea473 100644
--- a/docs/en/gun/2.0/manual/gun_event/index.html
+++ b/docs/en/gun/2.0/manual/gun_event/index.html
@@ -512,6 +512,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_inform/index.html b/docs/en/gun/2.0/manual/gun_inform/index.html
index bbc7e836..0fb35e7d 100644
--- a/docs/en/gun/2.0/manual/gun_inform/index.html
+++ b/docs/en/gun/2.0/manual/gun_inform/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_push/index.html b/docs/en/gun/2.0/manual/gun_push/index.html
index f3930b05..a751231e 100644
--- a/docs/en/gun/2.0/manual/gun_push/index.html
+++ b/docs/en/gun/2.0/manual/gun_push/index.html
@@ -165,6 +165,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_response/index.html b/docs/en/gun/2.0/manual/gun_response/index.html
index 086388d2..ffa7a0c2 100644
--- a/docs/en/gun/2.0/manual/gun_response/index.html
+++ b/docs/en/gun/2.0/manual/gun_response/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_trailers/index.html b/docs/en/gun/2.0/manual/gun_trailers/index.html
index 80b8f7c1..c4632bb9 100644
--- a/docs/en/gun/2.0/manual/gun_trailers/index.html
+++ b/docs/en/gun/2.0/manual/gun_trailers/index.html
@@ -140,6 +140,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_tunnel_up/index.html b/docs/en/gun/2.0/manual/gun_tunnel_up/index.html
index 749945ea..d02cf44d 100644
--- a/docs/en/gun/2.0/manual/gun_tunnel_up/index.html
+++ b/docs/en/gun/2.0/manual/gun_tunnel_up/index.html
@@ -140,6 +140,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_up/index.html b/docs/en/gun/2.0/manual/gun_up/index.html
index 8f37e7f5..f8ad171b 100644
--- a/docs/en/gun/2.0/manual/gun_up/index.html
+++ b/docs/en/gun/2.0/manual/gun_up/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_upgrade/index.html b/docs/en/gun/2.0/manual/gun_upgrade/index.html
index 52ad602a..4dafa110 100644
--- a/docs/en/gun/2.0/manual/gun_upgrade/index.html
+++ b/docs/en/gun/2.0/manual/gun_upgrade/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_ws/index.html b/docs/en/gun/2.0/manual/gun_ws/index.html
index 10f21e2a..6ab187d4 100644
--- a/docs/en/gun/2.0/manual/gun_ws/index.html
+++ b/docs/en/gun/2.0/manual/gun_ws/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/gun_ws_protocol/index.html b/docs/en/gun/2.0/manual/gun_ws_protocol/index.html
index 31592f2c..a546d8fb 100644
--- a/docs/en/gun/2.0/manual/gun_ws_protocol/index.html
+++ b/docs/en/gun/2.0/manual/gun_ws_protocol/index.html
@@ -171,6 +171,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.0/manual/index.html b/docs/en/gun/2.0/manual/index.html
index cac11756..9570f9f2 100644
--- a/docs/en/gun/2.0/manual/index.html
+++ b/docs/en/gun/2.0/manual/index.html
@@ -130,6 +130,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/connect/index.html b/docs/en/gun/2.1/guide/connect/index.html
index d307a4f0..998e9c65 100644
--- a/docs/en/gun/2.1/guide/connect/index.html
+++ b/docs/en/gun/2.1/guide/connect/index.html
@@ -216,6 +216,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/http/index.html b/docs/en/gun/2.1/guide/http/index.html
index 435b1ee1..14547078 100644
--- a/docs/en/gun/2.1/guide/http/index.html
+++ b/docs/en/gun/2.1/guide/http/index.html
@@ -390,6 +390,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/index.html b/docs/en/gun/2.1/guide/index.html
index 4f51cbea..c7e1ff0e 100644
--- a/docs/en/gun/2.1/guide/index.html
+++ b/docs/en/gun/2.1/guide/index.html
@@ -126,6 +126,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/internals_tls_over_tls/index.html b/docs/en/gun/2.1/guide/internals_tls_over_tls/index.html
index e62b3326..a19e297c 100644
--- a/docs/en/gun/2.1/guide/internals_tls_over_tls/index.html
+++ b/docs/en/gun/2.1/guide/internals_tls_over_tls/index.html
@@ -160,6 +160,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/introduction/index.html b/docs/en/gun/2.1/guide/introduction/index.html
index b9fe742e..1e1839ba 100644
--- a/docs/en/gun/2.1/guide/introduction/index.html
+++ b/docs/en/gun/2.1/guide/introduction/index.html
@@ -141,6 +141,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</pre></div></div>
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/migrating_from_1.0/index.html b/docs/en/gun/2.1/guide/migrating_from_1.0/index.html
index 4bd8a35b..a6dbe94f 100644
--- a/docs/en/gun/2.1/guide/migrating_from_1.0/index.html
+++ b/docs/en/gun/2.1/guide/migrating_from_1.0/index.html
@@ -127,6 +127,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/migrating_from_1.1/index.html b/docs/en/gun/2.1/guide/migrating_from_1.1/index.html
index 25270e2d..f76f1a12 100644
--- a/docs/en/gun/2.1/guide/migrating_from_1.1/index.html
+++ b/docs/en/gun/2.1/guide/migrating_from_1.1/index.html
@@ -133,6 +133,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/migrating_from_1.2/index.html b/docs/en/gun/2.1/guide/migrating_from_1.2/index.html
index b29a4fab..6bc3c948 100644
--- a/docs/en/gun/2.1/guide/migrating_from_1.2/index.html
+++ b/docs/en/gun/2.1/guide/migrating_from_1.2/index.html
@@ -143,6 +143,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/migrating_from_1.3/index.html b/docs/en/gun/2.1/guide/migrating_from_1.3/index.html
index c2a6acd3..a5116476 100644
--- a/docs/en/gun/2.1/guide/migrating_from_1.3/index.html
+++ b/docs/en/gun/2.1/guide/migrating_from_1.3/index.html
@@ -275,6 +275,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/migrating_from_2.0/index.html b/docs/en/gun/2.1/guide/migrating_from_2.0/index.html
index b2883c28..13893706 100644
--- a/docs/en/gun/2.1/guide/migrating_from_2.0/index.html
+++ b/docs/en/gun/2.1/guide/migrating_from_2.0/index.html
@@ -132,6 +132,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/protocols/index.html b/docs/en/gun/2.1/guide/protocols/index.html
index c0fb3a8a..c23e2d6f 100644
--- a/docs/en/gun/2.1/guide/protocols/index.html
+++ b/docs/en/gun/2.1/guide/protocols/index.html
@@ -267,6 +267,8 @@
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/start/index.html b/docs/en/gun/2.1/guide/start/index.html
index 44e538b1..1968a422 100644
--- a/docs/en/gun/2.1/guide/start/index.html
+++ b/docs/en/gun/2.1/guide/start/index.html
@@ -144,6 +144,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/guide/websocket/index.html b/docs/en/gun/2.1/guide/websocket/index.html
index cf154726..0412e805 100644
--- a/docs/en/gun/2.1/guide/websocket/index.html
+++ b/docs/en/gun/2.1/guide/websocket/index.html
@@ -202,6 +202,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
<li><a href="/docs/en/gun/2.0/guide">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.await/index.html b/docs/en/gun/2.1/manual/gun.await/index.html
index d0416b94..f39b1e52 100644
--- a/docs/en/gun/2.1/manual/gun.await/index.html
+++ b/docs/en/gun/2.1/manual/gun.await/index.html
@@ -194,6 +194,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.await_body/index.html b/docs/en/gun/2.1/manual/gun.await_body/index.html
index a7a272c4..5832bc8c 100644
--- a/docs/en/gun/2.1/manual/gun.await_body/index.html
+++ b/docs/en/gun/2.1/manual/gun.await_body/index.html
@@ -162,6 +162,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.await_up/index.html b/docs/en/gun/2.1/manual/gun.await_up/index.html
index dfeede14..ce3a46e5 100644
--- a/docs/en/gun/2.1/manual/gun.await_up/index.html
+++ b/docs/en/gun/2.1/manual/gun.await_up/index.html
@@ -153,6 +153,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.cancel/index.html b/docs/en/gun/2.1/manual/gun.cancel/index.html
index d0919037..98da26aa 100644
--- a/docs/en/gun/2.1/manual/gun.cancel/index.html
+++ b/docs/en/gun/2.1/manual/gun.cancel/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.close/index.html b/docs/en/gun/2.1/manual/gun.close/index.html
index 3c53c1ce..0c248bfa 100644
--- a/docs/en/gun/2.1/manual/gun.close/index.html
+++ b/docs/en/gun/2.1/manual/gun.close/index.html
@@ -129,6 +129,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.connect/index.html b/docs/en/gun/2.1/manual/gun.connect/index.html
index 63ffa96a..1154a8d4 100644
--- a/docs/en/gun/2.1/manual/gun.connect/index.html
+++ b/docs/en/gun/2.1/manual/gun.connect/index.html
@@ -190,6 +190,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.data/index.html b/docs/en/gun/2.1/manual/gun.data/index.html
index 1b725aa3..0b10bb58 100644
--- a/docs/en/gun/2.1/manual/gun.data/index.html
+++ b/docs/en/gun/2.1/manual/gun.data/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.delete/index.html b/docs/en/gun/2.1/manual/gun.delete/index.html
index 915871e0..aaaf2fb4 100644
--- a/docs/en/gun/2.1/manual/gun.delete/index.html
+++ b/docs/en/gun/2.1/manual/gun.delete/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.flush/index.html b/docs/en/gun/2.1/manual/gun.flush/index.html
index 74e0ea84..2fde1afb 100644
--- a/docs/en/gun/2.1/manual/gun.flush/index.html
+++ b/docs/en/gun/2.1/manual/gun.flush/index.html
@@ -142,6 +142,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.get/index.html b/docs/en/gun/2.1/manual/gun.get/index.html
index bcea3ddc..8c584a80 100644
--- a/docs/en/gun/2.1/manual/gun.get/index.html
+++ b/docs/en/gun/2.1/manual/gun.get/index.html
@@ -160,6 +160,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.head/index.html b/docs/en/gun/2.1/manual/gun.head/index.html
index 7d140d48..a863e56b 100644
--- a/docs/en/gun/2.1/manual/gun.head/index.html
+++ b/docs/en/gun/2.1/manual/gun.head/index.html
@@ -162,6 +162,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.headers/index.html b/docs/en/gun/2.1/manual/gun.headers/index.html
index f3ec2e57..d3b2621b 100644
--- a/docs/en/gun/2.1/manual/gun.headers/index.html
+++ b/docs/en/gun/2.1/manual/gun.headers/index.html
@@ -154,6 +154,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.info/index.html b/docs/en/gun/2.1/manual/gun.info/index.html
index b93a1820..894f098a 100644
--- a/docs/en/gun/2.1/manual/gun.info/index.html
+++ b/docs/en/gun/2.1/manual/gun.info/index.html
@@ -153,6 +153,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.open/index.html b/docs/en/gun/2.1/manual/gun.open/index.html
index 2bd4d270..68a0f59e 100644
--- a/docs/en/gun/2.1/manual/gun.open/index.html
+++ b/docs/en/gun/2.1/manual/gun.open/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.open_unix/index.html b/docs/en/gun/2.1/manual/gun.open_unix/index.html
index b6604d9d..486972c0 100644
--- a/docs/en/gun/2.1/manual/gun.open_unix/index.html
+++ b/docs/en/gun/2.1/manual/gun.open_unix/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.options/index.html b/docs/en/gun/2.1/manual/gun.options/index.html
index f2b4493a..a60ef33e 100644
--- a/docs/en/gun/2.1/manual/gun.options/index.html
+++ b/docs/en/gun/2.1/manual/gun.options/index.html
@@ -157,6 +157,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.patch/index.html b/docs/en/gun/2.1/manual/gun.patch/index.html
index 6c958e29..1a05dd1e 100644
--- a/docs/en/gun/2.1/manual/gun.patch/index.html
+++ b/docs/en/gun/2.1/manual/gun.patch/index.html
@@ -185,6 +185,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.post/index.html b/docs/en/gun/2.1/manual/gun.post/index.html
index 6eb5ea1a..37f31529 100644
--- a/docs/en/gun/2.1/manual/gun.post/index.html
+++ b/docs/en/gun/2.1/manual/gun.post/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.put/index.html b/docs/en/gun/2.1/manual/gun.put/index.html
index d5b54f00..15f36339 100644
--- a/docs/en/gun/2.1/manual/gun.put/index.html
+++ b/docs/en/gun/2.1/manual/gun.put/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.request/index.html b/docs/en/gun/2.1/manual/gun.request/index.html
index a5678fb6..4aae9dd3 100644
--- a/docs/en/gun/2.1/manual/gun.request/index.html
+++ b/docs/en/gun/2.1/manual/gun.request/index.html
@@ -161,6 +161,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.set_owner/index.html b/docs/en/gun/2.1/manual/gun.set_owner/index.html
index a8a0ce70..1f5bc2c1 100644
--- a/docs/en/gun/2.1/manual/gun.set_owner/index.html
+++ b/docs/en/gun/2.1/manual/gun.set_owner/index.html
@@ -135,6 +135,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.shutdown/index.html b/docs/en/gun/2.1/manual/gun.shutdown/index.html
index 6e4e0339..2a0ca993 100644
--- a/docs/en/gun/2.1/manual/gun.shutdown/index.html
+++ b/docs/en/gun/2.1/manual/gun.shutdown/index.html
@@ -139,6 +139,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.stream_info/index.html b/docs/en/gun/2.1/manual/gun.stream_info/index.html
index d1bf25cc..6311c2c2 100644
--- a/docs/en/gun/2.1/manual/gun.stream_info/index.html
+++ b/docs/en/gun/2.1/manual/gun.stream_info/index.html
@@ -154,6 +154,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.update_flow/index.html b/docs/en/gun/2.1/manual/gun.update_flow/index.html
index 5e54a109..9f06f1a0 100644
--- a/docs/en/gun/2.1/manual/gun.update_flow/index.html
+++ b/docs/en/gun/2.1/manual/gun.update_flow/index.html
@@ -139,6 +139,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.ws_send/index.html b/docs/en/gun/2.1/manual/gun.ws_send/index.html
index 23fcf88e..e75eed84 100644
--- a/docs/en/gun/2.1/manual/gun.ws_send/index.html
+++ b/docs/en/gun/2.1/manual/gun.ws_send/index.html
@@ -155,6 +155,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun.ws_upgrade/index.html b/docs/en/gun/2.1/manual/gun.ws_upgrade/index.html
index 34c2cd6e..9ba0f5fa 100644
--- a/docs/en/gun/2.1/manual/gun.ws_upgrade/index.html
+++ b/docs/en/gun/2.1/manual/gun.ws_upgrade/index.html
@@ -183,6 +183,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun/index.html b/docs/en/gun/2.1/manual/gun/index.html
index db269a93..76ce9200 100644
--- a/docs/en/gun/2.1/manual/gun/index.html
+++ b/docs/en/gun/2.1/manual/gun/index.html
@@ -600,6 +600,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_app/index.html b/docs/en/gun/2.1/manual/gun_app/index.html
index 2a4f481b..00a8e8af 100644
--- a/docs/en/gun/2.1/manual/gun_app/index.html
+++ b/docs/en/gun/2.1/manual/gun_app/index.html
@@ -130,6 +130,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_cookies.domain_match/index.html b/docs/en/gun/2.1/manual/gun_cookies.domain_match/index.html
index 2a3e7cba..0951f0cb 100644
--- a/docs/en/gun/2.1/manual/gun_cookies.domain_match/index.html
+++ b/docs/en/gun/2.1/manual/gun_cookies.domain_match/index.html
@@ -134,6 +134,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_cookies.path_match/index.html b/docs/en/gun/2.1/manual/gun_cookies.path_match/index.html
index 0df92805..b35c7746 100644
--- a/docs/en/gun/2.1/manual/gun_cookies.path_match/index.html
+++ b/docs/en/gun/2.1/manual/gun_cookies.path_match/index.html
@@ -134,6 +134,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_cookies/index.html b/docs/en/gun/2.1/manual/gun_cookies/index.html
index dcb1f43d..7ad746cf 100644
--- a/docs/en/gun/2.1/manual/gun_cookies/index.html
+++ b/docs/en/gun/2.1/manual/gun_cookies/index.html
@@ -233,6 +233,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_cookies_list/index.html b/docs/en/gun/2.1/manual/gun_cookies_list/index.html
index adbf05d7..f0ff2f2a 100644
--- a/docs/en/gun/2.1/manual/gun_cookies_list/index.html
+++ b/docs/en/gun/2.1/manual/gun_cookies_list/index.html
@@ -131,6 +131,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_data/index.html b/docs/en/gun/2.1/manual/gun_data/index.html
index 86e7f27d..2ea9b535 100644
--- a/docs/en/gun/2.1/manual/gun_data/index.html
+++ b/docs/en/gun/2.1/manual/gun_data/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_down/index.html b/docs/en/gun/2.1/manual/gun_down/index.html
index 2e6d84c7..17676fc2 100644
--- a/docs/en/gun/2.1/manual/gun_down/index.html
+++ b/docs/en/gun/2.1/manual/gun_down/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_error/index.html b/docs/en/gun/2.1/manual/gun_error/index.html
index c9a9bb9d..33eaa2f0 100644
--- a/docs/en/gun/2.1/manual/gun_error/index.html
+++ b/docs/en/gun/2.1/manual/gun_error/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_event/index.html b/docs/en/gun/2.1/manual/gun_event/index.html
index 6a1e5381..387fe5e1 100644
--- a/docs/en/gun/2.1/manual/gun_event/index.html
+++ b/docs/en/gun/2.1/manual/gun_event/index.html
@@ -512,6 +512,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_inform/index.html b/docs/en/gun/2.1/manual/gun_inform/index.html
index 18f50ce3..68f04071 100644
--- a/docs/en/gun/2.1/manual/gun_inform/index.html
+++ b/docs/en/gun/2.1/manual/gun_inform/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_push/index.html b/docs/en/gun/2.1/manual/gun_push/index.html
index fb9e5ff5..048e6d89 100644
--- a/docs/en/gun/2.1/manual/gun_push/index.html
+++ b/docs/en/gun/2.1/manual/gun_push/index.html
@@ -165,6 +165,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_response/index.html b/docs/en/gun/2.1/manual/gun_response/index.html
index 6a8ca517..c5c709d0 100644
--- a/docs/en/gun/2.1/manual/gun_response/index.html
+++ b/docs/en/gun/2.1/manual/gun_response/index.html
@@ -148,6 +148,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_trailers/index.html b/docs/en/gun/2.1/manual/gun_trailers/index.html
index 69a60bab..80c0599f 100644
--- a/docs/en/gun/2.1/manual/gun_trailers/index.html
+++ b/docs/en/gun/2.1/manual/gun_trailers/index.html
@@ -140,6 +140,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_tunnel_up/index.html b/docs/en/gun/2.1/manual/gun_tunnel_up/index.html
index da47b88c..a398c8a8 100644
--- a/docs/en/gun/2.1/manual/gun_tunnel_up/index.html
+++ b/docs/en/gun/2.1/manual/gun_tunnel_up/index.html
@@ -140,6 +140,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_up/index.html b/docs/en/gun/2.1/manual/gun_up/index.html
index c4d90ecb..50c1db62 100644
--- a/docs/en/gun/2.1/manual/gun_up/index.html
+++ b/docs/en/gun/2.1/manual/gun_up/index.html
@@ -137,6 +137,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_upgrade/index.html b/docs/en/gun/2.1/manual/gun_upgrade/index.html
index 0bdb8adc..cb58dea5 100644
--- a/docs/en/gun/2.1/manual/gun_upgrade/index.html
+++ b/docs/en/gun/2.1/manual/gun_upgrade/index.html
@@ -146,6 +146,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_ws/index.html b/docs/en/gun/2.1/manual/gun_ws/index.html
index 5d6fd65b..22d05955 100644
--- a/docs/en/gun/2.1/manual/gun_ws/index.html
+++ b/docs/en/gun/2.1/manual/gun_ws/index.html
@@ -145,6 +145,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/gun_ws_protocol/index.html b/docs/en/gun/2.1/manual/gun_ws_protocol/index.html
index 07d5daff..03b98751 100644
--- a/docs/en/gun/2.1/manual/gun_ws_protocol/index.html
+++ b/docs/en/gun/2.1/manual/gun_ws_protocol/index.html
@@ -171,6 +171,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.1/manual/index.html b/docs/en/gun/2.1/manual/index.html
index 60aff555..850eea65 100644
--- a/docs/en/gun/2.1/manual/index.html
+++ b/docs/en/gun/2.1/manual/index.html
@@ -130,6 +130,8 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
<li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
<li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
diff --git a/docs/en/gun/2.2/guide/connect.asciidoc b/docs/en/gun/2.2/guide/connect.asciidoc
new file mode 100644
index 00000000..08f8db29
--- /dev/null
+++ b/docs/en/gun/2.2/guide/connect.asciidoc
@@ -0,0 +1,166 @@
+[[connect]]
+== Connection
+
+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. This Gun connection is owned by a user
+process that is called the _owner_ of the connection, and is
+managed by the supervision tree of the `gun` application.
+
+Any process can communicate with the Gun connection
+by calling functions from the module `gun`. All functions
+perform their respective operations asynchronously. The Gun
+connection will send Erlang messages to the calling process
+whenever needed.
+
+When the remote endpoint closes the connection, Gun attempts
+to reconnect automatically.
+
+=== Opening a new connection
+
+The `gun:open/2,3` function must be used to open a connection.
+
+.Opening a connection to example.org on port 443
+[source,erlang]
+----
+{ok, ConnPid} = gun:open("example.org", 443).
+----
+
+If the port given is 443, Gun will attempt to connect using
+TLS. The protocol will be selected automatically using the
+ALPN extension for TLS. By default Gun supports HTTP/2
+and HTTP/1.1 when connecting using TLS.
+
+For any other port, Gun will attempt to connect using
+plain TCP and will use the HTTP/1.1 protocol.
+
+The transport and protocol used can be overriden via
+options. The manual documents all available options.
+
+Options can be provided as a third argument, and take the
+form of a map.
+
+.Opening a TLS connection to example.org on port 8443
+[source,erlang]
+----
+{ok, ConnPid} = gun:open("example.org", 8443, #{transport => tls}).
+----
+
+When using TLS you may want to tweak the
+http://erlang.org/doc/man/ssl_app.html#configuration[configuration]
+for the `ssl` application, in particular the `session_lifetime`
+and `session_cache_client_max` to limit the amount of memory
+used for the TLS sessions cache.
+
+=== Waiting for the connection to be established
+
+When Gun successfully connects to the server, it sends a
+`gun_up` message with the protocol that has been selected
+for the connection.
+
+Gun provides the functions `gun:await_up/1,2,3` that wait
+for the `gun_up` message. They can optionally take a monitor
+reference and/or timeout value. If no monitor is provided,
+one will be created for the duration of the function call.
+
+.Synchronous opening of a connection
+[source,erlang]
+----
+{ok, ConnPid} = gun:open("example.org", 443),
+{ok, Protocol} = gun:await_up(ConnPid).
+----
+
+=== Handling connection loss
+
+When the connection is lost, Gun will send a `gun_down`
+message indicating the current protocol, the reason the
+connection was lost and two lists of stream references.
+
+The first list indicates open streams that _may_ have been
+processed by the server. The second list indicates open
+streams that the server did not process.
+
+=== Monitoring the connection process
+
+Because software errors are unavoidable, it is important to
+detect when the Gun process crashes. It is also important
+to detect when it exits normally. Erlang provides two ways
+to do that: links and monitors.
+
+Gun leaves you the choice as to which one will be used.
+However, if you use the `gun:await/2,3` or `gun:await_body/2,3`
+functions, a monitor may be used for you to avoid getting
+stuck waiting for a message that will never come.
+
+If you choose to monitor yourself you can do it on a permanent
+basis rather than on every message you will receive, saving
+resources. Indeed, the `gun:await/3,4` and `gun:await_body/3,4`
+functions both accept a monitor argument if you have one already.
+
+.Monitoring the connection process
+[source,erlang]
+----
+{ok, ConnPid} = gun:open("example.org", 443).
+MRef = monitor(process, ConnPid).
+----
+
+This monitor reference can be kept and used until the connection
+process exits.
+
+.Handling `DOWN` messages
+[source,erlang]
+----
+receive
+ %% Receive Gun messages here...
+ {'DOWN', Mref, process, ConnPid, Reason} ->
+ error_logger:error_msg("Oops!"),
+ exit(Reason)
+end.
+----
+
+What to do when you receive a `DOWN` message is entirely up to you.
+
+=== Closing the connection abruptly
+
+The connection can be stopped abruptly at any time by calling
+the `gun:close/1` function.
+
+.Immediate closing of the connection
+[source,erlang]
+----
+gun:close(ConnPid).
+----
+
+The process is stopped immediately without having a chance to
+perform the protocol's closing handshake, if any.
+
+//=== Closing the connection gracefully
+//
+//The connection can also be stopped gracefully by calling the
+//`gun:shutdown/1` function.
+//
+//.Graceful shutdown of the connection
+//[source,erlang]
+//----
+//gun:shutdown(ConnPid).
+//----
+//
+//Gun will refuse any new requests or messages after you call
+//this function. It will however continue to send you messages
+//for existing streams until they are all completed.
+//
+//For example if you performed a GET request just before calling
+//`gun:shutdown/1`, you will still receive the response before
+//Gun closes the connection.
+//
+//If you set a monitor beforehand, you will receive a message
+//when the connection has been closed.
diff --git a/docs/en/gun/2.2/guide/connect/index.html b/docs/en/gun/2.2/guide/connect/index.html
new file mode 100644
index 00000000..06a70723
--- /dev/null
+++ b/docs/en/gun/2.2/guide/connect/index.html
@@ -0,0 +1,280 @@
+<!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: Connection</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=7" 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>Connection</span></h1>
+
+<p>This chapter describes how to open, monitor and close a connection using the Gun client.</p>
+<h2 id="_gun_connections">Gun connections</h2>
+<p>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.</p>
+<p>A Gun connection is an Erlang process that manages a socket to a remote endpoint. This Gun connection is owned by a user process that is called the <em>owner</em> of the connection, and is managed by the supervision tree of the <code>gun</code> application.</p>
+<p>Any process can communicate with the Gun connection by calling functions from the module <code>gun</code>. All functions perform their respective operations asynchronously. The Gun connection will send Erlang messages to the calling process whenever needed.</p>
+<p>When the remote endpoint closes the connection, Gun attempts to reconnect automatically.</p>
+<h2 id="_opening_a_new_connection">Opening a new connection</h2>
+<p>The <code>gun:open/2,3</code> function must be used to open a connection.</p>
+<div class="listingblock"><div class="title">Opening a connection to example.org on port 443</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"example.org"</font>, <font color="#993399">443</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>If the port given is 443, Gun will attempt to connect using TLS. The protocol will be selected automatically using the ALPN extension for TLS. By default Gun supports HTTP/2 and HTTP/1.1 when connecting using TLS.</p>
+<p>For any other port, Gun will attempt to connect using plain TCP and will use the HTTP/1.1 protocol.</p>
+<p>The transport and protocol used can be overriden via options. The manual documents all available options.</p>
+<p>Options can be provided as a third argument, and take the form of a map.</p>
+<div class="listingblock"><div class="title">Opening a TLS connection to example.org on port 8443</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"example.org"</font>, <font color="#993399">8443</font>, #{<font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tls</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>When using TLS you may want to tweak the <a href="http://erlang.org/doc/man/ssl_app.html#configuration">configuration</a> for the <code>ssl</code> application, in particular the <code>session_lifetime</code> and <code>session_cache_client_max</code> to limit the amount of memory used for the TLS sessions cache.</p>
+<h2 id="_waiting_for_the_connection_to_be_established">Waiting for the connection to be established</h2>
+<p>When Gun successfully connects to the server, it sends a <code>gun_up</code> message with the protocol that has been selected for the connection.</p>
+<p>Gun provides the functions <code>gun:await_up/1,2,3</code> that wait for the <code>gun_up</code> message. They can optionally take a monitor reference and/or timeout value. If no monitor is provided, one will be created for the duration of the function call.</p>
+<div class="listingblock"><div class="title">Synchronous opening of a connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"example.org"</font>, <font color="#993399">443</font>),
+{<font color="#FF6600">ok</font>, <font color="#009900">Protocol</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await_up</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_handling_connection_loss">Handling connection loss</h2>
+<p>When the connection is lost, Gun will send a <code>gun_down</code> message indicating the current protocol, the reason the connection was lost and two lists of stream references.</p>
+<p>The first list indicates open streams that <em>may</em> have been processed by the server. The second list indicates open streams that the server did not process.</p>
+<h2 id="_monitoring_the_connection_process">Monitoring the connection process</h2>
+<p>Because software errors are unavoidable, it is important to detect when the Gun process crashes. It is also important to detect when it exits normally. Erlang provides two ways to do that: links and monitors.</p>
+<p>Gun leaves you the choice as to which one will be used. However, if you use the <code>gun:await/2,3</code> or <code>gun:await_body/2,3</code> functions, a monitor may be used for you to avoid getting stuck waiting for a message that will never come.</p>
+<p>If you choose to monitor yourself you can do it on a permanent basis rather than on every message you will receive, saving resources. Indeed, the <code>gun:await/3,4</code> and <code>gun:await_body/3,4</code> functions both accept a monitor argument if you have one already.</p>
+<div class="listingblock"><div class="title">Monitoring the connection process</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"example.org"</font>, <font color="#993399">443</font>)<font color="#990000">.</font>
+<font color="#009900">MRef</font> <font color="#990000">=</font> <b><font color="#000000">monitor</font></b>(<b><font color="#000080">process</font></b>, <font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>This monitor reference can be kept and used until the connection process exits.</p>
+<div class="listingblock"><div class="title">Handling `DOWN` messages</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#0000FF">receive</font></b>
+ <i><font color="#9A1900">%% Receive Gun messages here...</font></i>
+ {<font color="#FF6600">'DOWN'</font>, <font color="#009900">Mref</font>, <b><font color="#000080">process</font></b>, <font color="#009900">ConnPid</font>, <font color="#009900">Reason</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">error_logger:error_msg</font></b>(<font color="#FF0000">"Oops!"</font>),
+ <b><font color="#000080">exit</font></b>(<font color="#009900">Reason</font>)
+<b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<p>What to do when you receive a <code>DOWN</code> message is entirely up to you.</p>
+<h2 id="_closing_the_connection_abruptly">Closing the connection abruptly</h2>
+<p>The connection can be stopped abruptly at any time by calling the <code>gun:close/1</code> function.</p>
+<div class="listingblock"><div class="title">Immediate closing of the connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:close</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>The process is stopped immediately without having a chance to perform the protocol&apos;s closing handshake, if any.</p>
+<!-- === Closing the connection gracefully-->
+<!-- -->
+<!-- The connection can also be stopped gracefully by calling the-->
+<!-- `gun:shutdown/1` function.-->
+<!-- -->
+<!-- .Graceful shutdown of the connection-->
+<!-- [source,erlang]-->
+<!-- ------>
+<!-- gun:shutdown(ConnPid).-->
+<!-- ------>
+<!-- -->
+<!-- Gun will refuse any new requests or messages after you call-->
+<!-- this function. It will however continue to send you messages-->
+<!-- for existing streams until they are all completed.-->
+<!-- -->
+<!-- For example if you performed a GET request just before calling-->
+<!-- `gun:shutdown/1`, you will still receive the response before-->
+<!-- Gun closes the connection.-->
+<!-- -->
+<!-- If you set a monitor beforehand, you will receive a message-->
+<!-- when the connection has been closed.-->
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/protocols/">
+ Supported protocols
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/http/">
+ HTTP
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/gun.sty b/docs/en/gun/2.2/guide/gun.sty
new file mode 100644
index 00000000..d5e0d3be
--- /dev/null
+++ b/docs/en/gun/2.2/guide/gun.sty
@@ -0,0 +1,8 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{asciidoc-dblatex}[2012/10/24 AsciiDoc DocBook Style]
+
+%% Just use the original package and pass the options.
+\RequirePackageWithOptions{docbook}
+
+%% Define an alias for make snippets to be compatible with source-highlighter.
+\lstalias{makefile}{make}
diff --git a/docs/en/gun/2.2/guide/http.asciidoc b/docs/en/gun/2.2/guide/http.asciidoc
new file mode 100644
index 00000000..51cb994f
--- /dev/null
+++ b/docs/en/gun/2.2/guide/http.asciidoc
@@ -0,0 +1,387 @@
+[[http]]
+== HTTP
+
+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. This will stop any further
+messages from being sent to the calling process. Depending on
+its capabilities, the server will also be instructed to cancel
+the request.
+
+Canceling a stream may result in Gun dropping the connection
+temporarily, to avoid uploading or downloading data that will
+not be used.
+
+.Cancelling a stream
+[source,erlang]
+----
+gun:cancel(ConnPid, StreamRef).
+----
+
+=== Sending requests
+
+Gun provides many convenient functions for performing common
+operations, like GET, POST or DELETE. It also provides a
+general purpose function in case you need other methods.
+
+The availability of these methods on the server can vary
+depending on the software used but also on a per-resource
+basis.
+
+Gun will automatically set a few headers depending on the
+method used. For all methods however it will set the host
+header if it has not been provided in the request arguments.
+
+This section focuses on the act of sending a request. The
+handling of responses will be explained further on.
+
+==== GET and HEAD
+
+Use `gun:get/2,3,4` to request a resource.
+
+.GET "/organizations/ninenines"
+[source,erlang]
+----
+StreamRef = gun:get(ConnPid, "/organizations/ninenines").
+----
+
+.GET "/organizations/ninenines" with custom headers
+[source,erlang]
+----
+StreamRef = gun:get(ConnPid, "/organizations/ninenines", [
+ {<<"accept">>, "application/json"},
+ {<<"user-agent">>, "revolver/1.0"}
+]).
+----
+
+Note that the list of headers has the field name as a binary.
+The field value is iodata, which is either a binary or an
+iolist.
+
+Use `gun:head/2,3,4` if you don't need the response body.
+
+.HEAD "/organizations/ninenines"
+[source,erlang]
+----
+StreamRef = gun:head(ConnPid, "/organizations/ninenines").
+----
+
+.HEAD "/organizations/ninenines" with custom headers
+[source,erlang]
+----
+StreamRef = gun:head(ConnPid, "/organizations/ninenines", [
+ {<<"accept">>, "application/json"},
+ {<<"user-agent">>, "revolver/1.0"}
+]).
+----
+
+It is not possible to send a request body with a GET or HEAD
+request.
+
+==== POST, PUT and PATCH
+
+HTTP defines three methods to create or update a resource.
+
+POST is generally used when the resource identifier (URI) isn't known
+in advance when creating a resource. POST can also be used to
+replace an existing resource, although PUT is more appropriate
+in that situation.
+
+PUT creates or replaces a resource identified by the URI.
+
+PATCH provides instructions on how to modify the resource.
+
+Both POST and PUT send the entire resource representation in their
+request body. The PATCH method can be used when this is not
+desirable. The request body of a PATCH method may be a partial
+representation or a list of instructions on how to update the
+resource.
+
+The functions `gun:post/4,5`, `gun:put/4,5` and `gun:patch/4,5`
+take a body as their fourth argument. These functions do
+not require any body-specific header to be set, although
+it is always recommended to set the content-type header.
+Gun will set the other headers automatically.
+
+In this and the following examples in this section, `gun:post`
+can be replaced by `gun:put` or `gun:patch` for performing
+a PUT or PATCH request, respectively.
+
+.POST "/organizations/ninenines"
+[source,erlang]
+----
+Body = "{\"msg\": \"Hello world!\"}",
+StreamRef = gun:post(ConnPid, "/organizations/ninenines", [
+ {<<"content-type">>, "application/json"}
+], Body).
+----
+
+The functions `gun:post/3,4`, `gun:put/3,4` and `gun:patch/3,4`
+do not take a body in their arguments: the body must be
+provided later on using the `gun:data/4` function.
+
+It is recommended to send the content-length header if you
+know it in advance, although this is not required. If it
+is not set, HTTP/1.1 will use the chunked transfer-encoding,
+and HTTP/2 will continue normally as it is chunked by design.
+
+.POST "/organizations/ninenines" with delayed body
+[source,erlang]
+----
+Body = "{\"msg\": \"Hello world!\"}",
+StreamRef = gun:post(ConnPid, "/organizations/ninenines", [
+ {<<"content-length">>, integer_to_binary(length(Body))},
+ {<<"content-type">>, "application/json"}
+]),
+gun:data(ConnPid, StreamRef, fin, Body).
+----
+
+The atom `fin` indicates this is the last chunk of data to
+be sent. You can call the `gun:data/4` function as many
+times as needed until you have sent the entire body. The
+last call must use `fin` and all the previous calls must
+use `nofin`. The last chunk may be empty.
+
+.Streaming the request body
+[source,erlang]
+----
+sendfile(ConnPid, StreamRef, Filepath) ->
+ {ok, IoDevice} = file:open(Filepath, [read, binary, raw]),
+ do_sendfile(ConnPid, StreamRef, IoDevice).
+
+do_sendfile(ConnPid, StreamRef, IoDevice) ->
+ case file:read(IoDevice, 8000) of
+ eof ->
+ gun:data(ConnPid, StreamRef, fin, <<>>),
+ file:close(IoDevice);
+ {ok, Bin} ->
+ gun:data(ConnPid, StreamRef, nofin, Bin),
+ do_sendfile(ConnPid, StreamRef, IoDevice)
+ end.
+----
+
+==== DELETE
+
+Use `gun:delete/2,3,4` to delete a resource.
+
+.DELETE "/organizations/ninenines"
+[source,erlang]
+----
+StreamRef = gun:delete(ConnPid, "/organizations/ninenines").
+----
+
+.DELETE "/organizations/ninenines" with custom headers
+[source,erlang]
+----
+StreamRef = gun:delete(ConnPid, "/organizations/ninenines", [
+ {<<"user-agent">>, "revolver/1.0"}
+]).
+----
+
+==== OPTIONS
+
+Use `gun:options/2,3` to request information about a resource.
+
+.OPTIONS "/organizations/ninenines"
+[source,erlang]
+----
+StreamRef = gun:options(ConnPid, "/organizations/ninenines").
+----
+
+.OPTIONS "/organizations/ninenines" with custom headers
+[source,erlang]
+----
+StreamRef = gun:options(ConnPid, "/organizations/ninenines", [
+ {<<"user-agent">>, "revolver/1.0"}
+]).
+----
+
+You can also use this function to request information about
+the server itself.
+
+.OPTIONS "*"
+[source,erlang]
+----
+StreamRef = gun:options(ConnPid, "*").
+----
+
+==== Requests with an arbitrary method
+
+The functions `gun:headers/4,5` or `gun:request/5,6` can be
+used to send requests with a configurable method name. It is
+mostly useful when you need a method that Gun does not
+understand natively.
+
+.Example of a TRACE request
+[source,erlang]
+----
+gun:request(ConnPid, "TRACE", "/", [
+ {<<"max-forwards">>, "30"}
+], <<>>).
+----
+
+=== Processing responses
+
+All data received from the server is sent to the calling
+process as a message. First a `gun_response` message is sent,
+followed by zero or more `gun_data` messages. If something goes wrong,
+a `gun_error` message is sent instead.
+
+The response message will inform you whether there will be
+data messages following. If it contains `fin` there will be
+no data messages. If it contains `nofin` then one or more data
+messages will follow.
+
+When using HTTP/2 this value is sent with the frame and simply
+passed on in the message. When using HTTP/1.1 however Gun must
+guess whether data will follow by looking at the response headers.
+
+You can receive messages directly, or you can use the _await_
+functions to let Gun receive them for you.
+
+.Receiving a response using receive
+[source,erlang]
+----
+print_body(ConnPid, MRef) ->
+ StreamRef = gun:get(ConnPid, "/"),
+ receive
+ {gun_response, ConnPid, StreamRef, fin, Status, Headers} ->
+ no_data;
+ {gun_response, ConnPid, StreamRef, nofin, Status, Headers} ->
+ receive_data(ConnPid, MRef, StreamRef);
+ {'DOWN', MRef, process, ConnPid, Reason} ->
+ error_logger:error_msg("Oops!"),
+ exit(Reason)
+ after 1000 ->
+ exit(timeout)
+ end.
+
+receive_data(ConnPid, MRef, StreamRef) ->
+ receive
+ {gun_data, ConnPid, StreamRef, nofin, Data} ->
+ io:format("~s~n", [Data]),
+ receive_data(ConnPid, MRef, StreamRef);
+ {gun_data, ConnPid, StreamRef, fin, Data} ->
+ io:format("~s~n", [Data]);
+ {'DOWN', MRef, process, ConnPid, Reason} ->
+ error_logger:error_msg("Oops!"),
+ exit(Reason)
+ after 1000 ->
+ exit(timeout)
+ end.
+----
+
+While it may seem verbose, using messages like this has the
+advantage of never locking your process, allowing you to
+easily debug your code. It also allows you to start more than
+one connection and concurrently perform queries on all of them
+at the same time.
+
+You can also use Gun in a synchronous manner by using the _await_
+functions.
+
+The `gun:await/2,3,4` function will wait until it receives
+a response to, a pushed resource related to, or data from
+the given stream.
+
+When calling `gun:await/2,3` and not passing a monitor
+reference, one is automatically created for you for the
+duration of the call.
+
+The `gun:await_body/2,3,4` works similarly, but returns the
+body received. Both functions can be combined to receive the
+response and its body sequentially.
+
+.Receiving a response using await
+[source,erlang]
+----
+StreamRef = gun:get(ConnPid, "/"),
+case gun:await(ConnPid, StreamRef) of
+ {response, fin, Status, Headers} ->
+ no_data;
+ {response, nofin, Status, Headers} ->
+ {ok, Body} = gun:await_body(ConnPid, StreamRef),
+ io:format("~s~n", [Body])
+end.
+----
+
+=== Handling streams pushed by the server
+
+The HTTP/2 protocol allows the server to push more than one
+resource for every request. It will start sending those
+extra resources before it starts sending the response itself,
+so Gun will send you `gun_push` messages before `gun_response`
+when that happens.
+
+You can safely choose to ignore `gun_push` messages, or
+you can handle them. If you do, you can either receive the
+messages directly or use _await_ functions.
+
+The `gun_push` message contains both the new stream reference
+and the stream reference of the original request.
+
+.Receiving a pushed response using receive
+[source,erlang]
+----
+receive
+ {gun_push, ConnPid, OriginalStreamRef, PushedStreamRef,
+ Method, Host, Path, Headers} ->
+ enjoy()
+end.
+----
+
+If you use the `gun:await/2,3,4` function, however, Gun
+will use the original reference to identify the message but
+will return a tuple that doesn't contain it.
+
+.Receiving a pushed response using await
+[source,erlang]
+----
+{push, PushedStreamRef, Method, URI, Headers}
+ = gun:await(ConnPid, OriginalStreamRef).
+----
+
+The `PushedStreamRef` variable can then be used with `gun:await/2,3,4`
+and `gun:await_body/2,3,4`.
+
+=== Flushing unwanted messages
+
+Gun provides the function `gun:flush/1` to quickly get rid
+of unwanted messages sitting in the process mailbox. You
+can use it to get rid of all messages related to a connection,
+or just the messages related to a stream.
+
+.Flush all messages from a Gun connection
+[source,erlang]
+----
+gun:flush(ConnPid).
+----
+
+.Flush all messages from a specific stream
+[source,erlang]
+----
+gun:flush(StreamRef).
+----
+
+=== Redirecting responses to a different process
+
+Gun allows you to specify which process will handle responses
+to a request via the `reply_to` request option.
+
+.GET "/organizations/ninenines" to a different process
+[source,erlang]
+----
+StreamRef = gun:get(ConnPid, "/organizations/ninenines", [],
+ #{reply_to => Pid}).
+----
diff --git a/docs/en/gun/2.2/guide/http/index.html b/docs/en/gun/2.2/guide/http/index.html
new file mode 100644
index 00000000..4be12705
--- /dev/null
+++ b/docs/en/gun/2.2/guide/http/index.html
@@ -0,0 +1,454 @@
+<!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: HTTP</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=7" 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>HTTP</span></h1>
+
+<p>This chapter describes how to use the Gun client for communicating with an HTTP/1.1 or HTTP/2 server.</p>
+<h2 id="_streams">Streams</h2>
+<p>Every time a request is initiated, Gun creates a <em>stream</em>. A <em>stream reference</em> uniquely identifies a set of request and response and must be used to perform additional operations with a stream or to identify its messages.</p>
+<p>Stream references use the Erlang <em>reference</em> data type and are therefore unique.</p>
+<p>Streams can be canceled at any time. This will stop any further messages from being sent to the calling process. Depending on its capabilities, the server will also be instructed to cancel the request.</p>
+<p>Canceling a stream may result in Gun dropping the connection temporarily, to avoid uploading or downloading data that will not be used.</p>
+<div class="listingblock"><div class="title">Cancelling a stream</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:cancel</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_sending_requests">Sending requests</h2>
+<p>Gun provides many convenient functions for performing common operations, like GET, POST or DELETE. It also provides a general purpose function in case you need other methods.</p>
+<p>The availability of these methods on the server can vary depending on the software used but also on a per-resource basis.</p>
+<p>Gun will automatically set a few headers depending on the method used. For all methods however it will set the host header if it has not been provided in the request arguments.</p>
+<p>This section focuses on the act of sending a request. The handling of responses will be explained further on.</p>
+<h4 id="_get_and_head">GET and HEAD</h4>
+<p>Use <code>gun:get/2,3,4</code> to request a resource.</p>
+<div class="listingblock"><div class="title">GET &quot;/organizations/ninenines&quot;</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">GET &quot;/organizations/ninenines&quot; with custom headers</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"accept"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"application/json"</font>},
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"user-agent"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"revolver/1.0"</font>}
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>Note that the list of headers has the field name as a binary. The field value is iodata, which is either a binary or an iolist.</p>
+<p>Use <code>gun:head/2,3,4</code> if you don&apos;t need the response body.</p>
+<div class="listingblock"><div class="title">HEAD &quot;/organizations/ninenines&quot;</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:head</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">HEAD &quot;/organizations/ninenines&quot; with custom headers</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:head</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"accept"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"application/json"</font>},
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"user-agent"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"revolver/1.0"</font>}
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>It is not possible to send a request body with a GET or HEAD request.</p>
+<h4 id="_post__put_and_patch">POST, PUT and PATCH</h4>
+<p>HTTP defines three methods to create or update a resource.</p>
+<p>POST is generally used when the resource identifier (URI) isn&apos;t known in advance when creating a resource. POST can also be used to replace an existing resource, although PUT is more appropriate in that situation.</p>
+<p>PUT creates or replaces a resource identified by the URI.</p>
+<p>PATCH provides instructions on how to modify the resource.</p>
+<p>Both POST and PUT send the entire resource representation in their request body. The PATCH method can be used when this is not desirable. The request body of a PATCH method may be a partial representation or a list of instructions on how to update the resource.</p>
+<p>The functions <code>gun:post/4,5</code>, <code>gun:put/4,5</code> and <code>gun:patch/4,5</code> take a body as their fourth argument. These functions do not require any body-specific header to be set, although it is always recommended to set the content-type header. Gun will set the other headers automatically.</p>
+<p>In this and the following examples in this section, <code>gun:post</code> can be replaced by <code>gun:put</code> or <code>gun:patch</code> for performing a PUT or PATCH request, respectively.</p>
+<div class="listingblock"><div class="title">POST &quot;/organizations/ninenines&quot;</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Body</font> <font color="#990000">=</font> <font color="#FF0000">"{\"msg\": \"Hello world!\"}"</font>,
+<font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:post</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"application/json"</font>}
+], <font color="#009900">Body</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>The functions <code>gun:post/3,4</code>, <code>gun:put/3,4</code> and <code>gun:patch/3,4</code> do not take a body in their arguments: the body must be provided later on using the <code>gun:data/4</code> function.</p>
+<p>It is recommended to send the content-length header if you know it in advance, although this is not required. If it is not set, HTTP/1.1 will use the chunked transfer-encoding, and HTTP/2 will continue normally as it is chunked by design.</p>
+<div class="listingblock"><div class="title">POST &quot;/organizations/ninenines&quot; with delayed body</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Body</font> <font color="#990000">=</font> <font color="#FF0000">"{\"msg\": \"Hello world!\"}"</font>,
+<font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:post</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-length"</font><font color="#990000">&gt;&gt;</font>, <b><font color="#000000">integer_to_binary</font></b>(<b><font color="#000080">length</font></b>(<font color="#009900">Body</font>))},
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"application/json"</font>}
+]),
+<b><font color="#000000">gun:data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">fin</font>, <font color="#009900">Body</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>The atom <code>fin</code> indicates this is the last chunk of data to be sent. You can call the <code>gun:data/4</code> function as many times as needed until you have sent the entire body. The last call must use <code>fin</code> and all the previous calls must use <code>nofin</code>. The last chunk may be empty.</p>
+<div class="listingblock"><div class="title">Streaming the request body</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">sendfile</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Filepath</font>) <font color="#990000">-&gt;</font>
+ {<font color="#FF6600">ok</font>, <font color="#009900">IoDevice</font>} <font color="#990000">=</font> <b><font color="#000000">file:open</font></b>(<font color="#009900">Filepath</font>, [<font color="#FF6600">read</font>, <b><font color="#000080">binary</font></b>, <font color="#FF6600">raw</font>]),
+ <b><font color="#000000">do_sendfile</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">IoDevice</font>)<font color="#990000">.</font>
+
+<b><font color="#000000">do_sendfile</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">IoDevice</font>) <font color="#990000">-&gt;</font>
+ <b><font color="#0000FF">case</font></b> <b><font color="#000000">file:read</font></b>(<font color="#009900">IoDevice</font>, <font color="#993399">8000</font>) <b><font color="#0000FF">of</font></b>
+ <font color="#FF6600">eof</font> <font color="#990000">-&gt;</font>
+ <b><font color="#000000">gun:data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">fin</font>, <font color="#990000">&lt;&lt;&gt;&gt;</font>),
+ <b><font color="#000000">file:close</font></b>(<font color="#009900">IoDevice</font>);
+ {<font color="#FF6600">ok</font>, <font color="#009900">Bin</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">gun:data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">nofin</font>, <font color="#009900">Bin</font>),
+ <b><font color="#000000">do_sendfile</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">IoDevice</font>)
+ <b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<h4 id="_delete">DELETE</h4>
+<p>Use <code>gun:delete/2,3,4</code> to delete a resource.</p>
+<div class="listingblock"><div class="title">DELETE &quot;/organizations/ninenines&quot;</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">DELETE &quot;/organizations/ninenines&quot; with custom headers</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"user-agent"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"revolver/1.0"</font>}
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<h4 id="_options">OPTIONS</h4>
+<p>Use <code>gun:options/2,3</code> to request information about a resource.</p>
+<div class="listingblock"><div class="title">OPTIONS &quot;/organizations/ninenines&quot;</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:options</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">OPTIONS &quot;/organizations/ninenines&quot; with custom headers</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:options</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"user-agent"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"revolver/1.0"</font>}
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>You can also use this function to request information about the server itself.</p>
+<div class="listingblock"><div class="title">OPTIONS &quot;*&quot;</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:options</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"*"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h4 id="_requests_with_an_arbitrary_method">Requests with an arbitrary method</h4>
+<p>The functions <code>gun:headers/4,5</code> or <code>gun:request/5,6</code> can be used to send requests with a configurable method name. It is mostly useful when you need a method that Gun does not understand natively.</p>
+<div class="listingblock"><div class="title">Example of a TRACE request</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:request</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"TRACE"</font>, <font color="#FF0000">"/"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"max-forwards"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"30"</font>}
+], <font color="#990000">&lt;&lt;&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_processing_responses">Processing responses</h2>
+<p>All data received from the server is sent to the calling process as a message. First a <code>gun_response</code> message is sent, followed by zero or more <code>gun_data</code> messages. If something goes wrong, a <code>gun_error</code> message is sent instead.</p>
+<p>The response message will inform you whether there will be data messages following. If it contains <code>fin</code> there will be no data messages. If it contains <code>nofin</code> then one or more data messages will follow.</p>
+<p>When using HTTP/2 this value is sent with the frame and simply passed on in the message. When using HTTP/1.1 however Gun must guess whether data will follow by looking at the response headers.</p>
+<p>You can receive messages directly, or you can use the <em>await</em> functions to let Gun receive them for you.</p>
+<div class="listingblock"><div class="title">Receiving a response using receive</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">print_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">MRef</font>) <font color="#990000">-&gt;</font>
+ <font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/"</font>),
+ <b><font color="#0000FF">receive</font></b>
+ {<font color="#FF6600">gun_response</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">fin</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>} <font color="#990000">-&gt;</font>
+ <font color="#FF6600">no_data</font>;
+ {<font color="#FF6600">gun_response</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">nofin</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">receive_data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">MRef</font>, <font color="#009900">StreamRef</font>);
+ {<font color="#FF6600">'DOWN'</font>, <font color="#009900">MRef</font>, <b><font color="#000080">process</font></b>, <font color="#009900">ConnPid</font>, <font color="#009900">Reason</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">error_logger:error_msg</font></b>(<font color="#FF0000">"Oops!"</font>),
+ <b><font color="#000080">exit</font></b>(<font color="#009900">Reason</font>)
+ <b><font color="#0000FF">after</font></b> <font color="#993399">1000</font> <font color="#990000">-&gt;</font>
+ <b><font color="#000080">exit</font></b>(<font color="#FF6600">timeout</font>)
+ <b><font color="#0000FF">end</font></b><font color="#990000">.</font>
+
+<b><font color="#000000">receive_data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">MRef</font>, <font color="#009900">StreamRef</font>) <font color="#990000">-&gt;</font>
+ <b><font color="#0000FF">receive</font></b>
+ {<font color="#FF6600">gun_data</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">nofin</font>, <font color="#009900">Data</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">io:format</font></b>(<font color="#FF0000">"~s~n"</font>, [<font color="#009900">Data</font>]),
+ <b><font color="#000000">receive_data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">MRef</font>, <font color="#009900">StreamRef</font>);
+ {<font color="#FF6600">gun_data</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">fin</font>, <font color="#009900">Data</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">io:format</font></b>(<font color="#FF0000">"~s~n"</font>, [<font color="#009900">Data</font>]);
+ {<font color="#FF6600">'DOWN'</font>, <font color="#009900">MRef</font>, <b><font color="#000080">process</font></b>, <font color="#009900">ConnPid</font>, <font color="#009900">Reason</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">error_logger:error_msg</font></b>(<font color="#FF0000">"Oops!"</font>),
+ <b><font color="#000080">exit</font></b>(<font color="#009900">Reason</font>)
+ <b><font color="#0000FF">after</font></b> <font color="#993399">1000</font> <font color="#990000">-&gt;</font>
+ <b><font color="#000080">exit</font></b>(<font color="#FF6600">timeout</font>)
+ <b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<p>While it may seem verbose, using messages like this has the advantage of never locking your process, allowing you to easily debug your code. It also allows you to start more than one connection and concurrently perform queries on all of them at the same time.</p>
+<p>You can also use Gun in a synchronous manner by using the <em>await</em> functions.</p>
+<p>The <code>gun:await/2,3,4</code> function will wait until it receives a response to, a pushed resource related to, or data from the given stream.</p>
+<p>When calling <code>gun:await/2,3</code> and not passing a monitor reference, one is automatically created for you for the duration of the call.</p>
+<p>The <code>gun:await_body/2,3,4</code> works similarly, but returns the body received. Both functions can be combined to receive the response and its body sequentially.</p>
+<div class="listingblock"><div class="title">Receiving a response using await</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/"</font>),
+<b><font color="#0000FF">case</font></b> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>) <b><font color="#0000FF">of</font></b>
+ {<font color="#FF6600">response</font>, <font color="#FF6600">fin</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>} <font color="#990000">-&gt;</font>
+ <font color="#FF6600">no_data</font>;
+ {<font color="#FF6600">response</font>, <font color="#FF6600">nofin</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>} <font color="#990000">-&gt;</font>
+ {<font color="#FF6600">ok</font>, <font color="#009900">Body</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>),
+ <b><font color="#000000">io:format</font></b>(<font color="#FF0000">"~s~n"</font>, [<font color="#009900">Body</font>])
+<b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_handling_streams_pushed_by_the_server">Handling streams pushed by the server</h2>
+<p>The HTTP/2 protocol allows the server to push more than one resource for every request. It will start sending those extra resources before it starts sending the response itself, so Gun will send you <code>gun_push</code> messages before <code>gun_response</code> when that happens.</p>
+<p>You can safely choose to ignore <code>gun_push</code> messages, or you can handle them. If you do, you can either receive the messages directly or use <em>await</em> functions.</p>
+<p>The <code>gun_push</code> message contains both the new stream reference and the stream reference of the original request.</p>
+<div class="listingblock"><div class="title">Receiving a pushed response using receive</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#0000FF">receive</font></b>
+ {<font color="#FF6600">gun_push</font>, <font color="#009900">ConnPid</font>, <font color="#009900">OriginalStreamRef</font>, <font color="#009900">PushedStreamRef</font>,
+ <font color="#009900">Method</font>, <font color="#009900">Host</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">enjoy</font></b>()
+<b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<p>If you use the <code>gun:await/2,3,4</code> function, however, Gun will use the original reference to identify the message but will return a tuple that doesn&apos;t contain it.</p>
+<div class="listingblock"><div class="title">Receiving a pushed response using await</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">push</font>, <font color="#009900">PushedStreamRef</font>, <font color="#009900">Method</font>, <font color="#009900">URI</font>, <font color="#009900">Headers</font>}
+ <font color="#990000">=</font> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">OriginalStreamRef</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>The <code>PushedStreamRef</code> variable can then be used with <code>gun:await/2,3,4</code> and <code>gun:await_body/2,3,4</code>.</p>
+<h2 id="_flushing_unwanted_messages">Flushing unwanted messages</h2>
+<p>Gun provides the function <code>gun:flush/1</code> to quickly get rid of unwanted messages sitting in the process mailbox. You can use it to get rid of all messages related to a connection, or just the messages related to a stream.</p>
+<div class="listingblock"><div class="title">Flush all messages from a Gun connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:flush</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Flush all messages from a specific stream</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:flush</font></b>(<font color="#009900">StreamRef</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_redirecting_responses_to_a_different_process">Redirecting responses to a different process</h2>
+<p>Gun allows you to specify which process will handle responses to a request via the <code>reply_to</code> request option.</p>
+<div class="listingblock"><div class="title">GET &quot;/organizations/ninenines&quot; to a different process</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/organizations/ninenines"</font>, [],
+ #{<font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <font color="#009900">Pid</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/connect/">
+ Connection
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/websocket/">
+ Websocket
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/index.html b/docs/en/gun/2.2/guide/index.html
new file mode 100644
index 00000000..89e70f77
--- /dev/null
+++ b/docs/en/gun/2.2/guide/index.html
@@ -0,0 +1,192 @@
+<!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 User Guide</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=7" 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>Gun User Guide</span></h1>
+
+<h2 id="_interface">Interface</h2>
+<ul><li><a href="introduction/">Introduction</a>
+</li>
+<li><a href="start/">Starting and stopping</a>
+</li>
+<li><a href="protocols/">Supported protocols</a>
+</li>
+<li><a href="connect/">Connection</a>
+</li>
+<li><a href="http/">Using HTTP</a>
+</li>
+<li><a href="websocket/">Using Websocket</a>
+</li>
+</ul>
+<h2 id="_advanced">Advanced</h2>
+<ul><li><a href="internals_tls_over_tls/">Internals: TLS over TLS</a>
+</li>
+</ul>
+<h2 id="_additional_information">Additional information</h2>
+<ul><li><a href="migrating_from_2.1/">Migrating from Gun 2.1 to 2.2</a>
+</li>
+<li><a href="migrating_from_2.0/">Migrating from Gun 2.0 to 2.1</a>
+</li>
+<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>
+<li><a href="migrating_from_1.0/">Migrating from Gun 1.0 to 1.1</a>
+</li>
+</ul>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/internals_tls_over_tls.asciidoc b/docs/en/gun/2.2/guide/internals_tls_over_tls.asciidoc
new file mode 100644
index 00000000..07e86698
--- /dev/null
+++ b/docs/en/gun/2.2/guide/internals_tls_over_tls.asciidoc
@@ -0,0 +1,177 @@
+== Internals: TLS over TLS
+
+The `ssl` application that comes with Erlang/OTP implements
+TLS using an interface equivalent to the `gen_tcp` interface:
+you get and manipulate a socket. The TLS encoding and
+decoding is applied transparently to the data sent and
+received.
+
+In order to have a TLS layer inside another TLS layer we
+need a way to encode the data of the inner layer before
+we pass it to the outer layer. We cannot do this with
+a socket interface. Thankfully, the `ssl` application comes
+with options that allow to transform an `sslsocket()` into
+an encoder/decoder.
+
+The implementation is however a little convoluted as a
+result. This chapter aims to give an overview of how it
+all works under the hood.
+
+=== gun_tls_proxy
+
+The module `gun_tls_proxy` implements an intermediary process
+that sits between the Gun process and the TLS process. It is
+responsible for routing data from the Gun process to the TLS
+process, and from the TLS process to the Gun process.
+
+In order to obtain the TLS encoded data the `cb_info` option
+is given to the `ssl:connect/3` function. This replaces the
+default TCP outer socket module with our own custom module.
+Gun uses the `gun_tls_proxy_cb` module instead. This module
+will forward all messages to the `gun_tls_proxy` process.
+
+The resulting operations looks like this:
+
+----
+Gun process <-> gun_tls_proxy <-> sslsocket() <-> gun_tls_proxy <-> "inner socket"
+----
+
+The "inner socket" is the socket for the Gun connection.
+The `gun_tls_proxy` process decides where to send or
+receive the data based on where it's coming from. This
+is how it knows whether the data has been encoded/decoded
+or not.
+
+Because the `ssl:connect/3` function call is blocking,
+a temporary process is used while connecting. This is required
+because the `gun_tls_proxy` needs to forward data even while
+performing the TLS handshake, otherwise the `ssl:connect/3`
+call will not complete.
+
+The result of the `ssl:connect/3` call is forward to the Gun
+process, along with the negotiated protocols when the connection
+was successful.
+
+The `gun_tls_proxy_cb` module does not actually implement
+`{active,N}` as requested by the `ssl` application. Instead
+it uses `{active,true}`.
+
+The behavior of the `gun_tls_proxy` process will vary depending
+on whether the TLS over TLS is done connection-wide or only
+stream-wide.
+
+=== Connection-wide TLS over TLS
+
+When used for the entire connection, the `gun_tls_proxy` process
+will act like a real socket once connected. The only difference
+is how the connection is performed. As mentioned earlier, the
+result of the `ssl:connect/3` call is sent back to the Gun process.
+
+When doing TLS over TLS the processes will end up looking like
+this:
+
+----
+Gun process <-> gun_tls_proxy <-> "inner socket"
+----
+
+The details of the interactions between `gun_tls_proxy` and
+its associated `sslsocket()` have been removed in order to
+better illustrate the concept.
+
+When adding another layer this becomes:
+
+----
+Gun process <-> gun_tls_proxy <-> gun_tls_proxy <-> sslsocket()
+----
+
+This is what is done when only HTTP/1.1 and SOCKS proxies are
+involved.
+
+=== Stream-wide TLS over TLS
+
+The same cannot be done for HTTP/2 proxies. This is because the
+HTTP/2 CONNECT method does not apply to the entire connection,
+but only to a stream. The proxied data must be wrapped inside
+a DATA frame. It cannot be sent directly. This is what must be
+done:
+
+----
+Gun process -> gun_tls_proxy -> Gun process -> "inner socket"
+----
+
+The "inner socket" is the socket for the HTTP/2 connection.
+
+In order to tell Gun to continue processing the data, the
+`handle_continue` mechanism is introduced. When `gun_tls_proxy`
+has TLS encoded the data it sends it back to the Gun process,
+wrapped in a `handle_continue` tuple. This tuple contains
+enough information to figure out what stream the data belongs
+to and what should be done next. Gun will therefore route the
+data to the correct layer and continue sending it.
+
+This solution is also used for receiving data, except in the
+reverse order.
+
+=== Routing to the right stream
+
+In order to know where to route the data, the `stream_ref`
+had to be modified to contain all the references to the
+individual streams. So if the tunnel is identified by
+`StreamA` and a request on this tunnel is identified
+by `StreamB`, then the stream is known as `[StreamA, StreamB]`
+to the user. Gun then routes first to `StreamA`, a
+tunnel, which continues routing to `StreamB`.
+
+A problem comes up if an intermediary is a SOCKS server,
+for example in the following scenario:
+
+----
+HTTP/2 proxy <-> SOCKS proxy <-> HTTP/1.1 origin
+----
+
+The SOCKS protocol doesn't have a concept of stream,
+therefore when we refer to request to the origin server
+they are `[StreamA, StreamB]`, not `[StreamA, StreamB, StreamC]`.
+This is a problem for routing encoded/decoded TLS data
+to the SOCKS layer: we don't have a built-in way of referring
+to the SOCKS layer.
+
+The solution is to have a separate `handle_continue_stream_ref`
+value that assigns a reference to the SOCKS layers. Gun will
+then be able to forward `handle_continue` message, and only
+them, to the appropriate layer.
+
+Gun therefore has two different routing avenues, but the
+mechanism remains the same otherwise.
+
+=== gun_tunnel
+
+In order to simplify the routing, the `gun_tunnel` module
+was introduced. For each intermediary (including the original
+CONNECT stream at the HTTP/2 layer) there is a `gun_tunnel`
+module.
+
+Going back to the example above:
+
+----
+HTTP/2 proxy <-> SOCKS proxy <-> HTTP/1.1 origin
+----
+
+In this case the modules involved to handle the request
+will be as follow:
+
+----
+gun_http2 <-> gun_tunnel <-> gun_tunnel <-> gun_http
+----
+
+The `gun_http2` module doesn't do any routing, it just
+passes everything to the `gun_tunnel` module. The `gun_tunnel`
+module will then do the routing, which involves removing
+`StreamA` from `[StreamA, StreamB]` where appropriate.
+
+The `gun_tunnel` module also receives the TLS encoded/decoded
+data and forwards it appropriately. When it comes to sending
+data, it will return a `send` command that allows the previous
+module to continue sending the data. The `gun_http2` module
+will ultimately wrap the data to be sent in a DATA frame and
+send it to the "inner socket".
diff --git a/docs/en/gun/2.2/guide/internals_tls_over_tls/index.html b/docs/en/gun/2.2/guide/internals_tls_over_tls/index.html
new file mode 100644
index 00000000..f6352758
--- /dev/null
+++ b/docs/en/gun/2.2/guide/internals_tls_over_tls/index.html
@@ -0,0 +1,224 @@
+<!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: Internals: TLS over TLS</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=7" 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>Internals: TLS over TLS</span></h1>
+
+<p>The <code>ssl</code> application that comes with Erlang/OTP implements TLS using an interface equivalent to the <code>gen_tcp</code> interface: you get and manipulate a socket. The TLS encoding and decoding is applied transparently to the data sent and received.</p>
+<p>In order to have a TLS layer inside another TLS layer we need a way to encode the data of the inner layer before we pass it to the outer layer. We cannot do this with a socket interface. Thankfully, the <code>ssl</code> application comes with options that allow to transform an <code>sslsocket()</code> into an encoder/decoder.</p>
+<p>The implementation is however a little convoluted as a result. This chapter aims to give an overview of how it all works under the hood.</p>
+<h2 id="_gun_tls_proxy">gun_tls_proxy</h2>
+<p>The module <code>gun_tls_proxy</code> implements an intermediary process that sits between the Gun process and the TLS process. It is responsible for routing data from the Gun process to the TLS process, and from the TLS process to the Gun process.</p>
+<p>In order to obtain the TLS encoded data the <code>cb_info</code> option is given to the <code>ssl:connect/3</code> function. This replaces the default TCP outer socket module with our own custom module. Gun uses the <code>gun_tls_proxy_cb</code> module instead. This module will forward all messages to the <code>gun_tls_proxy</code> process.</p>
+<p>The resulting operations looks like this:</p>
+<div class="listingblock"><div class="content"><pre>Gun process &lt;-&gt; gun_tls_proxy &lt;-&gt; sslsocket() &lt;-&gt; gun_tls_proxy &lt;-&gt; &quot;inner socket&quot;</pre></div></div>
+<p>The &quot;inner socket&quot; is the socket for the Gun connection. The <code>gun_tls_proxy</code> process decides where to send or receive the data based on where it&apos;s coming from. This is how it knows whether the data has been encoded/decoded or not.</p>
+<p>Because the <code>ssl:connect/3</code> function call is blocking, a temporary process is used while connecting. This is required because the <code>gun_tls_proxy</code> needs to forward data even while performing the TLS handshake, otherwise the <code>ssl:connect/3</code> call will not complete.</p>
+<p>The result of the <code>ssl:connect/3</code> call is forward to the Gun process, along with the negotiated protocols when the connection was successful.</p>
+<p>The <code>gun_tls_proxy_cb</code> module does not actually implement <code>{active,N}</code> as requested by the <code>ssl</code> application. Instead it uses <code>{active,true}</code>.</p>
+<p>The behavior of the <code>gun_tls_proxy</code> process will vary depending on whether the TLS over TLS is done connection-wide or only stream-wide.</p>
+<h2 id="_connection_wide_tls_over_tls">Connection-wide TLS over TLS</h2>
+<p>When used for the entire connection, the <code>gun_tls_proxy</code> process will act like a real socket once connected. The only difference is how the connection is performed. As mentioned earlier, the result of the <code>ssl:connect/3</code> call is sent back to the Gun process.</p>
+<p>When doing TLS over TLS the processes will end up looking like this:</p>
+<div class="listingblock"><div class="content"><pre>Gun process &lt;-&gt; gun_tls_proxy &lt;-&gt; &quot;inner socket&quot;</pre></div></div>
+<p>The details of the interactions between <code>gun_tls_proxy</code> and its associated <code>sslsocket()</code> have been removed in order to better illustrate the concept.</p>
+<p>When adding another layer this becomes:</p>
+<div class="listingblock"><div class="content"><pre>Gun process &lt;-&gt; gun_tls_proxy &lt;-&gt; gun_tls_proxy &lt;-&gt; sslsocket()</pre></div></div>
+<p>This is what is done when only HTTP/1.1 and SOCKS proxies are involved.</p>
+<h2 id="_stream_wide_tls_over_tls">Stream-wide TLS over TLS</h2>
+<p>The same cannot be done for HTTP/2 proxies. This is because the HTTP/2 CONNECT method does not apply to the entire connection, but only to a stream. The proxied data must be wrapped inside a DATA frame. It cannot be sent directly. This is what must be done:</p>
+<div class="listingblock"><div class="content"><pre>Gun process -&gt; gun_tls_proxy -&gt; Gun process -&gt; &quot;inner socket&quot;</pre></div></div>
+<p>The &quot;inner socket&quot; is the socket for the HTTP/2 connection.</p>
+<p>In order to tell Gun to continue processing the data, the <code>handle_continue</code> mechanism is introduced. When <code>gun_tls_proxy</code> has TLS encoded the data it sends it back to the Gun process, wrapped in a <code>handle_continue</code> tuple. This tuple contains enough information to figure out what stream the data belongs to and what should be done next. Gun will therefore route the data to the correct layer and continue sending it.</p>
+<p>This solution is also used for receiving data, except in the reverse order.</p>
+<h2 id="_routing_to_the_right_stream">Routing to the right stream</h2>
+<p>In order to know where to route the data, the <code>stream_ref</code> had to be modified to contain all the references to the individual streams. So if the tunnel is identified by <code>StreamA</code> and a request on this tunnel is identified by <code>StreamB</code>, then the stream is known as <code>[StreamA, StreamB]</code> to the user. Gun then routes first to <code>StreamA</code>, a tunnel, which continues routing to <code>StreamB</code>.</p>
+<p>A problem comes up if an intermediary is a SOCKS server, for example in the following scenario:</p>
+<div class="listingblock"><div class="content"><pre>HTTP/2 proxy &lt;-&gt; SOCKS proxy &lt;-&gt; HTTP/1.1 origin</pre></div></div>
+<p>The SOCKS protocol doesn&apos;t have a concept of stream, therefore when we refer to request to the origin server they are <code>[StreamA, StreamB]</code>, not <code>[StreamA, StreamB, StreamC]</code>. This is a problem for routing encoded/decoded TLS data to the SOCKS layer: we don&apos;t have a built-in way of referring to the SOCKS layer.</p>
+<p>The solution is to have a separate <code>handle_continue_stream_ref</code> value that assigns a reference to the SOCKS layers. Gun will then be able to forward <code>handle_continue</code> message, and only them, to the appropriate layer.</p>
+<p>Gun therefore has two different routing avenues, but the mechanism remains the same otherwise.</p>
+<h2 id="_gun_tunnel">gun_tunnel</h2>
+<p>In order to simplify the routing, the <code>gun_tunnel</code> module was introduced. For each intermediary (including the original CONNECT stream at the HTTP/2 layer) there is a <code>gun_tunnel</code> module.</p>
+<p>Going back to the example above:</p>
+<div class="listingblock"><div class="content"><pre>HTTP/2 proxy &lt;-&gt; SOCKS proxy &lt;-&gt; HTTP/1.1 origin</pre></div></div>
+<p>In this case the modules involved to handle the request will be as follow:</p>
+<div class="listingblock"><div class="content"><pre>gun_http2 &lt;-&gt; gun_tunnel &lt;-&gt; gun_tunnel &lt;-&gt; gun_http</pre></div></div>
+<p>The <code>gun_http2</code> module doesn&apos;t do any routing, it just passes everything to the <code>gun_tunnel</code> module. The <code>gun_tunnel</code> module will then do the routing, which involves removing <code>StreamA</code> from <code>[StreamA, StreamB]</code> where appropriate.</p>
+<p>The <code>gun_tunnel</code> module also receives the TLS encoded/decoded data and forwards it appropriately. When it comes to sending data, it will return a <code>send</code> command that allows the previous module to continue sending the data. The <code>gun_http2</code> module will ultimately wrap the data to be sent in a DATA frame and send it to the &quot;inner socket&quot;.</p>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/websocket/">
+ Websocket
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.1/">
+ Migrating from Gun 2.1 to 2.2
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/introduction.asciidoc b/docs/en/gun/2.2/guide/introduction.asciidoc
new file mode 100644
index 00000000..d96419d9
--- /dev/null
+++ b/docs/en/gun/2.2/guide/introduction.asciidoc
@@ -0,0 +1,49 @@
+[[introduction]]
+== Introduction
+
+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 22.0 and newer.
+
+=== License
+
+Gun uses the ISC License.
+
+----
+Copyright (c) 2013-2025, Loïc Hoguin <[email protected]>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+----
+
+=== Versioning
+
+Gun uses http://semver.org/[Semantic Versioning 2.0.0].
+
+=== Conventions
+
+In the HTTP protocol, the method name is case sensitive. All standard
+method names are uppercase.
+
+Header names are case insensitive. Gun converts all the header names
+to lowercase, including request headers provided by your application.
diff --git a/docs/en/gun/2.2/guide/introduction/index.html b/docs/en/gun/2.2/guide/introduction/index.html
new file mode 100644
index 00000000..a4d151c7
--- /dev/null
+++ b/docs/en/gun/2.2/guide/introduction/index.html
@@ -0,0 +1,205 @@
+<!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: Introduction</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=7" 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>Introduction</span></h1>
+
+<p>Gun is an HTTP client for Erlang/OTP.</p>
+<p>Gun supports the HTTP/2, HTTP/1.1 and Websocket protocols.</p>
+<h2 id="_prerequisites">Prerequisites</h2>
+<p>Knowledge of Erlang, but also of the HTTP/1.1, HTTP/2 and Websocket protocols is required in order to read this guide.</p>
+<h2 id="_supported_platforms">Supported platforms</h2>
+<p>Gun is tested and supported on Linux, FreeBSD, Windows and OSX.</p>
+<p>Gun is developed for Erlang/OTP 22.0 and newer.</p>
+<h2 id="_license">License</h2>
+<p>Gun uses the ISC License.</p>
+<div class="listingblock"><div class="content"><pre>Copyright (c) 2013-2025, Loïc Hoguin &lt;[email protected]&gt;
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</pre></div></div>
+<h2 id="_versioning">Versioning</h2>
+<p>Gun uses <a href="http://semver.org/">Semantic Versioning 2.0.0</a>.</p>
+<h2 id="_conventions">Conventions</h2>
+<p>In the HTTP protocol, the method name is case sensitive. All standard method names are uppercase.</p>
+<p>Header names are case insensitive. Gun converts all the header names to lowercase, including request headers provided by your application.</p>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/start/">
+ Starting and stopping
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/migrating_from_1.0.asciidoc b/docs/en/gun/2.2/guide/migrating_from_1.0.asciidoc
new file mode 100644
index 00000000..3a11cfd3
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_1.0.asciidoc
@@ -0,0 +1,21 @@
+[appendix]
+== Migrating from Gun 1.0 to 1.1
+
+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.
+
+* A number of Dialyzer warnings have been fixed.
diff --git a/docs/en/gun/2.2/guide/migrating_from_1.0/index.html b/docs/en/gun/2.2/guide/migrating_from_1.0/index.html
new file mode 100644
index 00000000..1cbe9d2f
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_1.0/index.html
@@ -0,0 +1,191 @@
+<!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.0 to 1.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=7" 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.0 to 1.1</span></h1>
+
+<p>Gun 1.1 updates the Cowlib dependency to 2.5.1 and fixes a few problems with experimental features.</p>
+<h2 id="_features_added">Features added</h2>
+<ul><li>Update Cowlib to 2.5.1
+</li>
+</ul>
+<h2 id="_bugs_fixed">Bugs fixed</h2>
+<ul><li>A bug in the experimental <code>gun_sse_h</code> where lone id lines were not propagated has been fixed by updating the Cowlib dependency.
+</li>
+<li>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.
+</li>
+<li>A number of Dialyzer warnings have been fixed.
+</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.1/">
+ Migrating from Gun 1.1 to 1.2
+ </a>
+
+
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/migrating_from_1.1.asciidoc b/docs/en/gun/2.2/guide/migrating_from_1.1.asciidoc
new file mode 100644
index 00000000..7e0acf9d
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_1.1.asciidoc
@@ -0,0 +1,28 @@
+[appendix]
+== Migrating from Gun 1.1 to 1.2
+
+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.
+
+* Gun supports sending CONNECT requests with authorization
+ credentials using the Basic authentication mechanism.
+
+* Update Cowlib to 2.6.0
+
+=== 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.2/guide/migrating_from_1.1/index.html b/docs/en/gun/2.2/guide/migrating_from_1.1/index.html
new file mode 100644
index 00000000..3fd8e17a
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_1.1/index.html
@@ -0,0 +1,197 @@
+<!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.1 to 1.2</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=7" 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.1 to 1.2</span></h1>
+
+<p>Gun 1.2 adds support for the CONNECT request over HTTP/1.1 connections.</p>
+<h2 id="_features_added">Features added</h2>
+<ul><li>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.
+</li>
+<li>Gun supports sending multiple CONNECT requests, allowing the tunnel to the origin server to go through multiple proxies.
+</li>
+<li>Gun supports sending CONNECT requests with authorization credentials using the Basic authentication mechanism.
+</li>
+<li>Update Cowlib to 2.6.0
+</li>
+</ul>
+<h2 id="_functions_added">Functions added</h2>
+<ul><li>The functions <code>gun:connect/2,3,4</code> have been added. They can be used to initiate CONNECT requests on HTTP/1.1 connections.
+</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.2/">
+ Migrating from Gun 1.2 to 1.3
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.0/">
+ Migrating from Gun 1.0 to 1.1
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/migrating_from_1.2.asciidoc b/docs/en/gun/2.2/guide/migrating_from_1.2.asciidoc
new file mode 100644
index 00000000..3b310920
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_1.2.asciidoc
@@ -0,0 +1,39 @@
+[appendix]
+== Migrating from Gun 1.2 to 1.3
+
+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.
+
+=== Bugs fixed
+
+* Fix connecting to HTTP/2 over TLS origin servers via
+ HTTP/1.1 CONNECT proxies.
+
+* Do not send the HTTP/1.1 keepalive while waiting for
+ a response to a CONNECT request.
+
+* Do not crash on HTTP/2 HEADERS frames with the
+ PRIORITY flag set.
+
+* Do not crash on HTTP/2 HEADERS frames when the
+ END_HEADERS flag is not set.
+
+* Do not crash on unknown HTTP/2 frame types.
+
+* Reject HTTP/2 WINDOW_UPDATE frames when they would
+ cause the window to overflow.
+
+* Send a GOAWAY frame on closing the HTTP/2 connection.
diff --git a/docs/en/gun/2.2/guide/migrating_from_1.2/index.html b/docs/en/gun/2.2/guide/migrating_from_1.2/index.html
new file mode 100644
index 00000000..6d3c0498
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_1.2/index.html
@@ -0,0 +1,207 @@
+<!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.2 to 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=7" 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.2 to 1.3</span></h1>
+
+<p>Gun 1.3 improves the support for CONNECT requests introduced in the previous version and documents Websocket protocol negotiation.</p>
+<h2 id="_features_added">Features added</h2>
+<ul><li>The <code>protocols</code> CONNECT destination option has been added as a replacement for the now deprecated <code>protocol</code> option.
+</li>
+<li>Add built-in support for Websocket protocol negotiation through the Websocket option <code>protocols</code>. The interface of the handler module currently remains undocumented and must be set to <code>gun_ws_h</code>.
+</li>
+<li>Add the h2specd HTTP/2 test suite from the h2spec project.
+</li>
+</ul>
+<h2 id="_bugs_fixed">Bugs fixed</h2>
+<ul><li>Fix connecting to HTTP/2 over TLS origin servers via HTTP/1.1 CONNECT proxies.
+</li>
+<li>Do not send the HTTP/1.1 keepalive while waiting for a response to a CONNECT request.
+</li>
+<li>Do not crash on HTTP/2 HEADERS frames with the PRIORITY flag set.
+</li>
+<li>Do not crash on HTTP/2 HEADERS frames when the END_HEADERS flag is not set.
+</li>
+<li>Do not crash on unknown HTTP/2 frame types.
+</li>
+<li>Reject HTTP/2 WINDOW_UPDATE frames when they would cause the window to overflow.
+</li>
+<li>Send a GOAWAY frame on closing the HTTP/2 connection.
+</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.3/">
+ Migrating from Gun 1.3 to 2.0
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.1/">
+ Migrating from Gun 1.1 to 1.2
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/migrating_from_1.3.asciidoc b/docs/en/gun/2.2/guide/migrating_from_1.3.asciidoc
new file mode 100644
index 00000000..59f3381c
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_1.3.asciidoc
@@ -0,0 +1,329 @@
+[appendix]
+== Migrating from Gun 1.3 to 2.0
+
+Gun 2.0 includes state of the art tunnel support. With
+Gun 2.0 it is possible to make requests or data go through
+any number of proxy endpoints using any combination of
+TCP or TLS transports and HTTP/1.1, HTTP/2 or SOCKS5
+protocols. All combinations of the scenario Proxy1 ->
+Proxy2 -> Origin are tested and known to work.
+
+Gun 2.0 adds many more features such as Websocket over
+HTTP/2, a built-in cookie store, graceful shutdown, flow
+control for data messages, event handlers and more.
+
+Gun 2.0 also introduces an experimental pool module that
+automatically maintains connections and routes requests
+to the right process, in a similar way as browsers do.
+
+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 22.0 or greater.
+
+=== Features added
+
+* Cookie store support has been added. The `cookie_store`
+ option allows configuring the cookie store backend.
+ The `gun_cookies` module provides functions to help
+ implementing such a backend. Gun comes with the backend
+ `gun_cookies_list` which provides a per-connection,
+ non-persistent cookie store. The cookie store engine
+ implements the entire RFC6265bis draft algorithms except
+ the parts about non-HTTP cookies as no such interface is
+ provided; and the parts about SameSite as Gun has no
+ concept of "browsing context".
+
+* 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.
+
+* Gun will better detect connection failures by checking the
+ return value from sending data to the socket. This applies
+ to all supported protocols. In addition, Gun now enables
+ `send_timeout_close` with a `send_timeout` value defaulting
+ to 15s.
+
+* 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 now supports connecting through SOCKS proxies,
+ including secure SOCKS proxies. Both unauthenticated
+ and username/password authentication are supported.
+
+* Gun can connect through any number of HTTP, HTTPS, SOCKS
+ or secure SOCKS proxies, including SOCKS proxies
+ located after HTTP(S) proxies. The ultimate endpoint
+ may be using any protocol, including plain TCP, TLS,
+ HTTP/1.1 or HTTP/2.
+
+* 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 `gun: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.
+
+* Gun now automatically lowercases provided header names.
+
+* 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.
+
+* A new `keepalive_tolerance` option for HTTP/2 enables
+ closing the connection automatically when ping acks
+ are not received in a timely manner. It nicely
+ complements the `keepalive` option that makes Gun
+ send pings.
+
+* Gun now supports Websocket subprotocol negotiation
+ and the feature is fully documented and tested.
+ This can be used to create handlers that will
+ implement a protocol from within the Gun process itself.
+ The negotiation is enabled by setting the `protocols`
+ setting. The `default_protocol` and `user_opts`
+ settings are also useful.
+
+* It is now possible to send many Websocket frames in
+ a single `gun:ws_send/3` call.
+
+* Gun may now send Websocket ping frames automatically
+ at intervals determined by the `keepalive` option. It
+ is disabled by default.
+
+* 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`.
+
+* 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).
+
+* Update Cowlib to 2.12.0.
+
+=== Experimental features added
+
+* The `gun_pool` module was introduced. Its interface
+ is very similar to the `gun` module, but as it is an
+ experimental feature, it has not been documented yet.
+ The intent is to obtain feedback and document it in
+ an upcoming minor release. Pools are created for each
+ authority (host/port) and scope (user-defined value)
+ pairs and are resolved accordingly using the information
+ provided in the request and request options. Connections
+ may concurrently handle multiple requests/responses
+ from as many different processes as required.
+
+=== 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 and HTTP/2. 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 as well as the cookie store.
+
+* 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 upgrades,
+ tunnel up and Websocket messages and return them.
+
+* Requests may now include the `tunnel` option to send the
+ request on a specific tunnel.
+
+* 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 and those that aren't.
+
+* The function `gun:ws_send/2` has been replaced with the
+ function `gun:ws_send/3`. The stream reference for the
+ corresponding Websocket upgrade request must now be given.
+
+=== Messages added
+
+* The `gun_tunnel_up` message has been added.
+
+=== 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 now better detect connection closes in some cases.
+
+* 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.
+
+* Protocol options provided for a tunnel destination were
+ sometimes ignored. This should no longer be the case.
+
+* 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 end, 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.
+
+* HTTP/2 connection preface errors are now properly detected
+ and propagated in the `gun_down` message to the connection
+ owner as well as the exit reason of the Gun process.
+
+* HTTP/2 connection preface errors now provide a different
+ human readable error when the data received looks like an
+ HTTP/1.x response.
+
+* HTTP/2 connection errors were missing the human readable
+ reason in the `gun_error` message. This has been corrected.
+
+* Fix the host and :authority (pseudo-)headers when connecting
+ to an IPv6 address given as a tuple. They were lacking the
+ surrounding brackets.
+
+* Fix a crash in gun:info/1 when the socket was closed before
+ we call Transport:sockname/1.
+
+* Fix flushing by stream reference. When the `gun_inform`
+ message was flushed the function would switch to flushing
+ all messages from the pid instead of only messages from
+ the given stream.
+
+* Allow setting a custom SNI value.
+
+* Fix double sending of last chunk in HTTP/1.1 when Gun is
+ asked to send empty data before closing the stream.
+
+* Gun will now properly ignore parameters when the media
+ type is text/event-stream.
+
+* Avoid noisy crashes in the TLS over TLS code.
+
+* Gun will now include the StreamRef of Websocket streams
+ when sending `gun_down` messages.
+
+* Gun will no longer reject HTTP proxies that use HTTP/1.0
+ for the version in their response.
diff --git a/docs/en/gun/2.2/guide/migrating_from_1.3/index.html b/docs/en/gun/2.2/guide/migrating_from_1.3/index.html
new file mode 100644
index 00000000..c0320084
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_1.3/index.html
@@ -0,0 +1,339 @@
+<!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=7" 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 includes state of the art tunnel support. With Gun 2.0 it is possible to make requests or data go through any number of proxy endpoints using any combination of TCP or TLS transports and HTTP/1.1, HTTP/2 or SOCKS5 protocols. All combinations of the scenario Proxy1 -&gt; Proxy2 -&gt; Origin are tested and known to work.</p>
+<p>Gun 2.0 adds many more features such as Websocket over HTTP/2, a built-in cookie store, graceful shutdown, flow control for data messages, event handlers and more.</p>
+<p>Gun 2.0 also introduces an experimental pool module that automatically maintains connections and routes requests to the right process, in a similar way as browsers do.</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 22.0 or greater.</p>
+<h2 id="_features_added">Features added</h2>
+<ul><li>Cookie store support has been added. The <code>cookie_store</code> option allows configuring the cookie store backend. The <code>gun_cookies</code> module provides functions to help implementing such a backend. Gun comes with the backend <code>gun_cookies_list</code> which provides a per-connection, non-persistent cookie store. The cookie store engine implements the entire RFC6265bis draft algorithms except the parts about non-HTTP cookies as no such interface is provided; and the parts about SameSite as Gun has no concept of &quot;browsing context&quot;.
+</li>
+<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>Gun will better detect connection failures by checking the return value from sending data to the socket. This applies to all supported protocols. In addition, Gun now enables <code>send_timeout_close</code> with a <code>send_timeout</code> value defaulting to 15s.
+</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 now supports connecting through SOCKS proxies, including secure SOCKS proxies. Both unauthenticated and username/password authentication are supported.
+</li>
+<li>Gun can connect through any number of HTTP, HTTPS, SOCKS or secure SOCKS proxies, including SOCKS proxies located after HTTP(S) proxies. The ultimate endpoint may be using any protocol, including plain TCP, TLS, HTTP/1.1 or HTTP/2.
+</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>gun: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.
+</li>
+<li>Header names may now be provided as binary, string or atom.
+</li>
+<li>Gun now automatically lowercases provided header names.
+</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>A new <code>keepalive_tolerance</code> option for HTTP/2 enables closing the connection automatically when ping acks are not received in a timely manner. It nicely complements the <code>keepalive</code> option that makes Gun send pings.
+</li>
+<li>Gun now supports Websocket subprotocol negotiation and the feature is fully documented and tested. This can be used to create handlers that will implement a protocol from within the Gun process itself. The negotiation is enabled by setting the <code>protocols</code> setting. The <code>default_protocol</code> and <code>user_opts</code> settings are also useful.
+</li>
+<li>It is now possible to send many Websocket frames in a single <code>gun:ws_send/3</code> call.
+</li>
+<li>Gun may now send Websocket ping frames automatically at intervals determined by the <code>keepalive</code> option. It is disabled by default.
+</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>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>
+<li>Update Cowlib to 2.12.0.
+</li>
+</ul>
+<h2 id="_experimental_features_added">Experimental features added</h2>
+<ul><li>The <code>gun_pool</code> module was introduced. Its interface is very similar to the <code>gun</code> module, but as it is an experimental feature, it has not been documented yet. The intent is to obtain feedback and document it in an upcoming minor release. Pools are created for each authority (host/port) and scope (user-defined value) pairs and are resolved accordingly using the information provided in the request and request options. Connections may concurrently handle multiple requests/responses from as many different processes as required.
+</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 and HTTP/2. 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 as well as the cookie store.
+</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 upgrades, tunnel up and Websocket messages and return them.
+</li>
+<li>Requests may now include the <code>tunnel</code> option to send the request on a specific tunnel.
+</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 and those that aren&apos;t.
+</li>
+<li>The function <code>gun:ws_send/2</code> has been replaced with the function <code>gun:ws_send/3</code>. The stream reference for the corresponding Websocket upgrade request must now be given.
+</li>
+</ul>
+<h2 id="_messages_added">Messages added</h2>
+<ul><li>The <code>gun_tunnel_up</code> message has been added.
+</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 now better detect connection closes in some cases.
+</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>Protocol options provided for a tunnel destination were sometimes ignored. This should no longer be the case.
+</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 end, 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>
+<li>HTTP/2 connection preface errors are now properly detected and propagated in the <code>gun_down</code> message to the connection owner as well as the exit reason of the Gun process.
+</li>
+<li>HTTP/2 connection preface errors now provide a different human readable error when the data received looks like an HTTP/1.x response.
+</li>
+<li>HTTP/2 connection errors were missing the human readable reason in the <code>gun_error</code> message. This has been corrected.
+</li>
+<li>Fix the host and :authority (pseudo-)headers when connecting to an IPv6 address given as a tuple. They were lacking the surrounding brackets.
+</li>
+<li>Fix a crash in gun:info/1 when the socket was closed before we call Transport:sockname/1.
+</li>
+<li>Fix flushing by stream reference. When the <code>gun_inform</code> message was flushed the function would switch to flushing all messages from the pid instead of only messages from the given stream.
+</li>
+<li>Allow setting a custom SNI value.
+</li>
+<li>Fix double sending of last chunk in HTTP/1.1 when Gun is asked to send empty data before closing the stream.
+</li>
+<li>Gun will now properly ignore parameters when the media type is text/event-stream.
+</li>
+<li>Avoid noisy crashes in the TLS over TLS code.
+</li>
+<li>Gun will now include the StreamRef of Websocket streams when sending <code>gun_down</code> messages.
+</li>
+<li>Gun will no longer reject HTTP proxies that use HTTP/1.0 for the version in their response.
+</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.0/">
+ Migrating from Gun 2.0 to 2.1
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.2/">
+ Migrating from Gun 1.2 to 1.3
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/migrating_from_2.0.asciidoc b/docs/en/gun/2.2/guide/migrating_from_2.0.asciidoc
new file mode 100644
index 00000000..cfd64a8d
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_2.0.asciidoc
@@ -0,0 +1,25 @@
+[appendix]
+== Migrating from Gun 2.0 to 2.1
+
+Gun 2.1 contains a small security improvement for
+the HTTP/2 protocol, as well as includes a small
+number of fixes and improvements.
+
+Gun 2.1 requires Erlang/OTP 22.0 or greater.
+
+=== Features added
+
+* A new HTTP/2 option `max_fragmented_header_block_size` has
+ been added to limit the size of header blocks that are
+ sent over multiple HEADERS and CONTINUATION frames.
+
+* Update Cowlib to 2.13.0.
+
+=== Bugs fixed
+
+* Gun will no longer configure the NPN TLS extension,
+ which has long been replaced by ALPN. NPN is not
+ compatible with TLS 1.3.
+
+* Gun will no longer crash when TLS connections close
+ very early in the connection's life time.
diff --git a/docs/en/gun/2.2/guide/migrating_from_2.0/index.html b/docs/en/gun/2.2/guide/migrating_from_2.0/index.html
new file mode 100644
index 00000000..420628f7
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_2.0/index.html
@@ -0,0 +1,196 @@
+<!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 2.0 to 2.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=7" 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 2.0 to 2.1</span></h1>
+
+<p>Gun 2.1 contains a small security improvement for the HTTP/2 protocol, as well as includes a small number of fixes and improvements.</p>
+<p>Gun 2.1 requires Erlang/OTP 22.0 or greater.</p>
+<h2 id="_features_added">Features added</h2>
+<ul><li>A new HTTP/2 option <code>max_fragmented_header_block_size</code> has been added to limit the size of header blocks that are sent over multiple HEADERS and CONTINUATION frames.
+</li>
+<li>Update Cowlib to 2.13.0.
+</li>
+</ul>
+<h2 id="_bugs_fixed">Bugs fixed</h2>
+<ul><li>Gun will no longer configure the NPN TLS extension, which has long been replaced by ALPN. NPN is not compatible with TLS 1.3.
+</li>
+<li>Gun will no longer crash when TLS connections close very early in the connection&apos;s life time.
+</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.1/">
+ Migrating from Gun 2.1 to 2.2
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.3/">
+ Migrating from Gun 1.3 to 2.0
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/migrating_from_2.1.asciidoc b/docs/en/gun/2.2/guide/migrating_from_2.1.asciidoc
new file mode 100644
index 00000000..3cacc9eb
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_2.1.asciidoc
@@ -0,0 +1,88 @@
+[appendix]
+== Migrating from Gun 2.1 to 2.2
+
+Gun 2.2 contains many features and fixes, including
+an experimental HTTP/3 implementation.
+
+Gun 2.2 requires Erlang/OTP 24.0 or greater.
+
+=== Features added
+
+* Gun will now do wildcard certificate matching by
+ default, as required by the HTTP protocol, by
+ setting the `customize_hostname_check` ssl option.
+
+* User pings are now supported for HTTP/2. User pings
+ are PING frames sent by the user, with the
+ corresponding PING_ACK resulting in a `gun_notify`
+ message being sent to the user process. They can
+ be used to measure latency or do other checks.
+
+* The `reply_to` request option has been extended to
+ accept a fun or an MFA that will be called when a
+ reply must be sent to the user process.
+
+* The `state_name`, `event_handler` and `event_handler_state`
+ fields were added to `gun:info/1`.
+
+* Update Cowlib to 2.15.0.
+
+=== Experimental features added
+
+* Experimental support for HTTP/3 has been added.
+ Websocket over HTTP/3 is not currently implemented.
+ HTTP/3 support is disabled by default; to enable,
+ the environment variable GUN_QUICER must be set at
+ compile-time.
+
+=== Bugs fixed
+
+* TLS 1.3 performs certificate validation independently
+ from the handshake, which means that certificate errors
+ can arrive after the handshake has completed. This is
+ in part to support post-handshake authentication. Gun
+ will now replace `{error, closed}` and similar socket
+ errors with the TLS alert when possible, including for
+ TLS over TLS and TLS over HTTP/2 scenarios.
+
+* HTTP/2 tunneling has been improved: WINDOW_UPDATE
+ frames are now properly sent, and flow control is
+ handled. In addition closing the stream is better
+ handled. This impacts both proxying scenarios as
+ well as Websocket over HTTP/2.
+
+* HTTP/2 will now properly send a NO_ERROR "error"
+ code when initiating graceful shutdown.
+
+* HTTP/2 will now properly track the number of
+ streams currently running and immediately fail
+ when the user tries to open a stream too many
+ compared to what the server allows.
+
+* Sometimes stray HTTP/2 timeout messages could
+ be received, producing a log message. This was
+ because they were not cleaned up on disconnect.
+ Now they are.
+
+* Socket errors were not properly handled when
+ sending Websocket PONG frames. This has been
+ corrected.
+
+* Trying to send a Websocket frame over an HTTP
+ connection (before the Websocket upgrade) will
+ now result in an error sent to the user process.
+
+* When connecting to HTTP via a Unix domain socket,
+ Gun will now set the host header to "localhost"
+ by default. Previously an invalid host header
+ was sent.
+
+* Data could be lost when switching to the raw
+ protocol. This has been corrected.
+
+* Documentation has been updated to describe the
+ `notify_settings_changed` option; as well as
+ to recommend disabling automatic reconnect when
+ Websocket is used; and to provide context around
+ potential security risks due to HTTP/2 compressed
+ headers.
diff --git a/docs/en/gun/2.2/guide/migrating_from_2.1/index.html b/docs/en/gun/2.2/guide/migrating_from_2.1/index.html
new file mode 100644
index 00000000..19ebe2a9
--- /dev/null
+++ b/docs/en/gun/2.2/guide/migrating_from_2.1/index.html
@@ -0,0 +1,222 @@
+<!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 2.1 to 2.2</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=7" 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 2.1 to 2.2</span></h1>
+
+<p>Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation.</p>
+<p>Gun 2.2 requires Erlang/OTP 24.0 or greater.</p>
+<h2 id="_features_added">Features added</h2>
+<ul><li>Gun will now do wildcard certificate matching by default, as required by the HTTP protocol, by setting the <code>customize_hostname_check</code> ssl option.
+</li>
+<li>User pings are now supported for HTTP/2. User pings are PING frames sent by the user, with the corresponding PING_ACK resulting in a <code>gun_notify</code> message being sent to the user process. They can be used to measure latency or do other checks.
+</li>
+<li>The <code>reply_to</code> request option has been extended to accept a fun or an MFA that will be called when a reply must be sent to the user process.
+</li>
+<li>The <code>state_name</code>, <code>event_handler</code> and <code>event_handler_state</code> fields were added to <code>gun:info/1</code>.
+</li>
+<li>Update Cowlib to 2.15.0.
+</li>
+</ul>
+<h2 id="_experimental_features_added">Experimental features added</h2>
+<ul><li>Experimental support for HTTP/3 has been added. Websocket over HTTP/3 is not currently implemented. HTTP/3 support is disabled by default; to enable, the environment variable GUN_QUICER must be set at compile-time.
+</li>
+</ul>
+<h2 id="_bugs_fixed">Bugs fixed</h2>
+<ul><li>TLS 1.3 performs certificate validation independently from the handshake, which means that certificate errors can arrive after the handshake has completed. This is in part to support post-handshake authentication. Gun will now replace <code>{error, closed}</code> and similar socket errors with the TLS alert when possible, including for TLS over TLS and TLS over HTTP/2 scenarios.
+</li>
+<li>HTTP/2 tunneling has been improved: WINDOW_UPDATE frames are now properly sent, and flow control is handled. In addition closing the stream is better handled. This impacts both proxying scenarios as well as Websocket over HTTP/2.
+</li>
+<li>HTTP/2 will now properly send a NO_ERROR &quot;error&quot; code when initiating graceful shutdown.
+</li>
+<li>HTTP/2 will now properly track the number of streams currently running and immediately fail when the user tries to open a stream too many compared to what the server allows.
+</li>
+<li>Sometimes stray HTTP/2 timeout messages could be received, producing a log message. This was because they were not cleaned up on disconnect. Now they are.
+</li>
+<li>Socket errors were not properly handled when sending Websocket PONG frames. This has been corrected.
+</li>
+<li>Trying to send a Websocket frame over an HTTP connection (before the Websocket upgrade) will now result in an error sent to the user process.
+</li>
+<li>When connecting to HTTP via a Unix domain socket, Gun will now set the host header to &quot;localhost&quot; by default. Previously an invalid host header was sent.
+</li>
+<li>Data could be lost when switching to the raw protocol. This has been corrected.
+</li>
+<li>Documentation has been updated to describe the <code>notify_settings_changed</code> option; as well as to recommend disabling automatic reconnect when Websocket is used; and to provide context around potential security risks due to HTTP/2 compressed headers.
+</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/internals_tls_over_tls/">
+ Internals: TLS over TLS
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.0/">
+ Migrating from Gun 2.0 to 2.1
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/protocols.asciidoc b/docs/en/gun/2.2/guide/protocols.asciidoc
new file mode 100644
index 00000000..cb354faa
--- /dev/null
+++ b/docs/en/gun/2.2/guide/protocols.asciidoc
@@ -0,0 +1,134 @@
+[[protocols]]
+== Supported protocols
+
+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. They will always be sent
+before the `gun_response` message.
+
+Gun will send a `gun_response` message for every response
+received, followed by zero or more `gun_data` messages for
+the response body, which is optionally terminated by a
+`gun_trailers` message. If something goes wrong, a `gun_error`
+will be sent instead.
+
+Gun provides convenience functions for dealing with messages.
+The `gun:await/2,3,4` function waits for a response to the given
+request, and the `gun:await_body/2,3,4` function for the
+response body. The `gun:flush/1` function can be used to clear all
+messages related to a request or a connection from the mailbox
+of the calling process.
+
+The function `gun:cancel/2` can be used to silence the
+response to a request previously sent if it is no longer
+needed. When using HTTP/1.1 there is no multiplexing so
+Gun will have to receive the response fully before any
+other responses can be received.
+
+Finally, Gun can upgrade an HTTP/1.1 connection to Websocket.
+It provides the `gun:ws_upgrade/2,3,4` function for that
+purpose. A `gun_upgrade` message will be sent on success;
+a `gun_response` message otherwise.
+
+=== HTTP/2
+
+HTTP/2 is a binary protocol based on HTTP, compatible with
+the HTTP semantics, that reduces the complexity of parsing
+requests and responses, compresses the HTTP headers and
+allows the server to push additional resources along with
+the normal response to the original request.
+
+The HTTP/2 interface is very similar to HTTP/1.1, so this
+section instead focuses on the differences in the interface
+for the two protocols.
+
+Gun will send `gun_push` messages for every push received.
+They will always be sent before the `gun_response` message.
+They can be ignored safely if they are not needed, or they
+can be canceled.
+
+The `gun:cancel/2` function will use the HTTP/2 stream
+cancellation mechanism which allows Gun to inform the
+server to stop sending a response for this particular
+request, saving resources.
+
+Note that because HTTP/2 headers are compressed, there
+are scenarios where it is possible to probe or extract
+data, creating security risks. One scenario being the
+use of Gun as a proxy to create a single connection to
+an origin, with requests coming from multiple mutually
+distrustful entities. Gun will provide configuration
+options to restrict headers that can be compressed in
+a future release.
+
+=== Websocket
+
+Websocket is a binary protocol built on top of HTTP that
+allows asynchronous concurrent communication between the
+client and the server. A Websocket server can push data to
+the client at any time.
+
+Once the Websocket connection is established over an HTTP/1.1
+connection, the only operation available on this connection
+is sending Websocket frames using `gun:ws_send/3`.
+
+Gun will send a `gun_ws` message for every frame received.
+
+It is recommended to disable automatic reconnect when
+Websocket is used because Gun cannot automatically upgrade
+to Websocket on reconnect, and so an undetected disconnect
+may lead to many error messages from Gun.
+
+=== Summary
+
+The two following tables summarize the supported operations
+and the messages Gun sends depending on the connection's
+current protocol.
+
+.Supported operations per protocol
+[cols="<,3*^",options="header"]
+|===
+| Operation | HTTP/1.1 | HTTP/2 | Websocket
+| delete | yes | yes | no
+| get | yes | yes | no
+| head | yes | yes | no
+| options | yes | yes | no
+| patch | yes | yes | no
+| post | yes | yes | no
+| put | yes | yes | no
+| request | yes | yes | no
+| data | yes | yes | no
+| await | yes | yes | no
+| await_body | yes | yes | no
+| flush | yes | yes | no
+| cancel | yes | yes | no
+| ws_upgrade | yes | yes | no
+| ws_send | no | no | yes
+|===
+
+.Messages sent per protocol
+[cols="<,3*^",options="header"]
+|===
+| Message | HTTP/1.1 | HTTP/2 | Websocket
+| gun_push | no | yes | no
+| gun_inform | yes | yes | no
+| gun_response | yes | yes | no
+| gun_data | yes | yes | no
+| gun_trailers | yes | yes | no
+| gun_error | yes | yes | yes
+| gun_upgrade | yes | yes | no
+| gun_ws | no | no | yes
+|===
diff --git a/docs/en/gun/2.2/guide/protocols/index.html b/docs/en/gun/2.2/guide/protocols/index.html
new file mode 100644
index 00000000..dc4eeed0
--- /dev/null
+++ b/docs/en/gun/2.2/guide/protocols/index.html
@@ -0,0 +1,333 @@
+<!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: Supported protocols</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=7" 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>Supported protocols</span></h1>
+
+<p>This chapter describes the protocols supported and the operations available to them.</p>
+<h2 id="_http_1_1">HTTP/1.1</h2>
+<p>HTTP/1.1 is a text request-response protocol. The client sends a request, the server sends back a response.</p>
+<p>Gun provides convenience functions for performing GET, HEAD, OPTIONS, POST, PATCH, PUT, and DELETE requests. All these functions are aliases of <code>gun:headers/4,5</code> or <code>gun:request/5,6</code> for the respective methods. Gun also provides a <code>gun:data/4</code> function for streaming the request body.</p>
+<p>Gun will send a <code>gun_inform</code> message for every intermediate informational responses received. They will always be sent before the <code>gun_response</code> message.</p>
+<p>Gun will send a <code>gun_response</code> message for every response received, followed by zero or more <code>gun_data</code> messages for the response body, which is optionally terminated by a <code>gun_trailers</code> message. If something goes wrong, a <code>gun_error</code> will be sent instead.</p>
+<p>Gun provides convenience functions for dealing with messages. The <code>gun:await/2,3,4</code> function waits for a response to the given request, and the <code>gun:await_body/2,3,4</code> function for the response body. The <code>gun:flush/1</code> function can be used to clear all messages related to a request or a connection from the mailbox of the calling process.</p>
+<p>The function <code>gun:cancel/2</code> can be used to silence the response to a request previously sent if it is no longer needed. When using HTTP/1.1 there is no multiplexing so Gun will have to receive the response fully before any other responses can be received.</p>
+<p>Finally, Gun can upgrade an HTTP/1.1 connection to Websocket. It provides the <code>gun:ws_upgrade/2,3,4</code> function for that purpose. A <code>gun_upgrade</code> message will be sent on success; a <code>gun_response</code> message otherwise.</p>
+<h2 id="_http_2">HTTP/2</h2>
+<p>HTTP/2 is a binary protocol based on HTTP, compatible with the HTTP semantics, that reduces the complexity of parsing requests and responses, compresses the HTTP headers and allows the server to push additional resources along with the normal response to the original request.</p>
+<p>The HTTP/2 interface is very similar to HTTP/1.1, so this section instead focuses on the differences in the interface for the two protocols.</p>
+<p>Gun will send <code>gun_push</code> messages for every push received. They will always be sent before the <code>gun_response</code> message. They can be ignored safely if they are not needed, or they can be canceled.</p>
+<p>The <code>gun:cancel/2</code> function will use the HTTP/2 stream cancellation mechanism which allows Gun to inform the server to stop sending a response for this particular request, saving resources.</p>
+<p>Note that because HTTP/2 headers are compressed, there are scenarios where it is possible to probe or extract data, creating security risks. One scenario being the use of Gun as a proxy to create a single connection to an origin, with requests coming from multiple mutually distrustful entities. Gun will provide configuration options to restrict headers that can be compressed in a future release.</p>
+<h2 id="_websocket">Websocket</h2>
+<p>Websocket is a binary protocol built on top of HTTP that allows asynchronous concurrent communication between the client and the server. A Websocket server can push data to the client at any time.</p>
+<p>Once the Websocket connection is established over an HTTP/1.1 connection, the only operation available on this connection is sending Websocket frames using <code>gun:ws_send/3</code>.</p>
+<p>Gun will send a <code>gun_ws</code> message for every frame received.</p>
+<p>It is recommended to disable automatic reconnect when Websocket is used because Gun cannot automatically upgrade to Websocket on reconnect, and so an undetected disconnect may lead to many error messages from Gun.</p>
+<h2 id="_summary">Summary</h2>
+<p>The two following tables summarize the supported operations and the messages Gun sends depending on the connection&apos;s current protocol.</p>
+<table rules="all" width="100%" frame="border"
+ cellspacing="0" cellpadding="4">
+<caption>Supported operations per protocol</caption><thead><tr><th>Operation</th>
+<th>HTTP/1.1</th>
+<th>HTTP/2</th>
+<th>Websocket</th>
+</tr></thead><tbody><tr><td>delete</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>get</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>head</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>options</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>patch</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>post</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>put</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>request</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>data</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>await</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>await_body</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>flush</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>cancel</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>ws_upgrade</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>ws_send</td>
+<td>no</td>
+<td>no</td>
+<td>yes</td>
+</tr>
+</tbody></table>
+<table rules="all" width="100%" frame="border"
+ cellspacing="0" cellpadding="4">
+<caption>Messages sent per protocol</caption><thead><tr><th>Message</th>
+<th>HTTP/1.1</th>
+<th>HTTP/2</th>
+<th>Websocket</th>
+</tr></thead><tbody><tr><td>gun_push</td>
+<td>no</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>gun_inform</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>gun_response</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>gun_data</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>gun_trailers</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>gun_error</td>
+<td>yes</td>
+<td>yes</td>
+<td>yes</td>
+</tr>
+<tr><td>gun_upgrade</td>
+<td>yes</td>
+<td>yes</td>
+<td>no</td>
+</tr>
+<tr><td>gun_ws</td>
+<td>no</td>
+<td>no</td>
+<td>yes</td>
+</tr>
+</tbody></table>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/start/">
+ Starting and stopping
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/connect/">
+ Connection
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/start.asciidoc b/docs/en/gun/2.2/guide/start.asciidoc
new file mode 100644
index 00000000..09720dca
--- /dev/null
+++ b/docs/en/gun/2.2/guide/start.asciidoc
@@ -0,0 +1,43 @@
+[[start]]
+== Starting and stopping
+
+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
+[source,make]
+----
+DEPS = gun
+----
+
+=== Starting
+
+Gun is an _OTP application_. It needs to be started before you can
+use it.
+
+.Starting Gun in an Erlang shell
+[source,erlang]
+----
+1> application:ensure_all_started(gun).
+{ok,[crypto,cowlib,asn1,public_key,ssl,gun]}
+----
+
+=== Stopping
+
+You can stop Gun using the `application:stop/1` function, however
+only Gun will be stopped. This is the reverse of `application:start/1`.
+The `application_ensure_all_started/1` function has no equivalent for
+stopping all applications.
+
+.Stopping Gun
+[source,erlang]
+----
+application:stop(gun).
+----
diff --git a/docs/en/gun/2.2/guide/start/index.html b/docs/en/gun/2.2/guide/start/index.html
new file mode 100644
index 00000000..c3a4f507
--- /dev/null
+++ b/docs/en/gun/2.2/guide/start/index.html
@@ -0,0 +1,208 @@
+<!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: Starting and stopping</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=7" 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>Starting and stopping</span></h1>
+
+<p>This chapter describes how to start and stop the Gun application.</p>
+<h2 id="_setting_up">Setting up</h2>
+<p>Specify Gun as a dependency to your application in your favorite build tool.</p>
+<p>With Erlang.mk this is done by adding <code>gun</code> to the <code>DEPS</code> variable in your Makefile.</p>
+<div class="listingblock"><div class="title">Adding Gun as an Erlang.mk dependency</div>
+<div class="content">source-highlight: could not find a language definition for make
+</div></div>
+<h2 id="_starting">Starting</h2>
+<p>Gun is an <em>OTP application</em>. It needs to be started before you can use it.</p>
+<div class="listingblock"><div class="title">Starting Gun in an Erlang shell</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#993399">1</font><font color="#990000">&gt;</font> <b><font color="#000000">application:ensure_all_started</font></b>(<font color="#FF6600">gun</font>)<font color="#990000">.</font>
+{<font color="#FF6600">ok</font>,[<font color="#FF6600">crypto</font>,<font color="#FF6600">cowlib</font>,<font color="#FF6600">asn1</font>,<font color="#FF6600">public_key</font>,<font color="#FF6600">ssl</font>,<font color="#FF6600">gun</font>]}</tt></pre>
+</div></div>
+<h2 id="_stopping">Stopping</h2>
+<p>You can stop Gun using the <code>application:stop/1</code> function, however only Gun will be stopped. This is the reverse of <code>application:start/1</code>. The <code>application_ensure_all_started/1</code> function has no equivalent for stopping all applications.</p>
+<div class="listingblock"><div class="title">Stopping Gun</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">application:stop</font></b>(<font color="#FF6600">gun</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/introduction/">
+ Introduction
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/protocols/">
+ Supported protocols
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/guide/websocket.asciidoc b/docs/en/gun/2.2/guide/websocket.asciidoc
new file mode 100644
index 00000000..31b014bf
--- /dev/null
+++ b/docs/en/gun/2.2/guide/websocket.asciidoc
@@ -0,0 +1,141 @@
+[[websocket]]
+== Websocket
+
+This chapter describes how to use the Gun client for
+communicating with a Websocket server.
+
+// @todo recovering from connection failure, reconnecting to Websocket etc.
+
+=== 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. This function can be called anytime after connection,
+so you can send HTTP requests before upgrading to Websocket.
+
+.Upgrade to Websocket
+[source,erlang]
+----
+gun:ws_upgrade(ConnPid, "/websocket").
+----
+
+Gun will set all the necessary headers for performing the
+Websocket upgrade, but you can specify additional headers
+if needed. For example you can authenticate.
+
+.Upgrade to Websocket using HTTP authentication
+[source,erlang]
+----
+gun:ws_upgrade(ConnPid, "/websocket", [
+ {<<"authorization">>, "Basic dXNlcm5hbWU6cGFzc3dvcmQ="}
+]).
+----
+
+You can pass the Websocket options as part of the `gun:open/2,3`
+call when opening the connection, or using the `gun:ws_upgrade/4`.
+The fourth argument is those same options.
+
+Gun can negotiate the protocol to be used for the Websocket
+connection. The `protocols` option can be given with a list
+of protocols accepted and the corresponding handler module.
+Note that the interface for handler modules is currently
+undocumented and must be set to `gun_ws_h`.
+
+.Upgrade to Websocket with protocol negotiation
+[source,erlang]
+----
+StreamRef = gun:ws_upgrade(ConnPid, "/websocket", []
+ #{protocols => [{<<"xmpp">>, gun_ws_h}]}).
+----
+
+The upgrade will fail if the server cannot satisfy the
+protocol negotiation.
+
+When the upgrade succeeds, a `gun_upgrade` message is sent.
+If the server does not understand Websocket or refused the
+upgrade, a `gun_response` message is sent. If Gun couldn't
+perform the upgrade due to an error (for example attempting
+to upgrade to Websocket on an HTTP/1.0 connection) then a
+`gun_error` message is sent.
+
+When the server does not understand Websocket, it may send
+a meaningful response which should be processed. In the
+following example we however ignore it:
+
+[source,erlang]
+----
+receive
+ {gun_upgrade, ConnPid, StreamRef, [<<"websocket">>], Headers} ->
+ upgrade_success(ConnPid, StreamRef);
+ {gun_response, ConnPid, _, _, Status, Headers} ->
+ exit({ws_upgrade_failed, Status, Headers});
+ {gun_error, ConnPid, StreamRef, Reason} ->
+ exit({ws_upgrade_failed, Reason})
+ %% More clauses here as needed.
+after 1000 ->
+ exit(timeout)
+end.
+----
+
+=== Sending data
+
+Once the Websocket upgrade has completed successfully, you no
+longer have access to functions for performing requests. You
+can only send and receive Websocket messages.
+
+Use `gun:ws_send/3` to send messages to the server.
+
+.Send a text frame
+[source,erlang]
+----
+gun:ws_send(ConnPid, StreamRef, {text, "Hello!"}).
+----
+
+.Send a text frame, a binary frame and then close the connection
+[source,erlang]
+----
+gun:ws_send(ConnPid, StreamRef, [
+ {text, "Hello!"},
+ {binary, BinaryValue},
+ close
+]).
+----
+
+Note that if you send a close frame, Gun will close the connection
+cleanly but may attempt to reconnect afterwards depending on the
+`retry` configuration.
+
+=== Receiving data
+
+Gun sends an Erlang message to the owner process for every
+Websocket message it receives.
+
+[source,erlang]
+----
+receive
+ {gun_ws, ConnPid, StreamRef, Frame} ->
+ handle_frame(ConnPid, StreamRef, Frame)
+end.
+----
+
+=== Automatic reconnect gotchas
+
+It is recommended to disable automatic reconnect when
+Websocket is used because Gun cannot automatically upgrade
+to Websocket on reconnect, and so an undetected disconnect
+may lead to many error messages from Gun.
+
+This can be done by setting the `retry` option to `0`
+when opening a connection:
+
+[source,erlang]
+----
+{ok, ConnPid} = gun:open("localhost", 12345, #{
+ retry ⇒ 0
+}).
+----
diff --git a/docs/en/gun/2.2/guide/websocket/index.html b/docs/en/gun/2.2/guide/websocket/index.html
new file mode 100644
index 00000000..291ebce3
--- /dev/null
+++ b/docs/en/gun/2.2/guide/websocket/index.html
@@ -0,0 +1,277 @@
+<!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: Websocket</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=7" 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>Websocket</span></h1>
+
+<p>This chapter describes how to use the Gun client for communicating with a Websocket server.</p>
+<!-- @todo recovering from connection failure, reconnecting to Websocket etc.-->
+<h2 id="_http_upgrade">HTTP upgrade</h2>
+<p>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.</p>
+<p>You must use the <code>gun:ws_upgrade/2,3,4</code> function to upgrade to Websocket. This function can be called anytime after connection, so you can send HTTP requests before upgrading to Websocket.</p>
+<div class="listingblock"><div class="title">Upgrade to Websocket</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/websocket"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>Gun will set all the necessary headers for performing the Websocket upgrade, but you can specify additional headers if needed. For example you can authenticate.</p>
+<div class="listingblock"><div class="title">Upgrade to Websocket using HTTP authentication</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/websocket"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"authorization"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF0000">"Basic dXNlcm5hbWU6cGFzc3dvcmQ="</font>}
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>You can pass the Websocket options as part of the <code>gun:open/2,3</code> call when opening the connection, or using the <code>gun:ws_upgrade/4</code>. The fourth argument is those same options.</p>
+<p>Gun can negotiate the protocol to be used for the Websocket connection. The <code>protocols</code> option can be given with a list of protocols accepted and the corresponding handler module. Note that the interface for handler modules is currently undocumented and must be set to <code>gun_ws_h</code>.</p>
+<div class="listingblock"><div class="title">Upgrade to Websocket with protocol negotiation</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/websocket"</font>, []
+ #{<font color="#0000FF">protocols</font> <font color="#990000">=&gt;</font> [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"xmpp"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF6600">gun_ws_h</font>}]})<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>The upgrade will fail if the server cannot satisfy the protocol negotiation.</p>
+<p>When the upgrade succeeds, a <code>gun_upgrade</code> message is sent. If the server does not understand Websocket or refused the upgrade, a <code>gun_response</code> message is sent. If Gun couldn&apos;t perform the upgrade due to an error (for example attempting to upgrade to Websocket on an HTTP/1.0 connection) then a <code>gun_error</code> message is sent.</p>
+<p>When the server does not understand Websocket, it may send a meaningful response which should be processed. In the following example we however ignore it:</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#0000FF">receive</font></b>
+ {<font color="#FF6600">gun_upgrade</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, [<font color="#990000">&lt;&lt;</font><font color="#FF0000">"websocket"</font><font color="#990000">&gt;&gt;</font>], <font color="#009900">Headers</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">upgrade_success</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>);
+ {<font color="#FF6600">gun_response</font>, <font color="#009900">ConnPid</font>, <font color="#990000">_</font>, <font color="#990000">_</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000080">exit</font></b>({<font color="#FF6600">ws_upgrade_failed</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>});
+ {<font color="#FF6600">gun_error</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Reason</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000080">exit</font></b>({<font color="#FF6600">ws_upgrade_failed</font>, <font color="#009900">Reason</font>})
+ <i><font color="#9A1900">%% More clauses here as needed.</font></i>
+<b><font color="#0000FF">after</font></b> <font color="#993399">1000</font> <font color="#990000">-&gt;</font>
+ <b><font color="#000080">exit</font></b>(<font color="#FF6600">timeout</font>)
+<b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_sending_data">Sending data</h2>
+<p>Once the Websocket upgrade has completed successfully, you no longer have access to functions for performing requests. You can only send and receive Websocket messages.</p>
+<p>Use <code>gun:ws_send/3</code> to send messages to the server.</p>
+<div class="listingblock"><div class="title">Send a text frame</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:ws_send</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, {<font color="#FF6600">text</font>, <font color="#FF0000">"Hello!"</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Send a text frame, a binary frame and then close the connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:ws_send</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, [
+ {<font color="#FF6600">text</font>, <font color="#FF0000">"Hello!"</font>},
+ {<b><font color="#000080">binary</font></b>, <font color="#009900">BinaryValue</font>},
+ <font color="#FF6600">close</font>
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>Note that if you send a close frame, Gun will close the connection cleanly but may attempt to reconnect afterwards depending on the <code>retry</code> configuration.</p>
+<h2 id="_receiving_data">Receiving data</h2>
+<p>Gun sends an Erlang message to the owner process for every Websocket message it receives.</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#0000FF">receive</font></b>
+ {<font color="#FF6600">gun_ws</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Frame</font>} <font color="#990000">-&gt;</font>
+ <b><font color="#000000">handle_frame</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Frame</font>)
+<b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_automatic_reconnect_gotchas">Automatic reconnect gotchas</h2>
+<p>It is recommended to disable automatic reconnect when Websocket is used because Gun cannot automatically upgrade to Websocket on reconnect, and so an undetected disconnect may lead to many error messages from Gun.</p>
+<p>This can be done by setting the <code>retry</code> option to <code>0</code> when opening a connection:</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"localhost"</font>, <font color="#993399">12345</font>, #{
+ <font color="#FF6600">retry</font> ⇒ <font color="#993399">0</font>
+})<font color="#990000">.</font></tt></pre>
+</div></div>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/gun/2.2/guide/http/">
+ HTTP
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/gun/2.2/guide/internals_tls_over_tls/">
+ Internals: TLS over TLS
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+
+ User Guide
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/guide">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/guide">2.1</a></li>
+
+ <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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.await/index.html b/docs/en/gun/2.2/manual/gun.await/index.html
new file mode 100644
index 00000000..36d14a4b
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.await/index.html
@@ -0,0 +1,258 @@
+<!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:await(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=7" 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>gun:await(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:await - Wait for a response</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#993399">5000</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">MonitorRef</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#993399">5000</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Timeout</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Timeout</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Timeout</font>, <font color="#009900">MonitorRef</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">Result</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">MonitorRef</font> <font color="#990000">::</font> <b><font color="#000080">reference</font></b>()
+<font color="#009900">Timeout</font> <font color="#990000">::</font> <b><font color="#000000">timeout</font></b>()
+<font color="#009900">Result</font> <font color="#990000">::</font> <b><font color="#000000">tuple</font></b>() <font color="#990000">-</font> <font color="#FF6600">see</font> <font color="#FF6600">below</font></tt></pre>
+</div></div>
+<p>Wait for a response.</p>
+<p>This function waits for a message from the given stream and returns it as a tuple. An error will be returned should the process fail or a relevant message is not received within the specified duration.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>Timeout</dt>
+<dd><p>How long to wait for a message, in milliseconds.</p>
+</dd>
+<dt>MonitorRef</dt>
+<dd><p>Monitor for the Gun connection process.</p>
+<p>A monitor is automatically created for the duration of this call when one is not provided.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A number of different tuples can be returned. They correspond to the message of the same name and they contain the same elements minus the pid and stream reference. Error tuples may also be returned when a timeout or an error occur.</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Result</font> <font color="#990000">::</font> {<font color="#FF6600">inform</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>}
+ | {<font color="#FF6600">response</font>, <font color="#009900">IsFin</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>}
+ | {<font color="#FF6600">data</font>, <font color="#009900">IsFin</font>, <font color="#009900">Data</font>}
+ | {<font color="#FF6600">trailers</font>, <font color="#009900">Trailers</font>}
+ | {<font color="#FF6600">push</font>, <font color="#009900">NewStreamRef</font>, <font color="#009900">Method</font>, <font color="#009900">URI</font>, <font color="#009900">Headers</font>}
+ | {<font color="#FF6600">upgrade</font>, <font color="#009900">Protocols</font>, <font color="#009900">Headers</font>}
+ | {<font color="#FF6600">ws</font>, <font color="#009900">Frame</font>}
+ | {<font color="#FF6600">error</font>, <font color="#009900">Reason</font>}
+
+<font color="#009900">Reason</font> <font color="#990000">::</font> {<font color="#FF6600">stream_error</font> | <font color="#FF6600">connection_error</font> | <font color="#FF6600">down</font>, <b><font color="#000000">any</font></b>()}
+ | <font color="#FF6600">timeout</font></tt></pre>
+</div></div>
+<p>Because the messages and returned tuples are equivalent, please refer to the manual pages for each message for further information:</p>
+<ul><li><a href="../gun_inform">gun_inform(3)</a> - Informational response
+</li>
+<li><a href="../gun_response">gun_response(3)</a> - Response
+</li>
+<li><a href="../gun_data">gun_data(3)</a> - Response body
+</li>
+<li><a href="../gun_trailers">gun_trailers(3)</a> - Response trailers
+</li>
+<li><a href="../gun_push">gun_push(3)</a> - Server-initiated push
+</li>
+<li><a href="../gun_upgrade">gun_upgrade(3)</a> - Successful protocol upgrade
+</li>
+<li><a href="../gun_ws">gun_ws(3)</a> - Websocket frame
+</li>
+</ul>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: <code>upgrade</code> and <code>ws</code> tuples can now be returned.
+</li>
+<li><strong>2.0</strong>: The error tuple type now includes the type of error.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Wait for a response</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/articles"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"accept"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/html;q=1.0, application/xml;q=0.1"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font>
+{<font color="#FF6600">response</font>, <font color="#FF6600">nofin</font>, <font color="#993399">200</font>, <font color="#009900">_Headers</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)<font color="#990000">.</font>
+{<font color="#FF6600">data</font>, <font color="#FF6600">fin</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"Hello world!"</font><font color="#990000">&gt;&gt;</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.options">gun:options(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.delete">gun:delete(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.await_body/index.html b/docs/en/gun/2.2/manual/gun.await_body/index.html
new file mode 100644
index 00000000..c0033c1a
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.await_body/index.html
@@ -0,0 +1,226 @@
+<!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:await_body(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=7" 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>gun:await_body(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:await_body - Wait for the complete response body</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#993399">5000</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">MonitorRef</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#993399">5000</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Timeout</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Timeout</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Timeout</font>, <font color="#009900">MonitorRef</font>)
+ <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">Body</font>} | {<font color="#FF6600">ok</font>, <font color="#009900">Body</font>, <font color="#009900">Trailers</font>} | {<font color="#FF6600">error</font>, <font color="#009900">Reason</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">MonitorRef</font> <font color="#990000">::</font> <b><font color="#000080">reference</font></b>()
+<font color="#009900">Timeout</font> <font color="#990000">::</font> <b><font color="#000000">timeout</font></b>()
+<font color="#009900">Body</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">Trailers</font> <font color="#990000">::</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]
+<font color="#009900">Reason</font> <font color="#990000">::</font> {<font color="#FF6600">stream_error</font> | <font color="#FF6600">connection_error</font> | <font color="#FF6600">down</font>, <b><font color="#000000">any</font></b>()}
+ | <font color="#FF6600">timeout</font></tt></pre>
+</div></div>
+<p>Wait for the complete response body.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>Timeout</dt>
+<dd><p>How long to wait for each message, in milliseconds.</p>
+</dd>
+<dt>MonitorRef</dt>
+<dd><p>Monitor for the Gun connection process.</p>
+<p>A monitor is automatically created for the duration of this call when one is not provided.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The body is returned, possibly with trailers if the request contained a <code>te: trailers</code> header. Error tuples may also be returned when a timeout or an error occur.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: The error tuple type now includes the type of error.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Wait for the complete response body</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/articles"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"accept"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/html;q=1.0, application/xml;q=0.1"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font>
+{<font color="#FF6600">response</font>, <font color="#FF6600">nofin</font>, <font color="#993399">200</font>, <font color="#009900">_Headers</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)<font color="#990000">.</font>
+{<font color="#FF6600">ok</font>, <font color="#009900">_Body</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await_body</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.options">gun:options(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.delete">gun:delete(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun.await">gun:await(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.await_up/index.html b/docs/en/gun/2.2/manual/gun.await_up/index.html
new file mode 100644
index 00000000..452bcaea
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.await_up/index.html
@@ -0,0 +1,217 @@
+<!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:await_up(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=7" 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>gun:await_up(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:await_up - Wait for the connection to be up</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">await_up</font></b>(<font color="#009900">ConnPid</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await_up</font></b>(<font color="#009900">ConnPid</font>, <font color="#993399">5000</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await_up</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">MonitorRef</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await_up</font></b>(<font color="#009900">ConnPid</font>, <font color="#993399">5000</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await_up</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Timeout</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">await_up</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Timeout</font>, <font color="#009900">MonitorRef</font>)
+
+<b><font color="#000000">await_up</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Timeout</font>, <font color="#009900">MonitorRef</font>)
+ <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">Protocol</font>} | {<font color="#FF6600">error</font>, <font color="#009900">Reason</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">MonitorRef</font> <font color="#990000">::</font> <b><font color="#000080">reference</font></b>()
+<font color="#009900">Timeout</font> <font color="#990000">::</font> <b><font color="#000000">timeout</font></b>()
+<font color="#009900">Protocol</font> <font color="#990000">::</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font>
+<font color="#009900">Reason</font> <font color="#990000">::</font> {<font color="#FF6600">down</font>, <b><font color="#000000">any</font></b>()} | <font color="#FF6600">timeout</font></tt></pre>
+</div></div>
+<p>Wait for the connection to be up.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Timeout</dt>
+<dd><p>How long to wait for, in milliseconds.</p>
+</dd>
+<dt>MonitorRef</dt>
+<dd><p>Monitor for the Gun connection process.</p>
+<p>A monitor is automatically created for the duration of this call when one is not provided.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The protocol selected for this connection. It can be used to determine the capabilities of the server. Error tuples may also be returned when a timeout or an error occur.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: The error tuple type now includes the type of error.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Wait for the connection to be up</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"example.org"</font>, <font color="#993399">443</font>)<font color="#990000">.</font>
+{<font color="#FF6600">ok</font>, <font color="#990000">_</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await_up</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a>, <a href="../gun_tunnel_up">gun_tunnel_up(3)</a>, <a href="../gun_up">gun_up(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.cancel/index.html b/docs/en/gun/2.2/manual/gun.cancel/index.html
new file mode 100644
index 00000000..addc8a75
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.cancel/index.html
@@ -0,0 +1,201 @@
+<!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:cancel(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=7" 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>gun:cancel(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:cancel - Cancel the given stream</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">cancel</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Cancel the given stream.</p>
+<p>The behavior of this function depends on the protocol selected.</p>
+<p>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.</p>
+<p>HTTP/2 allows cancelling streams at any time.</p>
+<p>This function is asynchronous. Messages related to this stream may still be sent after the function returns.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The atom <code>ok</code> is returned.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Cancel a stream</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:cancel</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.options">gun:options(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.delete">gun:delete(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun.stream_info">gun:stream_info(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.close/index.html b/docs/en/gun/2.2/manual/gun.close/index.html
new file mode 100644
index 00000000..f0c5a0a3
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.close/index.html
@@ -0,0 +1,193 @@
+<!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:close(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=7" 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>gun:close(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:close - Brutally close the connection</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">close</font></b>(<font color="#009900">ConnPid</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()</tt></pre>
+</div></div>
+<p>Brutally close the connection.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The atom <code>ok</code> is returned.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Close the connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#0000FF">ok</font> <font color="#990000">=</font> <b><font color="#000000">gun:close</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a>, <a href="../gun.shutdown">gun:shutdown(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.connect/index.html b/docs/en/gun/2.2/manual/gun.connect/index.html
new file mode 100644
index 00000000..1a31d920
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.connect/index.html
@@ -0,0 +1,254 @@
+<!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:connect(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=7" 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>gun:connect(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:connect - Establish a tunnel to the origin server</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">connect</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Destination</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">connect</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Destination</font>, [], #{})<font color="#990000">.</font>
+
+<b><font color="#000000">connect</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Destination</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">connect</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Destination</font>, <font color="#009900">Headers</font>, #{})<font color="#990000">.</font>
+
+<b><font color="#000000">connect</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Destination</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Destination</font> <font color="#990000">::</font> <b><font color="#000000">gun:connect_destination</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Establish a tunnel to the origin server.</p>
+<p>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.</p>
+<p>Gun will not automatically re-issue the CONNECT request upon reconnection to the proxy server. The <code>gun_up</code> message can be used to know when the tunnel needs to be established again.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Destination</dt>
+<dd><p>Destination of the CONNECT request.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.2</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Establish a tunnel</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"proxy.example.org"</font>, <font color="#993399">1080</font>),
+{<font color="#FF6600">ok</font>, <font color="#FF6600">http</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await_up</font></b>(<font color="#009900">ConnPid</font>),
+<font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:connect</font></b>(<font color="#009900">ConnPid</font>, #{
+ <font color="#0000FF">host</font> <font color="#990000">=&gt;</font> <font color="#FF0000">"origin-server.example.org"</font>,
+ <font color="#0000FF">port</font> <font color="#990000">=&gt;</font> <font color="#993399">80</font>
+}),
+{<font color="#FF6600">response</font>, <font color="#FF6600">fin</font>, <font color="#993399">200</font>, <font color="#990000">_</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>),
+<i><font color="#9A1900">%% Subsequent requests will be sent to origin-server.example.org.</font></i></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Establish a tunnel for a secure HTTP/2 connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"proxy.example.org"</font>, <font color="#993399">1080</font>),
+{<font color="#FF6600">ok</font>, <font color="#FF6600">http</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await_up</font></b>(<font color="#009900">ConnPid</font>),
+<font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:connect</font></b>(<font color="#009900">ConnPid</font>, #{
+ <font color="#0000FF">host</font> <font color="#990000">=&gt;</font> <font color="#FF0000">"origin-server.example.org"</font>,
+ <font color="#0000FF">port</font> <font color="#990000">=&gt;</font> <font color="#993399">443</font>,
+ <font color="#0000FF">protocols</font> <font color="#990000">=&gt;</font> [<font color="#FF6600">http2</font>],
+ <font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tls</font>
+}),
+{<font color="#FF6600">response</font>, <font color="#FF6600">fin</font>, <font color="#993399">200</font>, <font color="#990000">_</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>),
+<i><font color="#9A1900">%% Subsequent requests will be sent to origin-server.example.org.</font></i></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Establish a tunnel using proxy authorization</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"proxy.example.org"</font>, <font color="#993399">1080</font>),
+{<font color="#FF6600">ok</font>, <font color="#FF6600">http</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await_up</font></b>(<font color="#009900">ConnPid</font>),
+<font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:connect</font></b>(<font color="#009900">ConnPid</font>, #{
+ <font color="#0000FF">host</font> <font color="#990000">=&gt;</font> <font color="#FF0000">"origin-server.example.org"</font>,
+ <font color="#0000FF">port</font> <font color="#990000">=&gt;</font> <font color="#993399">80</font>,
+ <font color="#0000FF">username</font> <font color="#990000">=&gt;</font> <font color="#FF0000">"essen"</font>,
+ <font color="#0000FF">password</font> <font color="#990000">=&gt;</font> <font color="#FF0000">"myrealpasswordis"</font>
+}),
+{<font color="#FF6600">response</font>, <font color="#FF6600">fin</font>, <font color="#993399">200</font>, <font color="#990000">_</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>),
+<i><font color="#9A1900">%% Subsequent requests will be sent to origin-server.example.org.</font></i></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.await_up">gun:await_up(3)</a>, <a href="../gun_up">gun_up(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.data/index.html b/docs/en/gun/2.2/manual/gun.data/index.html
new file mode 100644
index 00000000..3486fff7
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.data/index.html
@@ -0,0 +1,212 @@
+<!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:data(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=7" 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>gun:data(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:data - Stream the body of a request</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">IsFin</font>, <font color="#009900">Data</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">IsFin</font> <font color="#990000">::</font> <font color="#FF6600">fin</font> | <font color="#FF6600">nofin</font>
+<font color="#009900">Data</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()</tt></pre>
+</div></div>
+<p>Stream the body of a request.</p>
+<p>This function can only be used if the original request had headers indicating that a body would be streamed.</p>
+<p>All calls to this function must use the <code>nofin</code> flag except for the last which must use <code>fin</code> to indicate the end of the request body.</p>
+<p>Empty data is allowed regardless of the value of <code>IsFin</code>. Gun may or may not send empty data chunks, however.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>IsFin</dt>
+<dd><p>Whether this message terminates the request.</p>
+</dd>
+<dt>Data</dt>
+<dd><p>All or part of the response body.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The atom <code>ok</code> is returned.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Stream the body of a request</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:put</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/lang/fr_FR/hello"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/plain"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font>
+<b><font color="#000000">gun:data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">nofin</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"Bonjour !\n"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font>
+<b><font color="#000000">gun:data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">fin</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"Bonsoir !\n"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.headers">gun:headers(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.delete/index.html b/docs/en/gun/2.2/manual/gun.delete/index.html
new file mode 100644
index 00000000..d5c260f2
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.delete/index.html
@@ -0,0 +1,221 @@
+<!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:delete(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=7" 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>gun:delete(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:delete - Delete a resource</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, [], #{})<font color="#990000">.</font>
+
+<b><font color="#000000">delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, #{})
+
+<b><font color="#000000">delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Delete a resource.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Delete a resource</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/drafts/123"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Delete a resource with request options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:delete</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/drafts/123"</font>, [],
+ #{<font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <font color="#009900">ReplyToPid</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun_push">gun_push(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.flush/index.html b/docs/en/gun/2.2/manual/gun.flush/index.html
new file mode 100644
index 00000000..1c514907
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.flush/index.html
@@ -0,0 +1,206 @@
+<!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:flush(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=7" 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>gun:flush(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:flush - Flush all messages related to a connection or a stream</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">flush</font></b>(<font color="#009900">ConnPid</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+<b><font color="#000000">flush</font></b>(<font color="#009900">StreamRef</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Flush all messages related to a connection or a stream.</p>
+<h2 id="_arguments">Arguments</h2>
+<p>Either of these arguments may be provided:</p>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The atom <code>ok</code> is returned.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Flush all messages from a connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:flush</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Flush messages from a single stream</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:flush</font></b>(<font color="#009900">StreamRef</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun.await_up">gun:await_up(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.get/index.html b/docs/en/gun/2.2/manual/gun.get/index.html
new file mode 100644
index 00000000..6a0961e2
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.get/index.html
@@ -0,0 +1,224 @@
+<!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:get(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=7" 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>gun:get(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:get - Get a resource representation</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000080">get</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000080">get</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, [], #{})<font color="#990000">.</font>
+
+<b><font color="#000080">get</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000080">get</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, #{})
+
+<b><font color="#000080">get</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Get a resource representation.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Get a resource representation</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/articles"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"accept"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/html;q=1.0, application/xml;q=0.1"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Get a resource representation with request options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:get</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/articles"</font>, [], #{
+ <font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <font color="#009900">ReplyToPid</font>
+})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun_push">gun_push(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.head/index.html b/docs/en/gun/2.2/manual/gun.head/index.html
new file mode 100644
index 00000000..d1294da8
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.head/index.html
@@ -0,0 +1,226 @@
+<!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:head(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=7" 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>gun:head(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:head - Get headers of a resource representation</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">head</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">head</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, [], #{})<font color="#990000">.</font>
+
+<b><font color="#000000">head</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">head</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, #{})
+
+<b><font color="#000000">head</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Get headers of a resource representation.</p>
+<p>This function performs the same operation as <a href="../gun.get">gun:get(3)</a>, except the server will not send the resource representation, only the response&apos;s status code and headers.</p>
+<p>While servers are supposed to send the same headers as for a GET request, they sometimes will not. For example the <code>content-length</code> header may be dropped from the response.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Get headers of a resource representation</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:head</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/articles"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"accept"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/html;q=1.0, application/xml;q=0.1"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Get headers of a resource representation with request options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:head</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/articles"</font>, [], #{
+ <font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <font color="#009900">ReplyToPid</font>
+})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:head(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun_push">gun_push(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.headers/index.html b/docs/en/gun/2.2/manual/gun.headers/index.html
new file mode 100644
index 00000000..a7ca163f
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.headers/index.html
@@ -0,0 +1,218 @@
+<!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:headers(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=7" 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>gun:headers(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:headers - Initiate the given request</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">headers</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Method</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">headers</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Method</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, #{})
+
+<b><font color="#000000">headers</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Method</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Method</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Initiate the given request.</p>
+<p>This is a general purpose function that should only be used when other method-specific functions do not apply.</p>
+<p>The function <code>headers/4,5</code> initiates a request but does not send the request body. It must be sent separately using <a href="../gun.data">gun:data(3)</a>.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Method</dt>
+<dd><p>Method to be used for the request.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Initiate a request</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:headers</font></b>(<font color="#009900">ConnPid</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"PUT"</font><font color="#990000">&gt;&gt;</font>,
+ <font color="#FF0000">"/lang/fr_FR/hello"</font>,
+ [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/plain"</font><font color="#990000">&gt;&gt;</font>}])<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun_push">gun_push(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.info/index.html b/docs/en/gun/2.2/manual/gun.info/index.html
new file mode 100644
index 00000000..ac89fa39
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.info/index.html
@@ -0,0 +1,222 @@
+<!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:info(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=7" 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>gun:info(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:info - Obtain information about the connection</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">info</font></b>(<font color="#009900">ConnPid</font>) <font color="#990000">-&gt;</font> <font color="#009900">Info</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Info</font> <font color="#990000">::</font> #{
+ <b><font color="#000080">owner</font></b> <font color="#990000">=&gt;</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#0000FF">socket</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:socket</font></b>() | <b><font color="#000000">ssl:sslsocket</font></b>(),
+ <font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tcp</font> | <font color="#FF6600">tls</font>,
+ <font color="#0000FF">protocol</font> <font color="#990000">=&gt;</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">ws</font>,
+ <font color="#0000FF">state_name</font> <font color="#990000">=&gt;</font> <b><font color="#000080">atom</font></b>(),
+ <font color="#0000FF">sock_ip</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#0000FF">sock_port</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:port_number</font></b>(),
+ <font color="#0000FF">origin_scheme</font> <font color="#990000">=&gt;</font> <b><font color="#000080">binary</font></b>() | <font color="#000080">undefined</font>,
+ <font color="#0000FF">origin_host</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#0000FF">origin_port</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:port_number</font></b>(),
+ <font color="#0000FF">intermediaries</font> <font color="#990000">=&gt;</font> [<font color="#009900">Intermediary</font>],
+ <font color="#0000FF">cookie_store</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun_cookies:cookie_store</font></b>(),
+ <font color="#0000FF">event_handler</font> <font color="#990000">=&gt;</font> <b><font color="#000000">module</font></b>(),
+ <font color="#0000FF">event_handler_state</font> <font color="#990000">=&gt;</font> <b><font color="#000000">any</font></b>()
+}
+<font color="#009900">Intermediary</font> <font color="#990000">::</font> #{
+ <font color="#0000FF">type</font> <font color="#990000">=&gt;</font> <font color="#FF6600">connect</font> | <font color="#FF6600">socks5</font>,
+ <font color="#0000FF">host</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#0000FF">port</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:port_number</font></b>(),
+ <font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tcp</font> | <font color="#FF6600">tls</font>,
+ <font color="#0000FF">protocol</font> <font color="#990000">=&gt;</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">raw</font>
+}</tt></pre>
+</div></div>
+<p>Obtain information about the connection.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A map is returned containing various informations about the connection.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.2</strong>: The values <code>event_handler</code>, <code>event_handler_state</code> and <code>state_name</code> were added.
+</li>
+<li><strong>2.0</strong>: The values <code>owner</code>, <code>origin_scheme</code> and <code>cookie_store</code> were added.
+</li>
+<li><strong>1.3</strong>: The values <code>socket</code>, <code>transport</code>, <code>protocol</code>, <code>origin_host</code>, <code>origin_port</code> and <code>intermediaries</code> were added.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Obtain information about the connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Info</font> <font color="#990000">=</font> <b><font color="#000000">gun:info</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.open/index.html b/docs/en/gun/2.2/manual/gun.open/index.html
new file mode 100644
index 00000000..5acfb614
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.open/index.html
@@ -0,0 +1,221 @@
+<!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:open(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=7" 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>gun:open(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:open - Open a connection to the given host and port</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">open</font></b>(<font color="#009900">Host</font>, <font color="#009900">Port</font>) <font color="#990000">-&gt;</font> <b><font color="#000000">open</font></b>(<font color="#009900">Host</font>, <font color="#009900">Port</font>, #{})
+<b><font color="#000000">open</font></b>(<font color="#009900">Host</font>, <font color="#009900">Port</font>, <font color="#009900">Opts</font>) <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <b><font color="#000080">pid</font></b>()} | {<font color="#FF6600">error</font>, <font color="#009900">Reason</font>}
+
+<font color="#009900">Host</font> <font color="#990000">::</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>()
+<font color="#009900">Port</font> <font color="#990000">::</font> <b><font color="#000000">inet:port_number</font></b>()
+<font color="#009900">Opts</font> <font color="#990000">::</font> <b><font color="#000000">gun:opts</font></b>()
+<font color="#009900">Reason</font> <font color="#990000">::</font> {<font color="#FF6600">options</font>, <font color="#009900">OptName</font>}
+ | {<font color="#FF6600">options</font>, {<font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">ws</font>, <font color="#009900">OptName</font>}}
+ | <b><font color="#000000">any</font></b>()
+<font color="#009900">OptName</font> <font color="#990000">::</font> <b><font color="#000080">atom</font></b>()</tt></pre>
+</div></div>
+<p>Open a connection to the given host and port.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>Host</dt>
+<dd><p>Host or IP address to connect to.</p>
+</dd>
+<dt>Port</dt>
+<dd><p>Port to connect to.</p>
+</dd>
+<dt>Opts</dt>
+<dd><p>Options for this connection.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The pid of the newly created Gun process is returned. Note that this does not indicate that the connection has been successfully opened; the <a href="../gun_up">gun_up(3)</a> message will be sent for that.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Connect to a server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"example.org"</font>, <font color="#993399">443</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Connect to a server with custom options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#FF0000">"example.org"</font>, <font color="#993399">443</font>,
+ #{<font color="#0000FF">protocols</font> <font color="#990000">=&gt;</font> [<font color="#FF6600">http2</font>]})<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Connect to a server using its IP address</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>({<font color="#993399">127</font>,<font color="#993399">0</font>,<font color="#993399">0</font>,<font color="#993399">1</font>}, <font color="#993399">443</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a>, <a href="../gun.await_up">gun:await_up(3)</a>, <a href="../gun_tunnel_up">gun_tunnel_up(3)</a>, <a href="../gun_up">gun_up(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.open_unix/index.html b/docs/en/gun/2.2/manual/gun.open_unix/index.html
new file mode 100644
index 00000000..471b0145
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.open_unix/index.html
@@ -0,0 +1,209 @@
+<!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:open_unix(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=7" 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>gun:open_unix(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:open_unix - Open a connection to the given Unix domain socket</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">open_unix</font></b>(<font color="#009900">SocketPath</font>, <font color="#009900">Opts</font>) <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <b><font color="#000080">pid</font></b>()} | {<font color="#FF6600">error</font>, <font color="#009900">Reason</font>}
+
+<font color="#009900">SocketPath</font> <font color="#990000">::</font> <b><font color="#000000">string</font></b>()
+<font color="#009900">Opts</font> <font color="#990000">::</font> <b><font color="#000000">gun:opts</font></b>()
+<font color="#009900">Reason</font> <font color="#990000">::</font> {<font color="#FF6600">options</font>, <font color="#009900">OptName</font>}
+ | {<font color="#FF6600">options</font>, {<font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">ws</font>, <font color="#009900">OptName</font>}}
+ | <b><font color="#000000">any</font></b>()
+<font color="#009900">OptName</font> <font color="#990000">::</font> <b><font color="#000080">atom</font></b>()</tt></pre>
+</div></div>
+<p>Open a connection to the given Unix domain socket.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>SocketPath</dt>
+<dd><p>Path to the Unix domain socket to connect to.</p>
+</dd>
+<dt>Opts</dt>
+<dd><p>Options for this connection.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The pid of the newly created Gun process is returned. Note that this does not indicate that the connection has been successfully opened; the <a href="../gun_up">gun_up(3)</a> message will be sent for that.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Connect to a server via a Unix domain socket</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open_unix</font></b>(<font color="#FF0000">"/var/run/dbus/system_bus_socket"</font>, #{})<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Connect to a server via a Unix domain socket with custom options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open_unix</font></b>(<font color="#FF0000">"/var/run/dbus/system_bus_socket"</font>,
+ #{<font color="#0000FF">protocols</font> <font color="#990000">=&gt;</font> [<font color="#FF6600">http2</font>]})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.await_up">gun:await_up(3)</a>, <a href="../gun_tunnel_up">gun_tunnel_up(3)</a>, <a href="../gun_up">gun_up(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.options/index.html b/docs/en/gun/2.2/manual/gun.options/index.html
new file mode 100644
index 00000000..47cd63c3
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.options/index.html
@@ -0,0 +1,221 @@
+<!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:options(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=7" 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>gun:options(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:options - Query the capabilities of the server or a resource</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">options</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">options</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, [], #{})<font color="#990000">.</font>
+
+<b><font color="#000000">options</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">options</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, #{})
+
+<b><font color="#000000">options</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Query the capabilities of the server or a resource.</p>
+<p>The special path <code>&quot;*&quot;</code> can be used to obtain information about the server as a whole. Any other path will return information about that resource specifically.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Query the capabilities of the server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:options</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"*"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Query the capabilities of a resource</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:options</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/articles"</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.patch/index.html b/docs/en/gun/2.2/manual/gun.patch/index.html
new file mode 100644
index 00000000..54a9b907
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.patch/index.html
@@ -0,0 +1,249 @@
+<!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:patch(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=7" 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>gun:patch(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:patch - Apply a set of changes to a resource</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, #{})
+
+<b><font color="#000000">patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<b><font color="#000000">patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>, #{})
+
+<b><font color="#000000">patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">Body</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Apply a set of changes to a resource.</p>
+<p>The behavior of this function varies depending on whether a body is provided.</p>
+<p>The function <code>patch/3,4</code> does not send a body. It must be sent separately using <a href="../gun.data">gun:data(3)</a>.</p>
+<p>The function <code>patch/4,5</code> sends the entire request, including the request body, immediately. It is therefore not possible to use <a href="../gun.data">gun:data(3)</a> after that. You should provide a content-type header. Gun will set the content-length header automatically.</p>
+<p>The body sent in this request should be a patch document with instructions on how to update the resource.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>Body</dt>
+<dd><p>Request body.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Implicit body detection has been removed. The body must now be provided either directly (even if empty) or using separate calls.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Patch a resource</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/users/1"</font>,
+ [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"application/json-patch+json"</font><font color="#990000">&gt;&gt;</font>}],
+ <font color="#990000">&lt;&lt;</font><font color="#FF0000">"[{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\"}]"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Patch a resource in multiple calls</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/users/1"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"application/json-patch+json"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font>
+<b><font color="#000000">gun:data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">fin</font>,
+ <font color="#990000">&lt;&lt;</font><font color="#FF0000">"[{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\"}]"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Patch a resource with request options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:patch</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/users/1"</font>,
+ [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"application/json-patch+json"</font><font color="#990000">&gt;&gt;</font>}],
+ <font color="#990000">&lt;&lt;</font><font color="#FF0000">"[{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\"}]"</font><font color="#990000">&gt;&gt;</font>,
+ #{<font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <font color="#009900">ReplyToPid</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun_push">gun_push(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.ping/index.html b/docs/en/gun/2.2/manual/gun.ping/index.html
new file mode 100644
index 00000000..ade04d2b
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.ping/index.html
@@ -0,0 +1,208 @@
+<!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:ping(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=7" 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>gun:ping(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:ping - Check the health or RTT of the connection</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ping</font></b>(<font color="#009900">ConnPid</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">ping</font></b>(<font color="#009900">ConnPid</font>, #{})
+
+<b><font color="#000000">ping</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">PingRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">PingRef</font> <font color="#990000">::</font> <b><font color="#000080">reference</font></b>()</tt></pre>
+</div></div>
+<p>Check the health or round-trip time of the connection.</p>
+<p>On protocols that support it, Gun will send a PING frame and wait for its corresponding acknowledgement. When it receives that acknowledgement the user process gets notified via a <code>gun_notify</code> message.</p>
+<p>As this happens asynchronously and multiple pings can be sent concurrently, Gun returns a unique reference to the caller that can be used to identify the related acknowledgement.</p>
+<p>The following protocols implement PING mechanisms and are supported by this function: HTTP/2.</p>
+<p>The following protocols implement PING mechanisms but are not yet supported by this function: HTTP/3 and Websocket. Note that in the case of Websocket, the user can set <code>silence_pings</code> to <code>false</code> and send and receive PING frames.</p>
+<p>The following protocols do not implement PING mechanisms: HTTP/1.1, raw and SOCKS5.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options. Only the <code>reply_to</code> and <code>tunnel</code> options are relevant.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the ping is returned. This reference is included in the notification received when a ping ack is received from the server.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.2</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Send a ping and receive an ack</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">PingRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:ping</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font>
+{<font color="#FF6600">notify</font>, <font color="#FF6600">ping_ack</font>, <font color="#009900">PingRef</font>} <font color="#990000">=</font> <b><font color="#000000">gun:await</font></b>(<font color="#009900">ConnPid</font>, <font color="#000080">undefined</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun_notify">gun_notify(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.post/index.html b/docs/en/gun/2.2/manual/gun.post/index.html
new file mode 100644
index 00000000..659d7f78
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.post/index.html
@@ -0,0 +1,247 @@
+<!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:post(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=7" 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>gun:post(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:post - Process the enclosed representation according to a resource&apos;s own semantics</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">post</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">post</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, #{})
+
+<b><font color="#000000">post</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<b><font color="#000000">post</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">post</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>, #{})
+
+<b><font color="#000000">post</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">Body</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Process the enclosed representation according to a resource&apos;s own semantics.</p>
+<p>The behavior of this function varies depending on whether a body is provided.</p>
+<p>The function <code>post/3,4</code> does not send a body. It must be sent separately using <a href="../gun.data">gun:data(3)</a>.</p>
+<p>The function <code>post/4,5</code> sends the entire request, including the request body, immediately. It is therefore not possible to use <a href="../gun.data">gun:data(3)</a> after that. You should provide a content-type header. Gun will set the content-length header automatically.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>Body</dt>
+<dd><p>Request body.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Implicit body detection has been removed. The body must now be provided either directly (even if empty) or using separate calls.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Post to a resource</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:post</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/search"</font>,
+ [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"application/x-www-form-urlencoded"</font><font color="#990000">&gt;&gt;</font>}],
+ <font color="#990000">&lt;&lt;</font><font color="#FF0000">"q=nine%20nines"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Post to a resource in multiple calls</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:post</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/search"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"application/x-www-form-urlencoded"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font>
+<b><font color="#000000">gun:data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">fin</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"q=nine%20nines"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Post to a resource with request options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:post</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/search"</font>,
+ [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"application/x-www-form-urlencoded"</font><font color="#990000">&gt;&gt;</font>}],
+ <font color="#990000">&lt;&lt;</font><font color="#FF0000">"q=nine%20nines"</font><font color="#990000">&gt;&gt;</font>,
+ #{<font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <font color="#009900">ReplyToPid</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun_push">gun_push(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.put/index.html b/docs/en/gun/2.2/manual/gun.put/index.html
new file mode 100644
index 00000000..7dc7b0fd
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.put/index.html
@@ -0,0 +1,247 @@
+<!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:put(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=7" 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>gun:put(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:put - Create or replace a resource</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000080">put</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000080">put</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, #{})
+
+<b><font color="#000080">put</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<b><font color="#000080">put</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000080">put</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>, #{})
+
+<b><font color="#000080">put</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">Body</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Create or replace a resource.</p>
+<p>The behavior of this function varies depending on whether a body is provided.</p>
+<p>The function <code>put/3,4</code> does not send a body. It must be sent separately using <a href="../gun.data">gun:data(3)</a>.</p>
+<p>The function <code>put/4,5</code> sends the entire request, including the request body, immediately. It is therefore not possible to use <a href="../gun.data">gun:data(3)</a> after that. You should provide a content-type header. Gun will set the content-length header automatically.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>Body</dt>
+<dd><p>Request body.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Implicit body detection has been removed. The body must now be provided either directly (even if empty) or using separate calls.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Put a resource</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:put</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/lang/fr_FR/hello"</font>,
+ [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/plain"</font><font color="#990000">&gt;&gt;</font>}],
+ <font color="#990000">&lt;&lt;</font><font color="#FF0000">"Bonjour !"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Put a resource in multiple calls</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:put</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/lang/fr_FR/hello"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/plain"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font>
+<b><font color="#000000">gun:data</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#FF6600">fin</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"Bonjour !"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Put a resource with request options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:put</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/lang/fr_FR/hello"</font>,
+ [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/plain"</font><font color="#990000">&gt;&gt;</font>}],
+ <font color="#990000">&lt;&lt;</font><font color="#FF0000">"Bonjour !"</font><font color="#990000">&gt;&gt;</font>,
+ #{<font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <font color="#009900">ReplyToPid</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun_push">gun_push(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.request/index.html b/docs/en/gun/2.2/manual/gun.request/index.html
new file mode 100644
index 00000000..33fac0c4
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.request/index.html
@@ -0,0 +1,225 @@
+<!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:request(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=7" 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>gun:request(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:request - Perform the given request</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">request</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Method</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">request</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Method</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>, #{})
+
+<b><font color="#000000">request</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Method</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">Body</font>, <font color="#009900">ReqOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Method</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">Body</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">ReqOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Perform the given request.</p>
+<p>This is a general purpose function that should only be used when other method-specific functions do not apply.</p>
+<p>The function <code>request/5,6</code> sends the entire request, including the request body, immediately. It is therefore not possible to use <a href="../gun.data">gun:data(3)</a> after that. You should provide a content-type header. Gun will set the content-length header automatically.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Method</dt>
+<dd><p>Method to be used for the request.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>Body</dt>
+<dd><p>Request body.</p>
+</dd>
+<dt>ReqOpts</dt>
+<dd><p>Request options.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Implicit body detection has been removed. The body must now be provided either directly (even if empty) or using <a href="../gun.headers">gun:headers(3)</a>.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Perform a request</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:request</font></b>(<font color="#009900">ConnPid</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"PUT"</font><font color="#990000">&gt;&gt;</font>,
+ <font color="#FF0000">"/lang/fr_FR/hello"</font>,
+ [{<font color="#990000">&lt;&lt;</font><font color="#FF0000">"content-type"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"text/plain"</font><font color="#990000">&gt;&gt;</font>}],
+ <font color="#990000">&lt;&lt;</font><font color="#FF0000">"Bonjour !"</font><font color="#990000">&gt;&gt;</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.await">gun:await(3)</a>, <a href="../gun.await_body">gun:await_body(3)</a>, <a href="../gun_push">gun_push(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.set_owner/index.html b/docs/en/gun/2.2/manual/gun.set_owner/index.html
new file mode 100644
index 00000000..b3fc7a94
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.set_owner/index.html
@@ -0,0 +1,199 @@
+<!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:set_owner(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=7" 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>gun:set_owner(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:set_owner - Set a new owner for the connection</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">set_owner</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">OwnerPid</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">OwnerPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()</tt></pre>
+</div></div>
+<p>Set a new owner for the connection.</p>
+<p>Only the current owner of the connection can set a new owner.</p>
+<p>Gun monitors the owner of the connection and automatically shuts down gracefully when the owner exits.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>OwnerPid</dt>
+<dd><p>The pid of the new owner for the connection.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The atom <code>ok</code> is returned.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Set a new owner for the connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#0000FF">ok</font> <font color="#990000">=</font> <b><font color="#000000">gun:set_owner</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">OwnerPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a>, <a href="../gun.shutdown">gun:shutdown(3)</a>, <a href="../gun.close">gun:close(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.shutdown/index.html b/docs/en/gun/2.2/manual/gun.shutdown/index.html
new file mode 100644
index 00000000..e6536f6f
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.shutdown/index.html
@@ -0,0 +1,203 @@
+<!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:shutdown(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=7" 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>gun:shutdown(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:shutdown - Gracefully close the connection</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#000080">shutdown</font>(<font color="#009900">ConnPid</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()</tt></pre>
+</div></div>
+<p>Gracefully close the connection.</p>
+<p>Gun will wait for up to <code>closing_timeout</code> milliseconds before brutally closing the connection. The graceful shutdown mechanism varies between the different protocols:</p>
+<ul><li>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.
+</li>
+<li>For HTTP/2 Gun will send a GOAWAY frame and wait for the existing streams to terminate.
+</li>
+<li>For Websocket Gun will send a close frame and wait for the server&apos;s close frame before closing the connection.
+</li>
+</ul>
+<p>The function returns immediately. The connection may therefore still be up for some time after this call.</p>
+<p>Gun will not attempt to reconnect once graceful shutdown has been initiated.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The atom <code>ok</code> is returned.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Gracefully shutdown the connection</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#0000FF">ok</font> <font color="#990000">=</font> <b><font color="#000000">gun:shutdown</font></b>(<font color="#009900">ConnPid</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a>, <a href="../gun.close">gun:close(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.stream_info/index.html b/docs/en/gun/2.2/manual/gun.stream_info/index.html
new file mode 100644
index 00000000..82d05aa2
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.stream_info/index.html
@@ -0,0 +1,218 @@
+<!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:stream_info(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=7" 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>gun:stream_info(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:stream_info - Obtain information about a stream</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">stream_info</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>) <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#000080">undefined</font> | <font color="#009900">Info</font>} | {<font color="#FF6600">error</font>, <font color="#FF6600">not_connected</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Info</font> <font color="#990000">::</font> #{
+ <font color="#0000FF">ref</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#0000FF">state</font> <font color="#990000">=&gt;</font> <b><font color="#000080">running</font></b> | <font color="#FF6600">stopping</font>,
+ <font color="#0000FF">intermediaries</font> <font color="#990000">=&gt;</font> [<font color="#009900">Intermediary</font>],
+ <font color="#0000FF">tunnel</font> <font color="#990000">=&gt;</font> <font color="#009900">Tunnel</font>
+}
+<font color="#009900">Intermediary</font> <font color="#990000">::</font> #{
+ <font color="#0000FF">type</font> <font color="#990000">=&gt;</font> <font color="#FF6600">connect</font> | <font color="#FF6600">socks5</font>,
+ <font color="#0000FF">host</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#0000FF">port</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:port_number</font></b>(),
+ <font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tcp</font> | <font color="#FF6600">tls</font>,
+ <font color="#0000FF">protocol</font> <font color="#990000">=&gt;</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">raw</font>
+}
+<font color="#009900">Tunnel</font> <font color="#990000">::</font> #{
+ <font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tcp</font> | <font color="#FF6600">tls</font>,
+ <font color="#0000FF">protocol</font> <font color="#990000">=&gt;</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">raw</font>,
+ <font color="#0000FF">origin_scheme</font> <font color="#990000">=&gt;</font> <b><font color="#000080">binary</font></b>() | <font color="#000080">undefined</font>,
+ <font color="#0000FF">origin_host</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#0000FF">origin_port</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:port_number</font></b>()
+}</tt></pre>
+</div></div>
+<p>Obtain information about a stream.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A map is returned containing various informations about the stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Obtain information about a stream</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Info</font> <font color="#990000">=</font> <b><font color="#000000">gun:stream_info</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.options">gun:options(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.delete">gun:delete(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun.cancel">gun:cancel(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.update_flow/index.html b/docs/en/gun/2.2/manual/gun.update_flow/index.html
new file mode 100644
index 00000000..a0b8a84e
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.update_flow/index.html
@@ -0,0 +1,203 @@
+<!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:update_flow(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=7" 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>gun:update_flow(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:update_flow - Update a stream&apos;s flow control value</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">update_flow</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Flow</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Flow</font> <font color="#990000">::</font> <b><font color="#000000">pos_integer</font></b>()</tt></pre>
+</div></div>
+<p>Update a stream&apos;s flow control value.</p>
+<p>The flow value can only ever be incremented.</p>
+<p>This function does nothing for streams that have flow control disabled (which is the default).</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>Flow</dt>
+<dd><p>Flow control value increment.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The atom <code>ok</code> is returned.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Update a stream&apos;s flow control value</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:update_flow</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#993399">10</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.options">gun:options(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.delete">gun:delete(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun.ws_upgrade">gun:ws_upgrade(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.ws_send/index.html b/docs/en/gun/2.2/manual/gun.ws_send/index.html
new file mode 100644
index 00000000..578c0d1a
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.ws_send/index.html
@@ -0,0 +1,219 @@
+<!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:ws_send(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=7" 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>gun:ws_send(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:ws_send - Send Websocket frames</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_send</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Frames</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">ok</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Frames</font> <font color="#990000">::</font> <font color="#009900">Frame</font> | [<font color="#009900">Frame</font>]
+<font color="#009900">Frame</font> <font color="#990000">::</font> <font color="#FF6600">close</font> | <font color="#FF6600">ping</font> | <font color="#FF6600">pong</font>
+ | {<font color="#FF6600">text</font> | <b><font color="#000080">binary</font></b> | <font color="#FF6600">close</font> | <font color="#FF6600">ping</font> | <font color="#FF6600">pong</font>, <b><font color="#000000">iodata</font></b>()}
+ | {<font color="#FF6600">close</font>, <b><font color="#000000">non_neg_integer</font></b>(), <b><font color="#000000">iodata</font></b>()}</tt></pre>
+</div></div>
+<p>Send Websocket frames.</p>
+<p>The connection must first be upgraded to Websocket using the function <a href="../gun.ws_upgrade">gun:ws_upgrade(3)</a>.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream that was upgraded to Websocket.</p>
+</dd>
+<dt>Frames</dt>
+<dd><p>One or more Websocket frame(s).</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>The atom <code>ok</code> is returned.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: The mandatory <code>StreamRef</code> argument was added.
+</li>
+<li><strong>2.0</strong>: It is now possible to send multiple frames at once.
+</li>
+<li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Send a single frame</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:ws_send</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, {<font color="#FF6600">text</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"Hello world!"</font><font color="#990000">&gt;&gt;</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Send many frames including a close frame</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gun:ws_send</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, [
+ {<font color="#FF6600">text</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"See you later, world!"</font><font color="#990000">&gt;&gt;</font>},
+ <font color="#FF6600">close</font>
+])<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.ws_upgrade">gun:ws_upgrade(3)</a>, <a href="../gun_upgrade">gun_upgrade(3)</a>, <a href="../gun_ws">gun_ws(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun.ws_upgrade/index.html b/docs/en/gun/2.2/manual/gun.ws_upgrade/index.html
new file mode 100644
index 00000000..bd48543d
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun.ws_upgrade/index.html
@@ -0,0 +1,247 @@
+<!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:ws_upgrade(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=7" 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>gun:ws_upgrade(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun:ws_upgrade - Upgrade to Websocket</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, [])
+
+<b><font color="#000000">ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<b><font color="#000000">ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">Path</font>, <font color="#009900">Headers</font>, <font color="#009900">WsOpts</font>)
+ <font color="#990000">-&gt;</font> <font color="#009900">StreamRef</font>
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Path</font> <font color="#990000">::</font> <b><font color="#000000">iodata</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">gun:req_headers</font></b>()
+<font color="#009900">WsOpts</font> <font color="#990000">::</font> <b><font color="#000000">gun:ws_opts</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()</tt></pre>
+</div></div>
+<p>Upgrade to Websocket.</p>
+<p>The behavior of this function depends on the protocol selected.</p>
+<p>HTTP/1.1 cannot handle Websocket and HTTP requests concurrently. The upgrade, if successful, will result in the complete takeover of the connection. Any subsequent HTTP requests will be rejected.</p>
+<p>Gun does not currently support Websocket over HTTP/2.</p>
+<p>By default Gun will take the Websocket options from the connection&apos;s <code>ws_opts</code>.</p>
+<p>Websocket subprotocol negotiation is enabled when the <code>protocols</code> option is given. It takes a subprotocol name and a module implementing the <a href="../gun_ws_protocol">gun_ws_protocol(3)</a> behavior.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Path</dt>
+<dd><p>Path to the resource.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Additional request headers.</p>
+</dd>
+<dt>WsOpts</dt>
+<dd><p>Configuration for the Websocket protocol.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Upgrade to Websocket</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/ws"</font>, [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"sec-websocket-protocol"</font><font color="#990000">&gt;&gt;</font>, <font color="#990000">&lt;&lt;</font><font color="#FF0000">"chat"</font><font color="#990000">&gt;&gt;</font>}
+])<font color="#990000">.</font>
+<b><font color="#0000FF">receive</font></b>
+ {<font color="#FF6600">gun_upgrade</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, [<font color="#990000">&lt;&lt;</font><font color="#FF0000">"websocket"</font><font color="#990000">&gt;&gt;</font>], <font color="#990000">_</font>} <font color="#990000">-&gt;</font>
+ <font color="#FF6600">ok</font>
+<b><font color="#0000FF">after</font></b> <font color="#993399">5000</font> <font color="#990000">-&gt;</font>
+ <b><font color="#000000">error</font></b>(<font color="#FF6600">timeout</font>)
+<b><font color="#0000FF">end</font></b><font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Upgrade to Websocket with different options</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/ws"</font>, [], #{
+ <font color="#0000FF">compress</font> <font color="#990000">=&gt;</font> <font color="#000080">false</font>
+})<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Upgrade to Websocket with protocol negotiation</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">StreamRef</font> <font color="#990000">=</font> <b><font color="#000000">gun:ws_upgrade</font></b>(<font color="#009900">ConnPid</font>, <font color="#FF0000">"/ws"</font>, [], #{
+ <font color="#0000FF">protocols</font> <font color="#990000">=&gt;</font> [
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"mqtt"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF6600">gun_ws_mqtt_h</font>},
+ {<font color="#990000">&lt;&lt;</font><font color="#FF0000">"v12.stomp"</font><font color="#990000">&gt;&gt;</font>, <font color="#FF6600">gun_ws_stomp_h</font>}
+ ]
+})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.ws_send">gun:ws_send(3)</a>, <a href="../gun_upgrade">gun_upgrade(3)</a>, <a href="../gun_ws">gun_ws(3)</a>, <a href="../gun_ws_protocol">gun_ws_protocol(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun/index.html b/docs/en/gun/2.2/manual/gun/index.html
new file mode 100644
index 00000000..2c99f2ad
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun/index.html
@@ -0,0 +1,678 @@
+<!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(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=7" 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>gun(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun - Asynchronous HTTP client</p>
+<h2 id="_description">Description</h2>
+<p>The <code>gun</code> module provides an asynchronous interface for connecting and communicating with Web servers over HTTP, HTTP/2 or Websocket.</p>
+<h2 id="_exports">Exports</h2>
+<p>Connection:</p>
+<ul><li><a href="../gun.open">gun:open(3)</a> - Open a connection to the given host and port
+</li>
+<li><a href="../gun.open_unix">gun:open_unix(3)</a> - Open a connection to the given Unix domain socket
+</li>
+<li><a href="../gun.set_owner">gun:set_owner(3)</a> - Set a new owner for the connection
+</li>
+<li><a href="../gun.ping">gun:ping(3)</a> - Check the health or RTT of the connection
+</li>
+<li><a href="../gun.shutdown">gun:shutdown(3)</a> - Gracefully close the connection
+</li>
+<li><a href="../gun.close">gun:close(3)</a> - Brutally close the connection
+</li>
+<li><a href="../gun.info">gun:info(3)</a> - Obtain information about the connection
+</li>
+</ul>
+<p>Requests:</p>
+<ul><li><a href="../gun.get">gun:get(3)</a> - Get a resource representation
+</li>
+<li><a href="../gun.head">gun:head(3)</a> - Get headers of a resource representation
+</li>
+<li><a href="../gun.options">gun:options(3)</a> - Query the capabilities of the server or a resource
+</li>
+<li><a href="../gun.patch">gun:patch(3)</a> - Apply a set of changes to a resource
+</li>
+<li><a href="../gun.post">gun:post(3)</a> - Process the enclosed representation according to a resource&apos;s own semantics
+</li>
+<li><a href="../gun.put">gun:put(3)</a> - Create or replace a resource
+</li>
+<li><a href="../gun.delete">gun:delete(3)</a> - Delete a resource
+</li>
+<li><a href="../gun.headers">gun:headers(3)</a> - Initiate the given request
+</li>
+<li><a href="../gun.request">gun:request(3)</a> - Perform the given request
+</li>
+<li><a href="../gun.data">gun:data(3)</a> - Stream the body of a request
+</li>
+</ul>
+<p>Proxies:</p>
+<ul><li><a href="../gun.connect">gun:connect(3)</a> - Establish a tunnel to the origin server
+</li>
+</ul>
+<p>Messages:</p>
+<ul><li><a href="../gun.await">gun:await(3)</a> - Wait for a response
+</li>
+<li><a href="../gun.await_body">gun:await_body(3)</a> - Wait for the complete response body
+</li>
+<li><a href="../gun.await_up">gun:await_up(3)</a> - Wait for the connection to be up
+</li>
+<li><a href="../gun.flush">gun:flush(3)</a> - Flush all messages related to a connection or a stream
+</li>
+</ul>
+<p>Streams:</p>
+<ul><li><a href="../gun.update_flow">gun:update_flow(3)</a> - Update a stream&apos;s flow control value
+</li>
+<li><a href="../gun.cancel">gun:cancel(3)</a> - Cancel the given stream
+</li>
+<li><a href="../gun.stream_info">gun:stream_info(3)</a> - Obtain information about a stream
+</li>
+</ul>
+<p>Websocket:</p>
+<ul><li><a href="../gun.ws_upgrade">gun:ws_upgrade(3)</a> - Upgrade to Websocket
+</li>
+<li><a href="../gun.ws_send">gun:ws_send(3)</a> - Send Websocket frames
+</li>
+</ul>
+<h2 id="_messages">Messages</h2>
+<p>Gun will inform the calling process of events asynchronously by sending any of the following messages:</p>
+<p>Connection:</p>
+<ul><li><a href="../gun_up">gun_up(3)</a> - The connection is up
+</li>
+<li><a href="../gun_tunnel_up">gun_tunnel_up(3)</a> - The tunnel is up
+</li>
+<li><a href="../gun_down">gun_down(3)</a> - The connection is down
+</li>
+<li><a href="../gun_notify">gun_notify(3)</a> - Optional event notification
+</li>
+<li><a href="../gun_upgrade">gun_upgrade(3)</a> - Successful protocol upgrade
+</li>
+<li><a href="../gun_error">gun_error(3)</a> - Stream or connection-wide error
+</li>
+</ul>
+<p>Responses:</p>
+<ul><li><a href="../gun_push">gun_push(3)</a> - Server-initiated push
+</li>
+<li><a href="../gun_inform">gun_inform(3)</a> - Informational response
+</li>
+<li><a href="../gun_response">gun_response(3)</a> - Response
+</li>
+<li><a href="../gun_data">gun_data(3)</a> - Response body
+</li>
+<li><a href="../gun_trailers">gun_trailers(3)</a> - Response trailers
+</li>
+</ul>
+<p>Websocket:</p>
+<ul><li><a href="../gun_ws">gun_ws(3)</a> - Websocket frame
+</li>
+</ul>
+<p>The response messages will be sent to the process that opened the connection by default. The <code>reply_to</code> request option can be used to redirect request-specific messages to a different process.</p>
+<h2 id="_types">Types</h2>
+<h3 id="_connect_destination">connect_destination()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">connect_destination</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">host</font> <font color="#990000">:=</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#FF6600">port</font> <font color="#990000">:=</font> <b><font color="#000000">inet:port_number</font></b>(),
+
+ <font color="#0000FF">username</font> <font color="#990000">=&gt;</font> <b><font color="#000000">iodata</font></b>(),
+ <font color="#0000FF">password</font> <font color="#990000">=&gt;</font> <b><font color="#000000">iodata</font></b>(),
+ <font color="#0000FF">protocols</font> <font color="#990000">=&gt;</font> <b><font color="#000000">protocols</font></b>(),
+ <font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tcp</font> | <font color="#FF6600">tls</font>,
+
+ <font color="#0000FF">tls_opts</font> <font color="#990000">=&gt;</font> [<b><font color="#000000">ssl:tls_client_option</font></b>()],
+ <font color="#0000FF">tls_handshake_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>()
+}</tt></pre>
+</div></div>
+<p>Destination of a CONNECT request.</p>
+<p>The default value, if any, is given next to the option name:</p>
+<dl><dt>host, port</dt>
+<dd><p>Destination hostname and port number. Mandatory.</p>
+<p>Upon successful completion of the CONNECT request, Gun will begin using these as the host and port of the origin server for subsequent requests.</p>
+</dd>
+<dt>username, password</dt>
+<dd><p>Proxy authorization credentials. They are only sent when both options are provided.</p>
+</dd>
+<dt>protocols - see below</dt>
+<dd><p>Ordered list of preferred protocols. Please refer to the <code>protocols()</code> type documentation for details.</p>
+<p>Defaults to <code>[http]</code> when the transport is <code>tcp</code>, and <code>[http2, http]</code> when the transport is <code>tls</code>.</p>
+</dd>
+<dt>transport (tcp)</dt>
+<dd><p>Transport that will be used for tunneled requests.</p>
+</dd>
+<dt>tls_opts ([])</dt>
+<dd><p>Options to use for tunneled TLS connections.</p>
+</dd>
+<dt>tls_handshake_timeout (infinity)</dt>
+<dd><p>Handshake timeout for tunneled TLS connections.</p>
+</dd>
+</dl>
+<h3 id="_http_opts">http_opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">http_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">cookie_ignore_informational</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</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">transform_header_name</font> <font color="#990000">=&gt;</font> <b><font color="#0000FF">fun</font></b>((<b><font color="#000080">binary</font></b>()) <font color="#990000">-&gt;</font> <b><font color="#000080">binary</font></b>()),
+ <font color="#0000FF">version</font> <font color="#990000">=&gt;</font> <font color="#FF6600">'HTTP/1.1'</font> | <font color="#FF6600">'HTTP/1.0'</font>
+}</tt></pre>
+</div></div>
+<p>Configuration for the HTTP protocol.</p>
+<p>The default value is given next to the option name:</p>
+<!-- @todo Document content_handlers and gun_sse_h.-->
+<dl><dt>closing_timeout (15000)</dt>
+<dd><p>Time to wait before brutally closing the connection when a graceful shutdown was requested via a call to <a href="../gun.shutdown">gun:shutdown(3)</a>.</p>
+</dd>
+<dt>cookie_ignore_informational (false)</dt>
+<dd><p>Whether cookies received inside informational responses (1xx status code) must be ignored.</p>
+</dd>
+<dt>flow - see below</dt>
+<dd><p>The initial flow control value for all HTTP/1.1 streams. By default flow control is disabled.</p>
+</dd>
+<dt>keepalive (infinity)</dt>
+<dd><p>Time between pings in milliseconds. Since the HTTP protocol has no standardized way to ping the server, Gun will simply send an empty line when the connection is idle. Gun only makes a best effort here as servers usually have configurable limits to drop idle connections. Disabled by default due to potential incompatibilities.</p>
+</dd>
+<dt>transform_header_name - see below</dt>
+<dd><p>A function that will be applied to all header names before they are sent to the server. Gun assumes that all header names are in lower case. This function is useful if you, for example, need to re-case header names in the event that the server incorrectly considers the case of header names to be significant.</p>
+</dd>
+<dt>version (<code>&apos;HTTP/1.1&apos;</code>)</dt>
+<dd><p>HTTP version to use.</p>
+</dd>
+</dl>
+<h3 id="_http2_opts">http2_opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+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">cookie_ignore_informational</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</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_tolerance</font> <font color="#990000">=&gt;</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#0000FF">notify_settings_changed</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</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_fragmented_header_block_size</font> <font color="#990000">=&gt;</font> <font color="#993399">16384</font><font color="#990000">..</font><font color="#993399">16#7fffffff</font>,
+ <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_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_data_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">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>
+<p>The default value is given next to the option name:</p>
+<!-- @todo Document content_handlers and gun_sse_h.-->
+<dl><dt>closing_timeout (15000)</dt>
+<dd><p>Time to wait before brutally closing the connection when a graceful shutdown was requested either via a call to <a href="../gun.shutdown">gun:shutdown(3)</a> or by the server.</p>
+</dd>
+<dt>cookie_ignore_informational (false)</dt>
+<dd><p>Whether cookies received inside informational responses (1xx status code) must be ignored.</p>
+</dd>
+<dt>flow - see below</dt>
+<dd><p>The initial flow control value for all HTTP/2 streams. By default flow control is disabled.</p>
+</dd>
+<dt>keepalive (infinity)</dt>
+<dd><p>Time between pings in milliseconds.</p>
+</dd>
+<dt>keepalive_tolerance - see below</dt>
+<dd><p>The number of unacknowledged pings in flight that are tolerated before the connection is closed. By default this mechanism is disabled even if <code>keepalive</code> is enabled.</p>
+</dd>
+<dt>notify_settings_changed (false)</dt>
+<dd><p>Whether Gun should send a <a href="../gun_notify">gun_notify(3)</a> message to the user when settings are changed by the server.</p>
+</dd>
+</dl>
+<h3 id="_opts">opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">opts</font></b>() <font color="#990000">::</font> #{
+ <font color="#0000FF">connect_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>(),
+ <font color="#0000FF">cookie_store</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun_cookies:store</font></b>(),
+ <font color="#0000FF">domain_lookup_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>(),
+ <font color="#0000FF">http_opts</font> <font color="#990000">=&gt;</font> <b><font color="#000000">http_opts</font></b>(),
+ <font color="#0000FF">http2_opts</font> <font color="#990000">=&gt;</font> <b><font color="#000000">http2_opts</font></b>(),
+ <font color="#0000FF">protocols</font> <font color="#990000">=&gt;</font> <b><font color="#000000">protocols</font></b>(),
+ <font color="#0000FF">retry</font> <font color="#990000">=&gt;</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#0000FF">retry_fun</font> <font color="#990000">=&gt;</font> <b><font color="#0000FF">fun</font></b>(),
+ <font color="#0000FF">retry_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">pos_integer</font></b>(),
+ <font color="#0000FF">supervise</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#0000FF">tcp_opts</font> <font color="#990000">=&gt;</font> [<b><font color="#000000">gen_tcp:connect_option</font></b>()],
+ <font color="#0000FF">tls_handshake_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>(),
+ <font color="#0000FF">tls_opts</font> <font color="#990000">=&gt;</font> [<b><font color="#000000">ssl:tls_client_option</font></b>()],
+ <font color="#0000FF">trace</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tcp</font> | <font color="#FF6600">tls</font>,
+ <font color="#0000FF">ws_opts</font> <font color="#990000">=&gt;</font> <b><font color="#000000">ws_opts</font></b>()
+}</tt></pre>
+</div></div>
+<p>Configuration for the connection.</p>
+<p>The default value is given next to the option name:</p>
+<dl><dt>connect_timeout (infinity)</dt>
+<dd><p>Connection timeout.</p>
+</dd>
+<dt>cookie_store - see below</dt>
+<dd><p>The cookie store that Gun will use for this connection. When configured, Gun will query the store for cookies and include them in the request headers; and add cookies found in response headers to the store.</p>
+<p>By default no cookie store will be used.</p>
+</dd>
+<dt>domain_lookup_timeout (infinity)</dt>
+<dd><p>Domain lookup timeout.</p>
+</dd>
+<dt>http_opts (#{})</dt>
+<dd><p>Options specific to the HTTP protocol.</p>
+</dd>
+<dt>http2_opts (#{})</dt>
+<dd><p>Options specific to the HTTP/2 protocol.</p>
+</dd>
+<dt>protocols - see below</dt>
+<dd><p>Ordered list of preferred protocols. Please refer to the <code>protocols()</code> type documentation for details.</p>
+<p>Defaults to <code>[http]</code> when the transport is <code>tcp</code>, and <code>[http2, http]</code> when the transport is <code>tls</code>.</p>
+</dd>
+<dt>retry (5)</dt>
+<dd><p>Number of times Gun will try to reconnect on failure before giving up.</p>
+</dd>
+<dt>retry_fun - see below</dt>
+<dd><p>A fun that will be called before every reconnect attempt. It receives the current number of retries left and the Gun options. It returns the next number of retries left and the timeout to apply before reconnecting.</p>
+</dd>
+</dl>
+<p>The default fun will remove one to the number of retries and set the timeout to the <code>retry_timeout</code> value.</p>
+<p>The fun must be defined as follow:</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#0000FF">fun</font></b> ((<b><font color="#000000">non_neg_integer</font></b>(), <b><font color="#000000">opts</font></b>()) <font color="#990000">-&gt;</font> #{
+ <font color="#0000FF">retries</font> <font color="#990000">=&gt;</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#0000FF">timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">pos_integer</font></b>()
+})</tt></pre>
+</div></div>
+<p>The fun will never be called when the <code>retry</code> option is set to 0. When this function returns 0 in the <code>retries</code> value, Gun will do one last reconnect attempt before giving up.</p>
+<dl><dt>retry_timeout (5000)</dt>
+<dd><p>Time between retries in milliseconds.</p>
+</dd>
+<dt>supervise (true)</dt>
+<dd><p>Whether the Gun process should be started under the <code>gun_sup</code> supervisor. Set to <code>false</code> to use your own supervisor.</p>
+</dd>
+<dt>tcp_opts (DefaultOpts)</dt>
+<dd><p>TCP options used when establishing the connection. By default Gun enables send timeouts with the options <code>[{send_timeout, 15000}, {send_timeout_close, true}]</code>.</p>
+</dd>
+<dt>tls_handshake_timeout (infinity)</dt>
+<dd><p>TLS handshake timeout.</p>
+</dd>
+<dt>tls_opts ([])</dt>
+<dd><p>TLS options used for the TLS handshake after the connection has been established, when the transport is set to <code>tls</code>.</p>
+</dd>
+<dt>trace (false)</dt>
+<dd><p>Whether to enable <code>dbg</code> tracing of the connection process. Should only be used during debugging.</p>
+</dd>
+<dt>transport - see below</dt>
+<dd><p>Whether to use TLS or plain TCP. The default varies depending on the port used. Port 443 defaults to <code>tls</code>. All other ports default to <code>tcp</code>.</p>
+</dd>
+<dt>ws_opts (#{})</dt>
+<dd><p>Options specific to the Websocket protocol.</p>
+</dd>
+</dl>
+<h3 id="_protocols">protocols()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Protocol</font> <font color="#990000">::</font> <font color="#FF6600">http</font> | {<font color="#FF6600">http</font>, <b><font color="#000000">http_opts</font></b>()}
+ | <font color="#FF6600">http2</font> | {<font color="#FF6600">http2</font>, <b><font color="#000000">http2_opts</font></b>()}
+ | <font color="#FF6600">raw</font> | {<font color="#FF6600">raw</font>, <b><font color="#000000">raw_opts</font></b>()}
+ | <font color="#FF6600">socks</font> | {<font color="#FF6600">socks</font>, <b><font color="#000000">socks_opts</font></b>()}
+
+<b><font color="#000000">protocols</font></b>() <font color="#990000">::</font> [<font color="#009900">Protocol</font>]</tt></pre>
+</div></div>
+<p>Ordered list of preferred protocols. When the transport is <code>tcp</code>, this list must contain exactly one protocol. When the transport is <code>tls</code>, this list must contain at least one protocol and will be used to negotiate a protocol via ALPN. When the server does not support ALPN then <code>http</code> will be used, except when the list of preferred protocols is set to only accept <code>socks</code>.</p>
+<p>Defaults to <code>[http]</code> when the transport is <code>tcp</code>, and <code>[http2, http]</code> when the transport is <code>tls</code>.</p>
+<h3 id="_raw_opts">raw_opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">raw_opts</font></b>() <font color="#990000">::</font> #{
+}</tt></pre>
+</div></div>
+<p>Configuration for the &quot;raw&quot; protocol.</p>
+<!-- The default value is given next to the option name:-->
+<h3 id="_req_headers">req_headers()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">req_headers</font></b>() <font color="#990000">::</font> [{<b><font color="#000080">binary</font></b>() | <b><font color="#000000">string</font></b>() | <b><font color="#000080">atom</font></b>(), <b><font color="#000000">iodata</font></b>()}]
+ | #{<b><font color="#000080">binary</font></b>() | <b><font color="#000000">string</font></b>() | <b><font color="#000080">atom</font></b>() <font color="#990000">=&gt;</font> <b><font color="#000000">iodata</font></b>()}</tt></pre>
+</div></div>
+<p>Request headers.</p>
+<h3 id="_req_opts">req_opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">req_opts</font></b>() <font color="#990000">::</font> #{
+ <font color="#0000FF">flow</font> <font color="#990000">=&gt;</font> <b><font color="#000000">pos_integer</font></b>(),
+ <font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <b><font color="#000080">pid</font></b>() | {<b><font color="#000000">module</font></b>(), <b><font color="#000080">atom</font></b>(), <b><font color="#000080">list</font></b>()}
+ | <b><font color="#0000FF">fun</font></b>((<font color="#990000">_</font>) <font color="#990000">-&gt;</font> <font color="#990000">_</font>) | {<b><font color="#0000FF">fun</font></b>(), <b><font color="#000080">list</font></b>()},
+ <font color="#0000FF">tunnel</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun:stream_ref</font></b>()
+}</tt></pre>
+</div></div>
+<p>Configuration for a particular request.</p>
+<p>The default value is given next to the option name:</p>
+<dl><dt>flow - see below</dt>
+<dd><p>The initial flow control value for the stream. By default flow control is disabled.</p>
+</dd>
+<dt>reply_to (<code>self()</code>)</dt>
+<dd><p>The pid of the process that will receive the response messages, or a function that will be called with the message as argument.</p>
+</dd>
+</dl>
+<h3 id="_socks_opts">socks_opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">socks_opts</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">host</font> <font color="#990000">:=</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#FF6600">port</font> <font color="#990000">:=</font> <b><font color="#000000">inet:port_number</font></b>(),
+
+ <font color="#0000FF">auth</font> <font color="#990000">=&gt;</font> [{<font color="#FF6600">username_password</font>, <b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()} | <font color="#FF6600">none</font>],
+ <font color="#0000FF">protocols</font> <font color="#990000">=&gt;</font> <b><font color="#000000">protocols</font></b>(),
+ <font color="#0000FF">transport</font> <font color="#990000">=&gt;</font> <font color="#FF6600">tcp</font> | <font color="#FF6600">tls</font>,
+ <font color="#0000FF">version</font> <font color="#990000">=&gt;</font> <font color="#993399">5</font>,
+
+ <font color="#0000FF">tls_opts</font> <font color="#990000">=&gt;</font> [<b><font color="#000000">ssl:tls_client_option</font></b>()],
+ <font color="#0000FF">tls_handshake_timeout</font> <font color="#990000">=&gt;</font> <b><font color="#000000">timeout</font></b>()
+}</tt></pre>
+</div></div>
+<p>Configuration for the Socks protocol.</p>
+<p>The default value, if any, is given next to the option name:</p>
+<dl><dt>host, port</dt>
+<dd><p>Destination hostname and port number. Mandatory.</p>
+<p>Upon successful completion of the Socks connection, Gun will begin using these as the host and port of the origin server for subsequent requests.</p>
+</dd>
+<dt>auth ([none])</dt>
+<dd><p>Authentication methods Gun advertises to the Socks proxy.</p>
+</dd>
+<dt>protocols - see below</dt>
+<dd><p>Ordered list of preferred protocols. Please refer to the <code>protocols()</code> type documentation for details.</p>
+<p>Defaults to <code>[http]</code> when the transport is <code>tcp</code>, and <code>[http2, http]</code> when the transport is <code>tls</code>.</p>
+</dd>
+<dt>transport (tcp)</dt>
+<dd><p>Transport that will be used for tunneled requests.</p>
+</dd>
+<dt>tls_opts ([])</dt>
+<dd><p>Options to use for tunneled TLS connections.</p>
+</dd>
+<dt>tls_handshake_timeout (infinity)</dt>
+<dd><p>Handshake timeout for tunneled TLS connections.</p>
+</dd>
+<dt>version (5)</dt>
+<dd><p>Version of the Socks protocol to use.</p>
+</dd>
+</dl>
+<h3 id="_stream_ref">stream_ref()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">stream_ref</font></b>() <font color="#990000">-</font> <font color="#FF6600">see</font> <font color="#FF6600">below</font></tt></pre>
+</div></div>
+<p>Unique identifier for a stream.</p>
+<p>The exact type is considered to be an implementation detail.</p>
+<h3 id="_ws_opts">ws_opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_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">compress</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#0000FF">default_protocol</font> <font color="#990000">=&gt;</font> <b><font color="#000000">module</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">protocols</font> <font color="#990000">=&gt;</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000000">module</font></b>()}],
+ <font color="#0000FF">silence_pings</font> <font color="#990000">=&gt;</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#0000FF">user_opts</font> <font color="#990000">=&gt;</font> <b><font color="#000000">any</font></b>()
+}</tt></pre>
+</div></div>
+<p>Configuration for the Websocket protocol.</p>
+<p>The default value is given next to the option name:</p>
+<dl><dt>closing_timeout (15000)</dt>
+<dd><p>Time to wait before brutally closing the connection when a graceful shutdown was requested either via a call to <a href="../gun.shutdown">gun:shutdown(3)</a> or by the server.</p>
+</dd>
+<dt>compress (false)</dt>
+<dd><p>Whether to enable permessage-deflate compression. This does not guarantee that compression will be used as it is the server that ultimately decides. Defaults to false.</p>
+</dd>
+<dt>default_protocol (gun_ws_h)</dt>
+<dd><p>Default protocol module when no Websocket subprotocol is negotiated.</p>
+</dd>
+<dt>flow - see below</dt>
+<dd><p>The initial flow control value for the Websocket connection. By default flow control is disabled.</p>
+</dd>
+<dt>keepalive (infinity)</dt>
+<dd><p>Time between pings in milliseconds.</p>
+</dd>
+<dt>protocols ([])</dt>
+<dd><p>A non-empty list enables Websocket protocol negotiation. The list of protocols will be sent in the sec-websocket-protocol request header. The given module must follow the <a href="../gun_ws_protocol">gun_ws_protocol(3)</a> interface. Gun comes with a default interface in <code>gun_ws_h</code> that may be reused for negotiated protocols.</p>
+</dd>
+<dt>silence_pings (true)</dt>
+<dd><p>Whether the ping and pong frames should be sent to the user. In all cases Gun will automatically send a pong frame back when receiving a ping.</p>
+</dd>
+<dt>user_opts - see below</dt>
+<dd><p>Additional options that are not in use by Gun unless a custom Websocket subprotocol is configured and negotiated. By default no user option is defined.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.2</strong>: The <code>notify_settings_changed</code> option for HTTP/2 was documented.
+</li>
+<li><strong>2.2</strong>: The <code>reply_to</code> option now accepts functions.
+</li>
+<li><strong>2.1</strong>: The HTTP/2 option list was updated with new options.
+</li>
+<li><strong>2.0</strong>: The <code>default_protocol</code> and <code>user_opts</code> Websocket options were added.
+</li>
+<li><strong>2.0</strong>: The <code>stream_ref()</code> type was added.
+</li>
+<li><strong>2.0</strong>: The option <code>cookie_store</code> was added. It can be used to configure a cookie store that Gun will use automatically. A related option, <code>cookie_ignore_informational</code>, was added to both <code>http_opts()</code> and <code>http2_opts()</code>.
+</li>
+<li><strong>2.0</strong>: The types <code>protocols()</code> and <code>socks_opts()</code> have been added. Support for the Socks protocol has been added in every places where protocol selection is available. In addition it is now possible to specify separate HTTP options for the CONNECT proxy and the origin server.
+</li>
+<li><strong>2.0</strong>: The <code>connect_timeout</code> option has been split into three options: <code>domain_lookup_timeout</code>, <code>connect_timeout</code> and when applicable <code>tls_handshake_timeout</code>.
+</li>
+<li><strong>2.0</strong>: The option <code>retry_fun</code> was added. It can be used to implement different reconnect strategies.
+</li>
+<li><strong>2.0</strong>: The <code>transport_opts</code> option has been split into two options: <code>tcp_opts</code> and <code>tls_opts</code>.
+</li>
+<li><strong>2.0</strong>: Function <code>gun:update_flow/3</code> introduced. The <code>flow</code> option was added to request options and HTTP/1.1, HTTP/2 and Websocket options as well.
+</li>
+<li><strong>2.0</strong>: Introduce the type <code>req_headers()</code> and extend the types accepted for header names for greater interoperability. Header names are automatically lowercased as well.
+</li>
+<li><strong>2.0</strong>: Function <code>gun:headers/4,5</code> introduced.
+</li>
+<li><strong>2.0</strong>: The <code>keepalive</code> option is now set to <code>infinity</code> by default for all protocols. This means it is disabled.
+</li>
+<li><strong>2.0</strong>: Websocket options <code>keepalive</code> and <code>silence_pings</code> introduced.
+</li>
+<li><strong>2.0</strong>: Remove the <code>protocol</code> option from <code>connect_destination()</code>.
+</li>
+<li><strong>1.3</strong>: Add the CONNECT destination&apos;s <code>protocols</code> option and deprecate the previously introduced <code>protocol</code> option.
+</li>
+<li><strong>1.2</strong>: Introduce the type <code>connect_destination()</code>.
+</li>
+</ul>
+<h2 id="_see_also">See also</h2>
+<p><a href="..">gun(7)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_app/index.html b/docs/en/gun/2.2/manual/gun_app/index.html
new file mode 100644
index 00000000..e076ae08
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_app/index.html
@@ -0,0 +1,194 @@
+<!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(7)</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=7" 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>gun(7)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP</p>
+<h2 id="_description">Description</h2>
+<p>Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.</p>
+<p>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.</p>
+<h2 id="_modules">Modules</h2>
+<ul><li><a href="../gun">gun(3)</a> - Asynchronous HTTP client
+</li>
+<li><a href="../gun_cookies">gun_cookies(3)</a> - Cookie store engine
+</li>
+<li><a href="../gun_cookies_list">gun_cookies_list(3)</a> - Cookie store backend: in-memory, per connection
+</li>
+<li><a href="../gun_event">gun_event(3)</a> - Events
+</li>
+<li><a href="../gun_ws_protocol">gun_ws_protocol(3)</a> - Websocket subprotocols
+</li>
+</ul>
+<h2 id="_dependencies">Dependencies</h2>
+<ul><li><a href="../cowlib">cowlib(7)</a> - Support library for manipulating Web protocols
+</li>
+<li>ssl - Secure communication over sockets
+</li>
+</ul>
+<p>All these applications must be started before the <code>gun</code> application. To start Gun and all dependencies at once:</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#990000">_</font>} <font color="#990000">=</font> <b><font color="#000000">application:ensure_all_started</font></b>(<font color="#FF6600">gun</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_environment">Environment</h2>
+<p>The <code>gun</code> application does not define any application environment configuration parameters.</p>
+<h2 id="_see_also">See also</h2>
+<p><a href="../cowlib">cowlib(7)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_cookies.domain_match/index.html b/docs/en/gun/2.2/manual/gun_cookies.domain_match/index.html
new file mode 100644
index 00000000..42dc3915
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_cookies.domain_match/index.html
@@ -0,0 +1,198 @@
+<!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_cookies:domain_match(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=7" 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>gun_cookies:domain_match(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_cookies:domain_match - Cookie domain match</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">domain_match</font></b>(<font color="#009900">String</font>, <font color="#009900">DomainString</font>) <font color="#990000">-&gt;</font> <b><font color="#000000">boolean</font></b>()
+
+<font color="#009900">String</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">DomainString</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()</tt></pre>
+</div></div>
+<p>Cookie domain match.</p>
+<p>This function can be used when implementing the <code>set_cookie_secure_match</code> callback of a cookie store.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>String</dt>
+<dd><p>The string to match.</p>
+</dd>
+<dt>DomainString</dt>
+<dd><p>The domain string that will be matched against.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>Returns <code>true</code> when <code>String</code> domain-matches <code>DomainString</code>, and <code>false</code> otherwise.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Perform a domain match</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Match</font> <font color="#990000">=</font> <b><font color="#000000">gun_cookies:domain_match</font></b>(<font color="#009900">Domain</font>, <font color="#009900">CookieDomain</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun_cookies">gun_cookies(3)</a>, <a href="../gun_cookies.path_match">gun_cookies:path_match(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_cookies.path_match/index.html b/docs/en/gun/2.2/manual/gun_cookies.path_match/index.html
new file mode 100644
index 00000000..b9a20e82
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_cookies.path_match/index.html
@@ -0,0 +1,198 @@
+<!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_cookies:path_match(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=7" 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>gun_cookies:path_match(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_cookies:path_match - Cookie path match</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">path_match</font></b>(<font color="#009900">ReqPath</font>, <font color="#009900">CookiePath</font>) <font color="#990000">-&gt;</font> <b><font color="#000000">boolean</font></b>()
+
+<font color="#009900">ReqPath</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">CookiePath</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()</tt></pre>
+</div></div>
+<p>Cookie path match.</p>
+<p>This function can be used when implementing the <code>set_cookie_secure_match</code> callback of a cookie store.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>ReqPath</dt>
+<dd><p>The request path to match.</p>
+</dd>
+<dt>CookiePath</dt>
+<dd><p>The cookie path that will be matched against.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>Returns <code>true</code> when <code>ReqPath</code> path-matches <code>CookiePath</code>, and <code>false</code> otherwise.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Perform a path match</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><font color="#009900">Match</font> <font color="#990000">=</font> <b><font color="#000000">gun_cookies:path_match</font></b>(<font color="#009900">ReqPath</font>, <font color="#009900">CookiePath</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun_cookies">gun_cookies(3)</a>, <a href="../gun_cookies.domain_match">gun_cookies:domain_match(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_cookies/index.html b/docs/en/gun/2.2/manual/gun_cookies/index.html
new file mode 100644
index 00000000..41b8ab27
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_cookies/index.html
@@ -0,0 +1,297 @@
+<!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_cookies(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=7" 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>gun_cookies(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_cookies - Cookie store engine</p>
+<h2 id="_description">Description</h2>
+<p>The <code>gun_cookies</code> module implements a cookie store engine. It will be used by Gun when a cookie store is configured. It also defines the interface and provides functions used to implement cookie store backends.</p>
+<h2 id="_callbacks">Callbacks</h2>
+<p>Cookie store backends implement the following interface. Functions are organized by theme: initialization, querying, storing and garbage collecting:</p>
+<h3 id="_init">init</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">init</font></b>(<font color="#009900">Opts</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()) <font color="#990000">-&gt;</font> <b><font color="#000000">gun_cookies:store</font></b>()</tt></pre>
+</div></div>
+<p>Initialize the cookie store.</p>
+<h3 id="_query">query</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#0000FF">query</font></b>(<font color="#009900">State</font>, <font color="#009900">URI</font>) <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, [<font color="#009900">Cookie</font>], <font color="#009900">State</font>}
+
+<font color="#009900">URI</font> <font color="#990000">::</font> <b><font color="#000000">uri_string:uri_map</font></b>()
+<font color="#009900">Cookie</font> <font color="#990000">::</font> <b><font color="#000000">gun_cookies:cookie</font></b>()
+<font color="#009900">State</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()</tt></pre>
+</div></div>
+<p>Query the store for the cookies for the given URI.</p>
+<h3 id="_set_cookie_secure_match">set_cookie_secure_match</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">set_cookie_secure_match</font></b>(<font color="#009900">State</font>, <font color="#009900">Match</font>) <font color="#990000">-&gt;</font> <font color="#FF6600">match</font> | <font color="#FF6600">nomatch</font>
+
+<font color="#009900">State</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()
+<font color="#009900">Match</font> <font color="#990000">::</font> #{
+ <font color="#FF6600">name</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+<i><font color="#9A1900">% secure_only := true,</font></i>
+ <font color="#FF6600">domain</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">path</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>()
+}</tt></pre>
+</div></div>
+<p>Perform a secure match against cookies already in the store. This is part of the heuristics that the cookie store engine applies to decide whether the cookie must be stored.</p>
+<p>The <code>secure_only</code> attribute is implied, it is not actually passed in the argument.</p>
+<h3 id="_set_cookie_get_exact_match">set_cookie_get_exact_match</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">set_cookie_get_exact_match</font></b>(<font color="#009900">State</font>, <font color="#009900">Match</font>)
+ <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <b><font color="#000000">gun_cookies:cookie</font></b>(), <font color="#009900">State</font>} | <font color="#FF6600">error</font>
+
+<font color="#009900">State</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()
+<font color="#009900">Match</font> <font color="#990000">::</font> #{
+ <font color="#FF6600">name</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">domain</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">host_only</font> <font color="#990000">:=</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#FF6600">path</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>()
+}</tt></pre>
+</div></div>
+<p>Perform an exact match against cookies already in the store. This is part of the heuristics that the cookie store engine applies to decide whether the cookie must be stored.</p>
+<p>When a cookie is found, it must be returned so that it gets updated. When nothing is found a new cookie will be stored.</p>
+<h3 id="_store">store</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">store</font></b>(<font color="#009900">State</font>, <b><font color="#000000">gun_cookies:cookie</font></b>())
+ <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">State</font>} | {<font color="#FF6600">error</font>, <b><font color="#000000">any</font></b>()}
+
+<font color="#009900">State</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()</tt></pre>
+</div></div>
+<p>Unconditionally store the cookie into the cookie store.</p>
+<h3 id="_gc">gc</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">gc</font></b>(<font color="#009900">State</font>) <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">State</font>}
+
+<font color="#009900">State</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()</tt></pre>
+</div></div>
+<p>Remove all cookies from the cookie store that are expired.</p>
+<p>Other cookies may be removed as well, at the discretion of the cookie store. For example excess cookies may be removed to reduce the memory footprint.</p>
+<h3 id="_session_gc">session_gc</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">session_gc</font></b>(<font color="#009900">State</font>) <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">State</font>}
+
+<font color="#009900">State</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()</tt></pre>
+</div></div>
+<p>Remove all cookies from the cookie store that have the <code>persistent</code> flag set to <code>false</code>.</p>
+<h2 id="_exports">Exports</h2>
+<ul><li><a href="../gun_cookies.domain_match">gun_cookies:domain_match(3)</a> - Cookie domain match
+</li>
+<li><a href="../gun_cookies.path_match">gun_cookies:path_match(3)</a> - Cookie path match
+</li>
+</ul>
+<h2 id="_types">Types</h2>
+<h3 id="_cookie">cookie()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">cookie</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">name</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">value</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">domain</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">path</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">creation_time</font> <font color="#990000">:=</font> <b><font color="#000000">calendar:datetime</font></b>(),
+ <font color="#FF6600">last_access_time</font> <font color="#990000">:=</font> <b><font color="#000000">calendar:datetime</font></b>(),
+ <font color="#FF6600">expiry_time</font> <font color="#990000">:=</font> <b><font color="#000000">calendar:datetime</font></b>() | <font color="#FF6600">infinity</font>,
+ <font color="#FF6600">persistent</font> <font color="#990000">:=</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#FF6600">host_only</font> <font color="#990000">:=</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#FF6600">secure_only</font> <font color="#990000">:=</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#FF6600">http_only</font> <font color="#990000">:=</font> <b><font color="#000000">boolean</font></b>(),
+ <font color="#FF6600">same_site</font> <font color="#990000">:=</font> <font color="#FF6600">strict</font> | <font color="#FF6600">lax</font> | <font color="#FF6600">none</font>
+}</tt></pre>
+</div></div>
+<p>A cookie.</p>
+<p>This contains the cookie name, value, attributes and flags. This is the representation that the cookie store engine and Gun expects. Cookies do not have to be kept in this format in the cookie store backend.</p>
+<h3 id="_store">store()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">store</font></b>() <font color="#990000">::</font> {<b><font color="#000000">module</font></b>(), <font color="#009900">StoreState</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()}</tt></pre>
+</div></div>
+<p>The cookie store.</p>
+<p>This is a tuple containing the cookie store backend module and its current state.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Module introduced.
+</li>
+</ul>
+<h2 id="_see_also">See also</h2>
+<p><a href="..">gun(7)</a>, <a href="../gun_cookies_list">gun_cookies_list(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_cookies_list/index.html b/docs/en/gun/2.2/manual/gun_cookies_list/index.html
new file mode 100644
index 00000000..a5ce1c08
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_cookies_list/index.html
@@ -0,0 +1,195 @@
+<!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_cookies_list(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=7" 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>gun_cookies_list(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_cookies_list - Cookie store backend: in-memory, per connection</p>
+<h2 id="_description">Description</h2>
+<p>The <code>gun_cookies_list</code> module implements a cookie store backend that keeps all the cookie data in-memory and tied to a specific connection.</p>
+<p>It is possible to implement a custom backend on top of <code>gun_cookies_list</code> in order to add persistence or sharing properties.</p>
+<h2 id="_exports">Exports</h2>
+<p>This module implements the callbacks defined in <a href="../gun_cookies">gun_cookies(3)</a>.</p>
+<h2 id="_types">Types</h2>
+<h3 id="_opts">opts()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">opts</font></b>() <font color="#990000">::</font> #{
+}</tt></pre>
+</div></div>
+<p>Cookie store backend options.</p>
+<p>There are currently no options available for this backend.</p>
+<!-- The default value is given next to the option name:-->
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Module introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Open a connection with a cookie store configured</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">ConnPid</font>} <font color="#990000">=</font> <b><font color="#000000">gun:open</font></b>(<font color="#009900">Host</font>, <font color="#009900">Port</font>, #{
+ <font color="#0000FF">cookie_store</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun_cookies_list:init</font></b>(#{})
+})</tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="..">gun(7)</a>, <a href="../gun_cookies">gun_cookies(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_data/index.html b/docs/en/gun/2.2/manual/gun_data/index.html
new file mode 100644
index 00000000..9dda7c01
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_data/index.html
@@ -0,0 +1,210 @@
+<!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_data(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=7" 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>gun_data(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_data - Response body</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_data</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">IsFin</font>, <font color="#009900">Data</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">IsFin</font> <font color="#990000">::</font> <font color="#FF6600">fin</font> | <font color="#FF6600">nofin</font>
+<font color="#009900">Data</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()</tt></pre>
+</div></div>
+<p>Response body.</p>
+<p>This message informs the relevant process that the server sent a all or part of the body for the response to the original request.</p>
+<p>A data message is always preceded by a response message.</p>
+<p>The response body may be terminated either by a data message with the flag <code>fin</code> set or by a <a href="../gun_trailers">gun_trailers(3)</a> message.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>IsFin</dt>
+<dd><p>Whether this message terminates the response.</p>
+</dd>
+<dt>Data</dt>
+<dd><p>All or part of the response body.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_data message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_data</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>,
+ <font color="#009900">_IsFin</font>, <font color="#009900">_Data</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.delete">gun:delete(3)</a>, <a href="../gun.options">gun:options(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_trailers">gun_trailers(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_down/index.html b/docs/en/gun/2.2/manual/gun_down/index.html
new file mode 100644
index 00000000..b0d1126a
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_down/index.html
@@ -0,0 +1,212 @@
+<!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_down(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=7" 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>gun_down(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_down - The connection is down</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_down</font>, <font color="#009900">ConnPid</font>, <font color="#009900">Protocol</font>, <font color="#009900">Reason</font>, <font color="#009900">KilledStreams</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Protocol</font> <font color="#990000">::</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">ws</font>
+<font color="#009900">Reason</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()
+<font color="#009900">KilledStreams</font> <font color="#990000">::</font> [<b><font color="#000000">gun:stream_ref</font></b>()]</tt></pre>
+</div></div>
+<p>The connection is down.</p>
+<p>This message informs the owner process that the connection was lost. Depending on the <code>retry</code> and <code>retry_timeout</code> options Gun may automatically attempt to reconnect.</p>
+<p>When the connection goes back up, Gun will not attempt to retry requests. It will also not upgrade to Websocket automatically if that was the protocol in use when the connection was lost.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Protocol</dt>
+<dd><p>The protocol that was selected for this connection or upgraded to during the course of the connection.</p>
+</dd>
+<dt>Reason</dt>
+<dd><p>The reason for the loss of the connection.</p>
+<p>It is present for debugging purposes only. You should not rely on this value to perform operations programmatically.</p>
+</dd>
+<dt>KilledStreams</dt>
+<dd><p>List of streams that have been brutally terminated.</p>
+<p>They are active streams that did not complete before the closing of the connection. Whether they can be retried safely depends on the protocol used and the idempotence property of the requests.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: The last element of the message&apos;s tuple, <code>UnprocessedStreams</code> has been removed.
+</li>
+<li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_down message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_down</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_Protocol</font>, <font color="#009900">_Reason</font>, <font color="#009900">_Killed</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a>, <a href="../gun_up">gun_up(3)</a>, <a href="../gun_tunnel_up">gun_tunnel_up(3)</a>, <a href="../gun_error">gun_error(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_error/index.html b/docs/en/gun/2.2/manual/gun_error/index.html
new file mode 100644
index 00000000..e5a945bb
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_error/index.html
@@ -0,0 +1,209 @@
+<!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_error(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=7" 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>gun_error(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_error - Stream or connection-wide error</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_error</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Reason</font>}
+{<font color="#FF6600">gun_error</font>, <font color="#009900">ConnPid</font>, <font color="#009900">Reason</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Reason</font> <font color="#990000">::</font> <b><font color="#000000">any</font></b>()</tt></pre>
+</div></div>
+<p>Stream or connection-wide error.</p>
+<p>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.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream that resulted in an error.</p>
+</dd>
+<dt>Reason</dt>
+<dd><p>The reason for the error.</p>
+<p>It is present for debugging purposes only. You should not rely on this value to perform operations programmatically.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_error message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_error</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_Reason</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>};
+<b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_error</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>, <font color="#009900">_Reason</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun_up">gun_up(3)</a>, <a href="../gun_tunnel_up">gun_tunnel_up(3)</a>, <a href="../gun_down">gun_down(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_event/index.html b/docs/en/gun/2.2/manual/gun_event/index.html
new file mode 100644
index 00000000..f74420e7
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_event/index.html
@@ -0,0 +1,576 @@
+<!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_event(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=7" 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>gun_event(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_event - Events</p>
+<h2 id="_description">Description</h2>
+<p>The <code>gun_event</code> module provides the callback interface and types for implementing event handlers.</p>
+<h2 id="_callbacks">Callbacks</h2>
+<p>Event handlers implement the following interface. Because types are tied to specific events, they are documented alongside them. All event types are exported and can be referred to as <code>gun_event:Type()</code>.</p>
+<p>The events are ordered by the order they are likely to be triggered, with the most frequent events listed first.</p>
+<h3 id="_init">init</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">init_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">owner</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">transport</font> <font color="#990000">:=</font> <font color="#FF6600">tcp</font> | <font color="#FF6600">tls</font>,
+ <font color="#FF6600">origin_scheme</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">origin_host</font> <font color="#990000">:=</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#FF6600">origin_port</font> <font color="#990000">:=</font> <b><font color="#000000">inet:port_number</font></b>(),
+ <font color="#FF6600">opts</font> <font color="#990000">:=</font> <b><font color="#000000">gun:opts</font></b>()
+}
+
+<b><font color="#000000">init</font></b>(<b><font color="#000000">init_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun is initializing.</p>
+<h3 id="_domain_lookup_start">domain_lookup_start</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">domain_lookup_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">host</font> <font color="#990000">:=</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#FF6600">port</font> <font color="#990000">:=</font> <b><font color="#000000">inet:port_number</font></b>(),
+ <font color="#FF6600">tcp_opts</font> <font color="#990000">:=</font> [<b><font color="#000000">gen_tcp:connect_option</font></b>()],
+ <font color="#FF6600">timeout</font> <font color="#990000">:=</font> <b><font color="#000000">timeout</font></b>(),
+ <font color="#0000FF">lookup_info</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun_tcp:lookup_info</font></b>(),
+ <font color="#0000FF">error</font> <font color="#990000">=&gt;</font> <b><font color="#000000">any</font></b>()
+}
+
+<b><font color="#000000">domain_lookup_start</font></b>(<b><font color="#000000">domain_lookup_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun is starting to resolve the host address.</p>
+<p>The <code>lookup_info</code> and <code>error</code> keys are never set for this event.</p>
+<h3 id="_domain_lookup_end">domain_lookup_end</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">domain_lookup_end</font></b>(<b><font color="#000000">domain_lookup_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished resolving the host address.</p>
+<p>The <code>lookup_info</code> key is only set when the lookup is successful. The <code>error</code> key is set otherwise.</p>
+<h3 id="_connect_start">connect_start</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">connect_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">lookup_info</font> <font color="#990000">:=</font> <b><font color="#000000">gun_tcp:lookup_info</font></b>(),
+ <font color="#FF6600">timeout</font> <font color="#990000">:=</font> <b><font color="#000000">timeout</font></b>(),
+ <font color="#0000FF">socket</font> <font color="#990000">=&gt;</font> <b><font color="#000000">inet:socket</font></b>(),
+ <font color="#0000FF">protocol</font> <font color="#990000">=&gt;</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">raw</font>,
+ <font color="#0000FF">error</font> <font color="#990000">=&gt;</font> <b><font color="#000000">any</font></b>()
+}
+
+<b><font color="#000000">connect_start</font></b>(<b><font color="#000000">connect_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun is starting to connect to the host address and port.</p>
+<p>The <code>socket</code>, <code>protocol</code> and <code>error</code> keys are never set for this event.</p>
+<h3 id="_connect_end">connect_end</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">connect_end</font></b>(<b><font color="#000000">connect_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished connecting to the host address and port.</p>
+<p>The <code>socket</code> key is set on connect success. The <code>error</code> key is set otherwise.</p>
+<p>The <code>protocol</code> key is only set when the transport is <code>tcp</code> and the connection is successful. The protocol is only known in the <code>tls_handshake_end</code> event otherwise.</p>
+<h3 id="_tls_handshake_start">tls_handshake_start</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">tls_handshake_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#0000FF">stream_ref</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#0000FF">reply_to</font> <font color="#990000">=&gt;</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">socket</font> <font color="#990000">:=</font> <b><font color="#000000">inet:socket</font></b>() | <b><font color="#000000">ssl:sslsocket</font></b>() | <b><font color="#000080">pid</font></b>(), <i><font color="#9A1900">%% The socket before/after will be different.</font></i>
+ <font color="#FF6600">tls_opts</font> <font color="#990000">:=</font> [<b><font color="#000000">ssl:tls_client_option</font></b>()],
+ <font color="#FF6600">timeout</font> <font color="#990000">:=</font> <b><font color="#000000">timeout</font></b>(),
+ <font color="#0000FF">protocol</font> <font color="#990000">=&gt;</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">raw</font>,
+ <font color="#0000FF">error</font> <font color="#990000">=&gt;</font> <b><font color="#000000">any</font></b>()
+}
+
+<b><font color="#000000">tls_handshake_start</font></b>(<b><font color="#000000">tls_handshake_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has started a TLS handshake.</p>
+<p>This and the <code>tls_handshake_end</code> event only occur when connecting to a TLS server or when upgrading the connection or a stream to use TLS, for example when using CONNECT or when connecting to a secure SOCKS server.</p>
+<p>The <code>stream_ref</code> and <code>reply_to</code> keys are only set when the TLS handshake occurs as a result of a CONNECT request or inside an existing CONNECT tunnel.</p>
+<p>The <code>protocol</code> and <code>error</code> keys are never set for this event.</p>
+<h3 id="_tls_handshake_end">tls_handshake_end</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">tls_handshake_end</font></b>(<b><font color="#000000">tls_handshake_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished a TLS handshake.</p>
+<p>The <code>protocol</code> key is set on TLS handshake success. The <code>error</code> key is set otherwise.</p>
+<h3 id="_request_start">request_start</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">request_start_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">function</font> <font color="#990000">:=</font> <font color="#FF6600">headers</font> | <font color="#FF6600">request</font> | <font color="#FF6600">ws_upgrade</font> | <font color="#FF6600">connect</font>,
+ <font color="#FF6600">method</font> <font color="#990000">:=</font> <b><font color="#000000">iodata</font></b>(),
+ <font color="#0000FF">scheme</font> <font color="#990000">=&gt;</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">authority</font> <font color="#990000">:=</font> <b><font color="#000000">iodata</font></b>(),
+ <font color="#0000FF">path</font> <font color="#990000">=&gt;</font> <b><font color="#000000">iodata</font></b>(),
+ <font color="#FF6600">headers</font> <font color="#990000">:=</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000000">iodata</font></b>()}]
+}
+
+<b><font color="#000000">request_start</font></b>(<b><font color="#000000">request_start_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun is starting to send a request.</p>
+<p>The <code>scheme</code> and <code>path</code> keys are never set when the <code>function</code> is set to <code>connect</code>.</p>
+<h3 id="_request_headers">request_headers</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">request_headers</font></b>(<b><font color="#000000">request_start_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished sending the request headers.</p>
+<h3 id="_request_end">request_end</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">request_end_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>()
+}
+
+<b><font color="#000000">request_end</font></b>(<b><font color="#000000">request_end_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished sending the request.</p>
+<h3 id="_push_promise_start">push_promise_start</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">push_promise_start_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>()
+}
+
+<b><font color="#000000">push_promise_start</font></b>(<b><font color="#000000">push_promise_start_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has begun receiving a promised request (server push).</p>
+<h3 id="_push_promise_end">push_promise_end</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">push_promise_end_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#0000FF">promised_stream_ref</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">method</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">uri</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">headers</font> <font color="#990000">:=</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000000">iodata</font></b>()}]
+}
+
+<b><font color="#000000">push_promise_end</font></b>(<b><font color="#000000">push_promise_end_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished receiving a promised request (server push). Promised requests never include a body.</p>
+<p>Promised requests received during the graceful shutdown of the connection get canceled immediately.</p>
+<!-- @todo The cancel event should probably trigger as well.-->
+<h3 id="_response_start">response_start</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">response_start_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>()
+}
+
+<b><font color="#000000">response_start</font></b>(<b><font color="#000000">response_start_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has begun receiving a response.</p>
+<h3 id="_response_inform">response_inform</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">response_headers_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">status</font> <font color="#990000">:=</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#FF6600">headers</font> <font color="#990000">:=</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]
+}
+
+<b><font color="#000000">response_inform</font></b>(<b><font color="#000000">response_headers_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has received an informational response (1xx status code).</p>
+<p>A <code>status</code> with value 101 indicates that the response has concluded as the stream will be upgraded to a new protocol.</p>
+<h3 id="_response_headers">response_headers</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">response_headers</font></b>(<b><font color="#000000">response_headers_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished receiving response headers.</p>
+<h3 id="_response_trailers">response_trailers</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">response_trailers_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">headers</font> <font color="#990000">:=</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]
+}
+
+<b><font color="#000000">response_trailers</font></b>(<b><font color="#000000">response_trailers_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has received response trailers.</p>
+<h3 id="_response_end">response_end</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">response_end_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>()
+}
+
+<b><font color="#000000">response_end</font></b>(<b><font color="#000000">response_end_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished receiving a response.</p>
+<h3 id="_ws_upgrade">ws_upgrade</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_upgrade_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">opts</font> <font color="#990000">:=</font> <b><font color="#000000">gun:ws_opts</font></b>()
+}
+
+<b><font color="#000000">ws_upgrade</font></b>(<b><font color="#000000">ws_upgrade_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>A Websocket upgrade was requested.</p>
+<p>Success is indicated by a response (101 informational if HTTP/1.1, 2xx if HTTP/2) followed by a <code>protocol_changed</code> event.</p>
+<h3 id="_ws_recv_frame_start">ws_recv_frame_start</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_recv_frame_start_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">frag_state</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:frag_state</font></b>(),
+ <font color="#FF6600">extensions</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:extensions</font></b>()
+}
+
+<b><font color="#000000">ws_recv_frame_start</font></b>(<b><font color="#000000">ws_recv_frame_start_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has begun receiving a Websocket frame.</p>
+<h3 id="_ws_recv_frame_header">ws_recv_frame_header</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_recv_frame_header_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">frag_state</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:frag_state</font></b>(),
+ <font color="#FF6600">extensions</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:extensions</font></b>(),
+ <font color="#FF6600">type</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:frame_type</font></b>(),
+ <font color="#FF6600">rsv</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:rsv</font></b>(),
+ <font color="#FF6600">len</font> <font color="#990000">:=</font> <b><font color="#000000">non_neg_integer</font></b>(),
+ <font color="#FF6600">mask_key</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:mask_key</font></b>()
+}
+
+<b><font color="#000000">ws_recv_frame_header</font></b>(<b><font color="#000000">ws_recv_frame_header_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has received the header part of a Websocket frame.</p>
+<p>It will be immediately be followed by the frame&apos;s payload.</p>
+<h3 id="_ws_recv_frame_end">ws_recv_frame_end</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_recv_frame_end_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">extensions</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:extensions</font></b>(),
+ <font color="#FF6600">close_code</font> <font color="#990000">:=</font> <font color="#000080">undefined</font> | <b><font color="#000000">cow_ws:close_code</font></b>(),
+ <font color="#FF6600">payload</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>()
+}
+
+<b><font color="#000000">ws_recv_frame_end</font></b>(<b><font color="#000000">ws_recv_frame_end_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished receiving a Websocket frame.</p>
+<h3 id="_ws_send_frame_start">ws_send_frame_start</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_send_frame_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">extensions</font> <font color="#990000">:=</font> <b><font color="#000000">cow_ws:extensions</font></b>(),
+ <font color="#FF6600">frame</font> <font color="#990000">:=</font> <b><font color="#000000">gun:ws_frame</font></b>()
+}
+
+<b><font color="#000000">ws_send_frame_start</font></b>(<b><font color="#000000">ws_send_frame_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has started sending a Websocket frame.</p>
+<h3 id="_ws_send_frame_end">ws_send_frame_end</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">ws_send_frame_end</font></b>(<b><font color="#000000">ws_send_frame_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has finished sending a Websocket frame.</p>
+<h3 id="_protocol_changed">protocol_changed</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">protocol_changed_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">protocol</font> <font color="#990000">:=</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font> | <font color="#FF6600">raw</font> | <font color="#FF6600">ws</font>
+}
+
+<b><font color="#000000">protocol_changed</font></b>(<b><font color="#000000">protocol_changed_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>The protocol has changed for either the entire Gun connection or for a specific stream.</p>
+<p>The <code>stream_ref</code> key is only set when the protocol has changed for a specific stream or inside a CONNECT tunnel.</p>
+<p>This event occurs during successful Websocket upgrades, as a result of successful CONNECT requests or after a SOCKS tunnel was successfully established.</p>
+<h3 id="_origin_changed">origin_changed</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">origin_changed_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#0000FF">stream_ref</font> <font color="#990000">=&gt;</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">type</font> <font color="#990000">:=</font> <font color="#FF6600">connect</font> | <font color="#FF6600">socks5</font>,
+ <font color="#FF6600">origin_scheme</font> <font color="#990000">:=</font> <b><font color="#000080">binary</font></b>(),
+ <font color="#FF6600">origin_host</font> <font color="#990000">:=</font> <b><font color="#000000">inet:hostname</font></b>() | <b><font color="#000000">inet:ip_address</font></b>(),
+ <font color="#FF6600">origin_port</font> <font color="#990000">:=</font> <b><font color="#000000">inet:port_number</font></b>()
+}
+
+<b><font color="#000000">origin_changed</font></b>(<b><font color="#000000">origin_changed_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>The origin server has changed for either the Gun connection or for a specific stream.</p>
+<p>The <code>stream_ref</code> key is only set when the origin has changed for a specific stream or inside a CONNECT tunnel.</p>
+<h3 id="_cancel">cancel</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">cancel_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">stream_ref</font> <font color="#990000">:=</font> <b><font color="#000000">gun:stream_ref</font></b>(),
+ <font color="#FF6600">reply_to</font> <font color="#990000">:=</font> <b><font color="#000080">pid</font></b>(),
+ <font color="#FF6600">endpoint</font> <font color="#990000">:=</font> <font color="#FF6600">local</font> | <font color="#FF6600">remote</font>,
+ <font color="#FF6600">reason</font> <font color="#990000">:=</font> <b><font color="#000080">atom</font></b>()
+}
+
+<b><font color="#000000">cancel</font></b>(<b><font color="#000000">cancel_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>A stream has been canceled.</p>
+<p>HTTP/1.1 streams can&apos;t be canceled at the protocol level. In this case Gun will silence the stream for the user but events may still occur.</p>
+<p>HTTP/2 streams can be canceled both by the client and the server. Events may still occur for a short time after the stream has been canceled.</p>
+<h3 id="_disconnect">disconnect</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">disconnect_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">reason</font> <font color="#990000">:=</font> <b><font color="#000080">normal</font></b> | <font color="#FF6600">closed</font> | {<font color="#FF6600">error</font>, <b><font color="#000000">any</font></b>()}
+}
+
+<b><font color="#000000">disconnect</font></b>(<b><font color="#000000">disconnect_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun has been disconnected from the server.</p>
+<h3 id="_terminate">terminate</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">terminate_event</font></b>() <font color="#990000">::</font> #{
+ <font color="#FF6600">state</font> <font color="#990000">:=</font> <font color="#FF6600">not_connected</font>
+ | <font color="#FF6600">domain_lookup</font> | <font color="#FF6600">connecting</font> | <font color="#FF6600">initial_tls_handshake</font> | <font color="#FF6600">tls_handshake</font>
+ | <font color="#FF6600">connected</font> | <font color="#FF6600">connected_data_only</font> | <font color="#FF6600">connected_ws_only</font>,
+ <font color="#FF6600">reason</font> <font color="#990000">:=</font> <b><font color="#000080">normal</font></b> | <font color="#000080">shutdown</font> | {<font color="#000080">shutdown</font>, <b><font color="#000000">any</font></b>()} | <b><font color="#000000">any</font></b>()
+}
+
+<b><font color="#000000">terminate</font></b>(<b><font color="#000000">terminate_event</font></b>(), <font color="#009900">State</font>) <font color="#990000">-&gt;</font> <font color="#009900">State</font></tt></pre>
+</div></div>
+<p>Gun is terminating.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Module introduced.
+</li>
+</ul>
+<h2 id="_see_also">See also</h2>
+<p><a href="..">gun(7)</a>, <a href="../gun">gun(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_inform/index.html b/docs/en/gun/2.2/manual/gun_inform/index.html
new file mode 100644
index 00000000..b225f1ae
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_inform/index.html
@@ -0,0 +1,209 @@
+<!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_inform(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=7" 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>gun_inform(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_inform - Informational response</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_inform</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Status</font> <font color="#990000">::</font> <font color="#993399">100</font><font color="#990000">..</font><font color="#993399">199</font>
+<font color="#009900">Headers</font> <font color="#990000">::</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]</tt></pre>
+</div></div>
+<p>Informational response.</p>
+<p>This message informs the relevant process that the server sent an informational response to the original request.</p>
+<p>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.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>Status</dt>
+<dd><p>Status code for the informational response.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Headers sent with the informational response.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_inform message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_inform</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>,
+ <font color="#009900">_Status</font>, <font color="#009900">_Headers</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun_response">gun_response(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_notify/index.html b/docs/en/gun/2.2/manual/gun_notify/index.html
new file mode 100644
index 00000000..70399f43
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_notify/index.html
@@ -0,0 +1,207 @@
+<!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_notify(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=7" 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>gun_notify(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_notify - Optional event notification</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_notify</font>, <font color="#009900">ConnPid</font>, <font color="#FF6600">settings_changed</font>, <font color="#009900">Settings</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Settings</font> <font color="#990000">::</font> <b><font color="#000000">map</font></b>()</tt></pre>
+</div></div>
+<p>Optional event notification.</p>
+<p>Only two event notifications currently exist:</p>
+<ul><li><code>settings_changed</code> informs the user that the server has modified its connection settings.
+</li>
+<li><code>ping_ack</code> informs the user that acknowledgement for a user ping was received.
+</li>
+</ul>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Event</dt>
+<dd><p>Identifier for the event. Currently can only be <code>settings_changed</code> or <code>ping_ack</code>.</p>
+</dd>
+<dt>Data</dt>
+<dd><p>Data for the event. Currently can only be the new connection settings, or the ping reference.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.2</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_notify message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_notify</font>, <font color="#009900">ConnPid</font>, <font color="#FF6600">settings_changed</font>, <font color="#009900">Settings</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.ping">gun:ping(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_push/index.html b/docs/en/gun/2.2/manual/gun_push/index.html
new file mode 100644
index 00000000..7adf487f
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_push/index.html
@@ -0,0 +1,229 @@
+<!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_push(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=7" 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>gun_push(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_push - Server-initiated push</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_push</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">NewStreamRef</font>, <font color="#009900">Method</font>, <font color="#009900">URI</font>, <font color="#009900">Headers</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">NewStreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Method</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">URI</font> <font color="#990000">::</font> <b><font color="#000080">binary</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]</tt></pre>
+</div></div>
+<p>Server-initiated push.</p>
+<p>This message informs the relevant process that the server is pushing a resource related to the effective target URI of the original request.</p>
+<p>A server-initiated push message always precedes the response to the original request.</p>
+<p>This message will not be sent when using the HTTP/1.1 protocol because it lacks the concept of server-initiated push.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>NewStreamRef</dt>
+<dd><p>Identifier of the stream being pushed.</p>
+</dd>
+<dt>Method</dt>
+<dd><p>Method of the equivalent HTTP request.</p>
+</dd>
+<dt>URI</dt>
+<dd><p>URI of the resource being pushed.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Headers of the equivalent HTTP request.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_push message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_push</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>,
+ <font color="#009900">_NewStreamRef</font>, <font color="#009900">_Method</font>, <font color="#009900">_URI</font>, <font color="#009900">_Headers</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Cancel an unwanted push</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_push</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>,
+ <font color="#009900">NewStreamRef</font>, <font color="#009900">_Method</font>, <font color="#009900">_URI</font>, <font color="#009900">_Headers</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <b><font color="#000000">gun:cancel</font></b>(<font color="#009900">ConnPid</font>, <font color="#009900">NewStreamRef</font>),
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.cancel">gun:cancel(3)</a>, <a href="../gun_response">gun_response(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_response/index.html b/docs/en/gun/2.2/manual/gun_response/index.html
new file mode 100644
index 00000000..8b1ac5c8
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_response/index.html
@@ -0,0 +1,212 @@
+<!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_response(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=7" 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>gun_response(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_response - Response</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_response</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">IsFin</font>, <font color="#009900">Status</font>, <font color="#009900">Headers</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">IsFin</font> <font color="#990000">::</font> <font color="#FF6600">fin</font> | <font color="#FF6600">nofin</font>
+<font color="#009900">Status</font> <font color="#990000">::</font> <b><font color="#000000">non_neg_integer</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]</tt></pre>
+</div></div>
+<p>Response.</p>
+<p>This message informs the relevant process that the server sent a response to the original request.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>IsFin</dt>
+<dd><p>Whether this message terminates the response.</p>
+</dd>
+<dt>Status</dt>
+<dd><p>Status code for the response.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Headers sent with the response.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_response message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_response</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>,
+ <font color="#009900">_IsFin</font>, <font color="#009900">_Status</font>, <font color="#009900">_Headers</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.delete">gun:delete(3)</a>, <a href="../gun.options">gun:options(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun_inform">gun_inform(3)</a>, <a href="../gun_push">gun_push(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_trailers/index.html b/docs/en/gun/2.2/manual/gun_trailers/index.html
new file mode 100644
index 00000000..412709ff
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_trailers/index.html
@@ -0,0 +1,204 @@
+<!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_trailers(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=7" 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>gun_trailers(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_trailers - Response trailers</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_trailers</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Headers</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]</tt></pre>
+</div></div>
+<p>Response trailers.</p>
+<p>This message informs the relevant process that the server sent response trailers for the response to the original request.</p>
+<p>A trailers message terminates the response.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream for the original request.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Trailing headers sent after the response body.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_trailers message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_trailers</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>, <font color="#009900">_Headers</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.get">gun:get(3)</a>, <a href="../gun.head">gun:head(3)</a>, <a href="../gun.patch">gun:patch(3)</a>, <a href="../gun.post">gun:post(3)</a>, <a href="../gun.put">gun:put(3)</a>, <a href="../gun.delete">gun:delete(3)</a>, <a href="../gun.options">gun:options(3)</a>, <a href="../gun.headers">gun:headers(3)</a>, <a href="../gun.request">gun:request(3)</a>, <a href="../gun_response">gun_response(3)</a>, <a href="../gun_data">gun_data(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_tunnel_up/index.html b/docs/en/gun/2.2/manual/gun_tunnel_up/index.html
new file mode 100644
index 00000000..b172bae5
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_tunnel_up/index.html
@@ -0,0 +1,204 @@
+<!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_tunnel_up(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=7" 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>gun_tunnel_up(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_tunnel_up - The tunnel is up</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_tunnel_up</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Protocol</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>() | <font color="#000080">undefined</font>
+<font color="#009900">Protocol</font> <font color="#990000">::</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">socks</font></tt></pre>
+</div></div>
+<p>The tunnel is up.</p>
+<p>This message informs the owner/calling process that the connection completed through the SOCKS or CONNECT proxy.</p>
+<p>If Gun is configured to connect to another SOCKS server, then the connection is not usable yet. One or more <a href="../gun_tunnel_up">gun_tunnel_up(3)</a> messages will follow.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>The stream reference the tunnel is running on, or <code>undefined</code> if there are no underlying stream.</p>
+</dd>
+<dt>Protocol</dt>
+<dd><p>The protocol selected for this connection. It can be used to determine the capabilities of the server.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_tunnel_up message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_tunnel_up</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>, <font color="#009900">_Protocol</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a>, <a href="../gun.await_up">gun:await_up(3)</a>, <a href="../gun_up">gun_up(3)</a>, <a href="../gun_down">gun_down(3)</a>, <a href="../gun_error">gun_error(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_up/index.html b/docs/en/gun/2.2/manual/gun_up/index.html
new file mode 100644
index 00000000..26bdada2
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_up/index.html
@@ -0,0 +1,201 @@
+<!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_up(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=7" 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>gun_up(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_up - The connection is up</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_up</font>, <font color="#009900">ConnPid</font>, <font color="#009900">Protocol</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">Protocol</font> <font color="#990000">::</font> <font color="#FF6600">http</font> | <font color="#FF6600">http2</font> | <font color="#FF6600">raw</font> | <font color="#FF6600">socks</font></tt></pre>
+</div></div>
+<p>The connection is up.</p>
+<p>This message informs the owner process that the connection or reconnection completed.</p>
+<p>If Gun is configured to connect to a Socks server, then the connection is not usable yet. One or more <a href="../gun_tunnel_up">gun_tunnel_up(3)</a> messages will follow.</p>
+<p>Otherwise, Gun will start processing the messages it received while waiting for the connection to be up. If this is a reconnection, then this may not be desirable for all requests. Those requests should be cancelled when the connection goes down, and any subsequent messages ignored.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>Protocol</dt>
+<dd><p>The protocol selected for this connection. It can be used to determine the capabilities of the server.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_up message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_up</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_Protocol</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.open">gun:open(3)</a>, <a href="../gun.open_unix">gun:open_unix(3)</a>, <a href="../gun.await_up">gun:await_up(3)</a>, <a href="../gun_tunnel_up">gun_tunnel_up(3)</a>, <a href="../gun_down">gun_down(3)</a>, <a href="../gun_error">gun_error(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_upgrade/index.html b/docs/en/gun/2.2/manual/gun_upgrade/index.html
new file mode 100644
index 00000000..f71b2456
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_upgrade/index.html
@@ -0,0 +1,210 @@
+<!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_upgrade(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=7" 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>gun_upgrade(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_upgrade - Successful protocol upgrade</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_upgrade</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Protocols</font>, <font color="#009900">Headers</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Protocols</font> <font color="#990000">::</font> [<font color="#990000">&lt;&lt;</font><font color="#FF0000">"websocket"</font><font color="#990000">&gt;&gt;</font>]
+<font color="#009900">Headers</font> <font color="#990000">::</font> [{<b><font color="#000080">binary</font></b>(), <b><font color="#000080">binary</font></b>()}]</tt></pre>
+</div></div>
+<p>Successful protocol upgrade.</p>
+<p>This message informs the relevant process that the server accepted to upgrade to one or more protocols given in the original request.</p>
+<p>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.</p>
+<p>Gun currently only supports upgrading HTTP/1.1 connections to the Websocket protocol.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream that resulted in an upgrade.</p>
+</dd>
+<dt>Protocols</dt>
+<dd><p>List of protocols this stream was upgraded to.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Headers sent with the upgrade response.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_upgrade message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_upgrade</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>,
+ <font color="#009900">_Protocols</font>, <font color="#009900">_Headers</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.ws_upgrade">gun:ws_upgrade(3)</a>, <a href="../gun.ws_send">gun:ws_send(3)</a>, <a href="../gun_ws">gun_ws(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_ws/index.html b/docs/en/gun/2.2/manual/gun_ws/index.html
new file mode 100644
index 00000000..ab4bd678
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_ws/index.html
@@ -0,0 +1,209 @@
+<!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_ws(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=7" 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>gun_ws(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_ws - Websocket frame</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">gun_ws</font>, <font color="#009900">ConnPid</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Frame</font>}
+
+<font color="#009900">ConnPid</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000000">gun:stream_ref</font></b>()
+<font color="#009900">Frame</font> <font color="#990000">::</font> <font color="#FF6600">close</font> | <font color="#FF6600">ping</font> | <font color="#FF6600">pong</font>
+ | {<font color="#FF6600">text</font> | <b><font color="#000080">binary</font></b> | <font color="#FF6600">close</font>, <b><font color="#000080">binary</font></b>()}
+ | {<font color="#FF6600">close</font>, <b><font color="#000000">non_neg_integer</font></b>(), <b><font color="#000080">binary</font></b>()}
+ | {<font color="#FF6600">ping</font> | <font color="#FF6600">pong</font>, <b><font color="#000080">binary</font></b>()}</tt></pre>
+</div></div>
+<p>Websocket frame.</p>
+<p>This message informs the relevant process that the server sent the enclosed frame.</p>
+<p>This message can only be sent on streams that were upgraded to the Websocket protocol.</p>
+<h2 id="_elements">Elements</h2>
+<dl><dt>ConnPid</dt>
+<dd><p>The pid of the Gun connection process.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>Identifier of the stream that was upgraded to Websocket.</p>
+</dd>
+<dt>Frame</dt>
+<dd><p>The Websocket frame in question.</p>
+</dd>
+</dl>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Depending on the option <code>silence_pings</code>, ping and pong frames may be sent as well.
+</li>
+<li><strong>1.0</strong>: Message introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Receive a gun_ws message in a gen_server</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle_info</font></b>({<font color="#FF6600">gun_ws</font>, <font color="#009900">ConnPid</font>, <font color="#009900">_StreamRef</font>, <font color="#009900">_Frame</font>},
+ <font color="#009900">State</font><font color="#990000">=</font><font color="#008080">#state</font>{<font color="#0000FF">conn_pid</font><font color="#990000">=</font><font color="#009900">ConnPid</font>}) <font color="#990000">-&gt;</font>
+ <i><font color="#9A1900">%% Do something.</font></i>
+ {<font color="#FF6600">noreply</font>, <font color="#009900">State</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../gun">gun(3)</a>, <a href="../gun.ws_upgrade">gun:ws_upgrade(3)</a>, <a href="../gun.ws_send">gun:ws_send(3)</a>, <a href="../gun_upgrade">gun_upgrade(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/gun_ws_protocol/index.html b/docs/en/gun/2.2/manual/gun_ws_protocol/index.html
new file mode 100644
index 00000000..67383298
--- /dev/null
+++ b/docs/en/gun/2.2/manual/gun_ws_protocol/index.html
@@ -0,0 +1,235 @@
+<!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_ws_protocol(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=7" 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>gun_ws_protocol(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun_ws_protocol - Websocket subprotocols</p>
+<h2 id="_description">Description</h2>
+<p>The <code>gun_ws_protocol</code> module provides the callback interface and types for implementing Websocket subprotocols.</p>
+<h2 id="_callbacks">Callbacks</h2>
+<p>Websocket subprotocols implement the following interface.</p>
+<h3 id="_init">init</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">init</font></b>(<font color="#009900">ReplyTo</font>, <font color="#009900">StreamRef</font>, <font color="#009900">Headers</font>, <font color="#009900">Opts</font>) <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">State</font>}
+
+<font color="#009900">ReplyTo</font> <font color="#990000">::</font> <b><font color="#000080">pid</font></b>()
+<font color="#009900">StreamRef</font> <font color="#990000">::</font> <b><font color="#000080">reference</font></b>()
+<font color="#009900">Headers</font> <font color="#990000">::</font> <b><font color="#000000">cow_http:headers</font></b>()
+<font color="#009900">Opts</font> <font color="#990000">::</font> <b><font color="#000000">gun:ws_opts</font></b>()
+<font color="#009900">State</font> <font color="#990000">::</font> <b><font color="#000000">protocol_state</font></b>()</tt></pre>
+</div></div>
+<p>Initialize the Websocket protocol.</p>
+<dl><dt>ReplyTo</dt>
+<dd><p>The pid of the process that owns the stream and to which messages will be sent to.</p>
+</dd>
+<dt>StreamRef</dt>
+<dd><p>The reference for the stream. Must be sent in messages to distinguish between different streams.</p>
+</dd>
+<dt>Headers</dt>
+<dd><p>Headers that were sent in the response establishing the Websocket connection.</p>
+</dd>
+<dt>Opts</dt>
+<dd><p>Websocket options. Custom options can be provided in the <code>user_opts</code> key.</p>
+</dd>
+<dt>State</dt>
+<dd><p>State for the protocol.</p>
+</dd>
+</dl>
+<h3 id="_handle">handle</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">handle</font></b>(<font color="#009900">Frame</font>, <font color="#009900">State</font>) <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">FlowDec</font>, <font color="#009900">State</font>}
+
+<font color="#009900">Frame</font> <font color="#990000">::</font> <b><font color="#000000">cow_ws:frame</font></b>()
+<font color="#009900">State</font> <font color="#990000">::</font> <b><font color="#000000">protocol_state</font></b>()
+<font color="#009900">FlowDec</font> <font color="#990000">::</font> <b><font color="#000000">non_neg_integer</font></b>()</tt></pre>
+</div></div>
+<p>Handle a Websocket frame.</p>
+<p>This callback may receive fragmented frames depending on the protocol and may need to rebuild the full frame to process it.</p>
+<dl><dt>Frame</dt>
+<dd><p>Websocket frame.</p>
+</dd>
+<dt>State</dt>
+<dd><p>State for the protocol.</p>
+</dd>
+<dt>FlowDec</dt>
+<dd><p>How many messages were sent. Used to update the flow control state when the feature is enabled.</p>
+</dd>
+</dl>
+<h2 id="_types">Types</h2>
+<h3 id="_protocol_state">protocol_state()</h3>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">protocol_state</font></b>() <font color="#990000">::</font> <b><font color="#000000">any</font></b>()</tt></pre>
+</div></div>
+<p>State for the protocol.</p>
+<p>As this part of the implementation of the protocol the type may differ between different Websocket protocol modules.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.0</strong>: Module introduced.
+</li>
+</ul>
+<h2 id="_see_also">See also</h2>
+<p><a href="..">gun(7)</a>, <a href="../gun">gun(3)</a>, <a href="../gun.ws_upgrade">gun:ws_upgrade(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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.2/manual/index.html b/docs/en/gun/2.2/manual/index.html
new file mode 100644
index 00000000..40687a6f
--- /dev/null
+++ b/docs/en/gun/2.2/manual/index.html
@@ -0,0 +1,194 @@
+<!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 Function Reference</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=7" 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>Gun Function Reference</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP</p>
+<h2 id="_description">Description</h2>
+<p>Gun is an HTTP client for Erlang/OTP with support for the HTTP/1.1, HTTP/2 and Websocket protocols.</p>
+<p>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.</p>
+<h2 id="_modules">Modules</h2>
+<ul><li><a href="gun">gun(3)</a> - Asynchronous HTTP client
+</li>
+<li><a href="gun_cookies">gun_cookies(3)</a> - Cookie store engine
+</li>
+<li><a href="gun_cookies_list">gun_cookies_list(3)</a> - Cookie store backend: in-memory, per connection
+</li>
+<li><a href="gun_event">gun_event(3)</a> - Events
+</li>
+<li><a href="gun_ws_protocol">gun_ws_protocol(3)</a> - Websocket subprotocols
+</li>
+</ul>
+<h2 id="_dependencies">Dependencies</h2>
+<ul><li><a href="cowlib_app">cowlib(7)</a> - Support library for manipulating Web protocols
+</li>
+<li>ssl - Secure communication over sockets
+</li>
+</ul>
+<p>All these applications must be started before the <code>gun</code> application. To start Gun and all dependencies at once:</p>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#990000">_</font>} <font color="#990000">=</font> <b><font color="#000000">application:ensure_all_started</font></b>(<font color="#FF6600">gun</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_environment">Environment</h2>
+<p>The <code>gun</code> application does not define any application environment configuration parameters.</p>
+<h2 id="_see_also">See also</h2>
+<p><a href="cowlib_app">cowlib(7)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Gun
+ 2.2
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/gun/2.2/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/gun/2.2/manual">2.2</a></li>
+
+ <li><a href="/docs/en/gun/2.1/manual">2.1</a></li>
+
+ <li><a href="/docs/en/gun/2.0/manual">2.0</a></li>
+
+ <li><a href="/docs/en/gun/1.3/manual">1.3</a></li>
+
+ <li><a href="/docs/en/gun/1.2/manual">1.2</a></li>
+
+ <li><a href="/docs/en/gun/1.1/manual">1.1</a></li>
+
+ <li><a href="/docs/en/gun/1.0/manual">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://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, 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/index.html b/docs/index.html
index e60b05e1..9cd088bd 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -133,6 +133,11 @@
+ <li><a href="/docs/en/cowlib/2.15/manual">Cowlib 2.15 Function Reference</a></li>
+
+
+
+
<li><a href="/docs/en/cowlib/2.14/manual">Cowlib 2.14 Function Reference</a></li>
@@ -181,6 +186,13 @@
<ul>
+ <li><a href="/docs/en/gun/2.2/guide">Gun 2.2 User Guide</a></li>
+
+
+ <li><a href="/docs/en/gun/2.2/manual">Gun 2.2 Function Reference</a></li>
+
+
+
<li><a href="/docs/en/gun/2.1/guide">Gun 2.1 User Guide</a></li>
diff --git a/docs/index.xml b/docs/index.xml
index fb9811c3..93ea20b3 100644
--- a/docs/index.xml
+++ b/docs/index.xml
@@ -102,6 +102,21 @@ Copyright (c) 2013-2023, Loïc Hoguin &amp;lt;[email protected]&amp;gt; Permiss
<item>
<title>Introduction</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/introduction/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 22.0 and newer.
+License Gun uses the ISC License.
+Copyright (c) 2013-2025, Loïc Hoguin &amp;lt;[email protected]&amp;gt; Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.</description>
+ </item>
+
+ <item>
+ <title>Introduction</title>
<link>https://ninenines.eu/docs/en/ranch/1.6/guide/introduction/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -473,6 +488,18 @@ Adding Gun as an Erlang.mk dependency source-highlight: could not find a languag
</item>
<item>
+ <title>Starting and stopping</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/start/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 source-highlight: could not find a language definition for make Starting Gun is an OTP application. It needs to be started before you can use it.</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>
@@ -545,6 +572,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.2/guide/protocols/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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.10/guide/introduction/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -785,6 +824,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.2/guide/connect/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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.6/guide/protocols/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -997,6 +1047,18 @@ Streams can be canceled at any time.</description>
</item>
<item>
+ <title>HTTP</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/http/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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.6/guide/embedded/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -1219,6 +1281,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.2/guide/websocket/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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.6/guide/parsers/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -1316,6 +1389,16 @@ In order to have a TLS layer inside another TLS layer we need a way to encode th
</item>
<item>
+ <title>Internals: TLS over TLS</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/internals_tls_over_tls/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/internals_tls_over_tls/</guid>
+ <description>The ssl application that comes with Erlang/OTP implements TLS using an interface equivalent to the gen_tcp interface: you get and manipulate a socket. The TLS encoding and decoding is applied transparently to the data sent and received.
+In order to have a TLS layer inside another TLS layer we need a way to encode the data of the inner layer before we pass it to the outer layer. We cannot do this with a socket interface.</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>
@@ -1682,6 +1765,17 @@ Features added A new HTTP/2 option max_fragmented_header_block_size has been add
</item>
<item>
+ <title>Migrating from Gun 2.1 to 2.2</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.1/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.1/</guid>
+ <description>Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation.
+Gun 2.2 requires Erlang/OTP 24.0 or greater.
+Features added Gun will now do wildcard certificate matching by default, as required by the HTTP protocol, by setting the customize_hostname_check ssl option. User pings are now supported for HTTP/2. User pings are PING frames sent by the user, with the corresponding PING_ACK resulting in a gun_notify message being sent to the user process.</description>
+ </item>
+
+ <item>
<title>Constraints</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/constraints/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -1972,6 +2066,17 @@ Gun 2.0 adds many more features such as Websocket over HTTP/2, a built-in cookie
</item>
<item>
+ <title>Migrating from Gun 2.0 to 2.1</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.0/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.0/</guid>
+ <description>Gun 2.1 contains a small security improvement for the HTTP/2 protocol, as well as includes a small number of fixes and improvements.
+Gun 2.1 requires Erlang/OTP 22.0 or greater.
+Features added A new HTTP/2 option max_fragmented_header_block_size has been added to limit the size of header blocks that are sent over multiple HEADERS and CONTINUATION frames. Update Cowlib to 2.13.0. Bugs fixed Gun will no longer configure the NPN TLS extension, which has long been replaced by ALPN.</description>
+ </item>
+
+ <item>
<title>Migrating from Ranch 1.7 to Ranch 2.0</title>
<link>https://ninenines.eu/docs/en/ranch/2.0/guide/migrating_from_1.7/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2148,6 +2253,16 @@ Features added The protocols CONNECT destination option has been added as a repl
</item>
<item>
+ <title>Migrating from Gun 1.3 to 2.0</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.3/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.3/</guid>
+ <description>Gun 2.0 includes state of the art tunnel support. With Gun 2.0 it is possible to make requests or data go through any number of proxy endpoints using any combination of TCP or TLS transports and HTTP/1.1, HTTP/2 or SOCKS5 protocols. All combinations of the scenario Proxy1 -&amp;gt; Proxy2 -&amp;gt; Origin are tested and known to work.
+Gun 2.0 adds many more features such as Websocket over HTTP/2, a built-in cookie store, graceful shutdown, flow control for data messages, event handlers and more.</description>
+ </item>
+
+ <item>
<title>Static files</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/static_files/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2322,6 +2437,16 @@ 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/2.2/guide/migrating_from_1.2/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>The Req object</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/req/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2590,6 +2715,16 @@ 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/2.2/guide/migrating_from_1.1/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>Sending a response</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/resp/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2819,6 +2954,16 @@ Cookies are a name/value store where the names and values are stored in plain te
</item>
<item>
+ <title>Migrating from Gun 1.0 to 1.1</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.0/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>Multipart requests</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/multipart/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -4717,6 +4862,17 @@ Exports cow_cookie:parse_cookie(3) - Parse a cookie header cow_cookie:parse_set
<item>
<title>cow_cookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie/</guid>
+ <description>Name cow_cookie - Cookies
+Description The module cow_cookie provides functions for parsing and manipulating cookie headers.
+Exports cow_cookie:parse_cookie(3) - Parse a cookie header cow_cookie:parse_set_cookie(3) - Parse a set-cookie header cow_cookie:cookie(3) - Generate a cookie header cow_cookie:setcookie(3) - Generate a set-cookie header Types cookie_attrs() cookie_attrs() :: #{ expires =&amp;gt; calendar:datetime(), max_age =&amp;gt; calendar:datetime(), domain =&amp;gt; binary(), path =&amp;gt; binary(), secure =&amp;gt; true, http_only =&amp;gt; true, same_site =&amp;gt; default | none | strict | lax } Cookie attributes parsed from the set-cookie header.</description>
+ </item>
+
+ <item>
+ <title>cow_cookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -4804,6 +4960,19 @@ Changelog 2.9: Function introduced. Examples Generate a cookie header Cookie =
<item>
<title>cow_cookie:cookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.cookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.cookie/</guid>
+ <description>Name cow_cookie:cookie - Generate a cookie header
+Description cookie(Cookies) -&amp;gt; iolist() Cookies :: [{Name :: iodata(), Value :: iodata()}] Generate a cookie header.
+Arguments Cookies A list of pairs of cookie name and value.
+ Return value An iolist with the generated cookie header value.
+Changelog 2.9: Function introduced. Examples Generate a cookie header Cookie = cow_cookie:cookie([{&amp;lt;&amp;lt;&#34;sessionid&#34;&amp;gt;&amp;gt;, ID}]). See also cow_cookie(3), cow_cookie:parse_cookie(3), cow_cookie:parse_set_cookie(3), cow_cookie:setcookie(3)</description>
+ </item>
+
+ <item>
+ <title>cow_cookie:cookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.9/manual/cow_cookie.cookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -4887,6 +5056,20 @@ Changelog 2.9: Fixes to the parser may lead to potential incompatibilities. A co
<item>
<title>cow_cookie:parse_cookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_cookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_cookie/</guid>
+ <description>Name cow_cookie:parse_cookie - Parse a cookie header
+Description parse_cookie(Cookie :: binary()) -&amp;gt; [{binary(), binary()}] Parse a cookie header.
+Arguments Cookie The cookie header value.
+ Return value A list of cookie name/value pairs is returned on success.
+An exception is thrown in the event of a parse error.
+Changelog 2.9: Fixes to the parser may lead to potential incompatibilities. A cookie name starting with $ is no longer ignored.</description>
+ </item>
+
+ <item>
+ <title>cow_cookie:parse_cookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie.parse_cookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -4980,6 +5163,19 @@ An atom ignore is returned when the cookie has both an empty name and an empty v
<item>
<title>cow_cookie:parse_set_cookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_set_cookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_set_cookie/</guid>
+ <description>Name cow_cookie:parse_set_cookie - Parse a set-cookie header
+Description parse_set_cookie(SetCookie :: binary()) -&amp;gt; {ok, Name, Value, Attrs} | ignore Name :: binary() Value :: binary() Attrs :: cow_cookie:cookie_attrs() Parse a set-cookie header.
+Arguments SetCookie The set-cookie header value.
+ Return value An ok tuple with the cookie name, value and attributes is returned on success.
+An atom ignore is returned when the cookie has both an empty name and an empty value, and must be ignored.</description>
+ </item>
+
+ <item>
+ <title>cow_cookie:parse_set_cookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.9/manual/cow_cookie.parse_set_cookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -5068,6 +5264,21 @@ Changelog 2.12: The Version attribute is no longer generated. 1.0: Function int
<item>
<title>cow_cookie:setcookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.setcookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.setcookie/</guid>
+ <description>Name cow_cookie:setcookie - Generate a set-cookie header
+Description setcookie(Name :: iodata(), Value :: iodata(), Opts :: cow_cookie:cookie_opts()) -&amp;gt; iolist() Generate a set-cookie header.
+Arguments Name Cookie name.
+ Value Cookie value.
+ Opts Options added to the set-cookie header as attributes.
+ Return value An iolist with the generated set-cookie header value.
+Changelog 2.12: The Version attribute is no longer generated. 1.0: Function introduced. Examples Generate a set-cookie header SetCookie = cow_cookie:setcookie(&amp;lt;&amp;lt;&#34;</description>
+ </item>
+
+ <item>
+ <title>cow_cookie:setcookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie.setcookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -12893,6 +13104,18 @@ Modules cow_cookie(3) - Cookies Dependencies crypto - Crypto functions All t
<item>
<title>Cowlib Function Reference</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/</guid>
+ <description>Name cowlib - Support library for manipulating Web protocols
+Description Cowlib provides libraries for parsing and building messages for various Web protocols, including HTTP/1.1, HTTP/2 and Websocket.
+It is optimized for completeness rather than speed. No value is ignored, they are all returned.
+Modules cow_cookie(3) - Cookies Dependencies crypto - Crypto functions All these applications must be started before the cowlib application. To start Cowlib and all dependencies at once:</description>
+ </item>
+
+ <item>
+ <title>Cowlib Function Reference</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -12977,6 +13200,18 @@ Modules cow_cookie(3) - Cookies Dependencies crypto - Crypto functions All t
<item>
<title>cowlib(7)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cowlib_app/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cowlib_app/</guid>
+ <description>Name cowlib - Support library for manipulating Web protocols
+Description Cowlib provides libraries for parsing and building messages for various Web protocols, including HTTP/1.1, HTTP/2 and Websocket.
+It is optimized for completeness rather than speed. No value is ignored, they are all returned.
+Modules cow_cookie(3) - Cookies Dependencies crypto - Crypto functions All these applications must be started before the cowlib application. To start Cowlib and all dependencies at once:</description>
+ </item>
+
+ <item>
+ <title>cowlib(7)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/cowlib_app/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -13072,6 +13307,18 @@ Modules gun(3) - Asynchronous HTTP client gun_cookies(3) - Cookie store engine
</item>
<item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.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 gun_cookies(3) - Cookie store engine gun_cookies_list(3) - Cookie store backend: in-memory, per connection gun_event(3) - Events gun_ws_protocol(3) - Websocket subprotocols 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>
@@ -13126,6 +13373,15 @@ Modules gun(3) - Asynchronous HTTP client gun_cookies(3) - Cookie store engine
</item>
<item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Advanced Internals: TLS over TLS Additional information Migrating from Gun 2.1 to 2.2 Migrating from Gun 2.0 to 2.1 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>
@@ -13198,6 +13454,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.2/manual/gun/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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:ping(3) - Check the health or RTT of 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>
@@ -13270,6 +13538,18 @@ Modules gun(3) - Asynchronous HTTP client gun_cookies(3) - Cookie store engine
</item>
<item>
+ <title>gun(7)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_app/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 gun_cookies(3) - Cookie store engine gun_cookies_list(3) - Cookie store backend: in-memory, per connection gun_event(3) - Events gun_ws_protocol(3) - Websocket subprotocols 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>
@@ -13336,6 +13616,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.2/manual/gun.await/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -13396,6 +13687,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.2/manual/gun.await_body/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -13462,6 +13763,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.2/manual/gun.await_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -13534,6 +13846,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.2/manual/gun.cancel/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun.cancel/</guid>
+ <description>Name gun:cancel - Cancel the given stream
+Description cancel(ConnPid, StreamRef) -&amp;gt; ok ConnPid :: pid() StreamRef :: gun:stream_ref() 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>
@@ -13612,6 +13936,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.2/manual/gun.close/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -13656,6 +13993,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.2/manual/gun.connect/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -13728,6 +14076,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.2/manual/gun.data/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -13812,6 +14172,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.2/manual/gun.delete/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -13896,6 +14270,20 @@ ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:flush(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.flush/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -13976,6 +14364,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.2/manual/gun.get/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14042,6 +14444,17 @@ 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.2/manual/gun.head/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14066,6 +14479,18 @@ The function headers/4,5 initiates a request but does not send the request body.
</item>
<item>
+ <title>gun:headers(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.headers/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14135,6 +14560,16 @@ Description info(ConnPid) -&amp;gt; Info ConnPid :: pid() Info :: #{ owner =&amp
</item>
<item>
+ <title>gun:info(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.info/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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, state_name =&amp;gt; atom(), sock_ip =&amp;gt; inet:ip_address(), sock_port =&amp;gt; inet:port_number(), origin_scheme =&amp;gt; binary() | undefined, origin_host =&amp;gt; inet:hostname() | inet:ip_address(), origin_port =&amp;gt; inet:port_number(), intermediaries =&amp;gt; [Intermediary], cookie_store =&amp;gt; gun_cookies:cookie_store(), event_handler =&amp;gt; module(), event_handler_state =&amp;gt; any() } 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 | raw } 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>
@@ -14209,6 +14644,17 @@ Arguments Host Host or IP address to connect to.</description>
</item>
<item>
+ <title>gun:open(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.open/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -14285,6 +14731,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.2/manual/gun.open_unix/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -14351,6 +14809,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.2/manual/gun.options/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14415,6 +14884,27 @@ Description patch(ConnPid, Path, Headers) -&amp;gt; patch(ConnPid, Path, Headers
</item>
<item>
+ <title>gun:patch(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.patch/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() Apply a set of changes to a resource.</description>
+ </item>
+
+ <item>
+ <title>gun:ping(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ping/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ping/</guid>
+ <description>Name gun:ping - Check the health or RTT of the connection
+Description ping(ConnPid) -&amp;gt; ping(ConnPid, #{}) ping(ConnPid, ReqOpts) -&amp;gt; PingRef ConnPid :: pid() ReqOpts :: gun:req_opts() PingRef :: reference() Check the health or round-trip time of the connection.
+On protocols that support it, Gun will send a PING frame and wait for its corresponding acknowledgement. When it receives that acknowledgement the user process gets notified via a gun_notify message.</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>
@@ -14479,6 +14969,16 @@ Description post(ConnPid, Path, Headers) -&amp;gt; post(ConnPid, Path, Headers,
</item>
<item>
+ <title>gun:post(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.post/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14549,6 +15049,17 @@ The behavior of this function varies depending on whether a body is provided.</d
</item>
<item>
+ <title>gun:put(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.put/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14615,6 +15126,17 @@ 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.2/manual/gun.request/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14643,6 +15165,20 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:set_owner(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.set_owner/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -14667,6 +15203,18 @@ For HTTP/1.1 there is no such mechanism and Gun will close the connection once t
</item>
<item>
+ <title>gun:shutdown(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.shutdown/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -14687,6 +15235,16 @@ Description stream_info(ConnPid, StreamRef) -&amp;gt; {ok, undefined | Info} | {
</item>
<item>
+ <title>gun:stream_info(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.stream_info/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() Info :: #{ ref =&amp;gt; gun:stream_ref(), reply_to =&amp;gt; pid(), state =&amp;gt; running | stopping, intermediaries =&amp;gt; [Intermediary], tunnel =&amp;gt; Tunnel } 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 | raw } Tunnel :: #{ transport =&amp;gt; tcp | tls, protocol =&amp;gt; http | http2 | socks | raw, origin_scheme =&amp;gt; binary() | undefined, origin_host =&amp;gt; inet:hostname() | inet:ip_address(), origin_port =&amp;gt; inet:port_number() } Obtain information about a 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>
@@ -14715,6 +15273,20 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:update_flow(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.update_flow/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14791,6 +15363,18 @@ Arguments ConnPid The pid of the Gun connection process.</description>
</item>
<item>
+ <title>gun:ws_send(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ws_send/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ws_send/</guid>
+ <description>Name gun:ws_send - Send Websocket frames
+Description ws_send(ConnPid, StreamRef, Frames) -&amp;gt; ok ConnPid :: pid() StreamRef :: gun:stream_ref() 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.</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>
@@ -14863,6 +15447,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.2/manual/gun.ws_upgrade/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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_cookies(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -14887,6 +15483,18 @@ init init(Opts :: any()) -&amp;gt; gun_cookies:store() Initialize the cookie st
</item>
<item>
+ <title>gun_cookies(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies/</guid>
+ <description>Name gun_cookies - Cookie store engine
+Description The gun_cookies module implements a cookie store engine. It will be used by Gun when a cookie store is configured. It also defines the interface and provides functions used to implement cookie store backends.
+Callbacks Cookie store backends implement the following interface. Functions are organized by theme: initialization, querying, storing and garbage collecting:
+init init(Opts :: any()) -&amp;gt; gun_cookies:store() Initialize the cookie store.</description>
+ </item>
+
+ <item>
<title>gun_cookies:domain_match(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies.domain_match/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -14917,6 +15525,21 @@ Changelog 2.0: Function introduced. Examples Perform a domain match Match = gu
</item>
<item>
+ <title>gun_cookies:domain_match(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.domain_match/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.domain_match/</guid>
+ <description>Name gun_cookies:domain_match - Cookie domain match
+Description domain_match(String, DomainString) -&amp;gt; boolean() String :: binary() DomainString :: binary() Cookie domain match.
+This function can be used when implementing the set_cookie_secure_match callback of a cookie store.
+Arguments String The string to match.
+ DomainString The domain string that will be matched against.
+ Return value Returns true when String domain-matches DomainString, and false otherwise.
+Changelog 2.0: Function introduced. Examples Perform a domain match Match = gun_cookies:domain_match(Domain, CookieDomain).</description>
+ </item>
+
+ <item>
<title>gun_cookies:path_match(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies.path_match/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -14947,6 +15570,21 @@ Changelog 2.0: Function introduced. Examples Perform a path match Match = gun_
</item>
<item>
+ <title>gun_cookies:path_match(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.path_match/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.path_match/</guid>
+ <description>Name gun_cookies:path_match - Cookie path match
+Description path_match(ReqPath, CookiePath) -&amp;gt; boolean() ReqPath :: binary() CookiePath :: binary() Cookie path match.
+This function can be used when implementing the set_cookie_secure_match callback of a cookie store.
+Arguments ReqPath The request path to match.
+ CookiePath The cookie path that will be matched against.
+ Return value Returns true when ReqPath path-matches CookiePath, and false otherwise.
+Changelog 2.0: Function introduced. Examples Perform a path match Match = gun_cookies:path_match(ReqPath, CookiePath).</description>
+ </item>
+
+ <item>
<title>gun_cookies_list(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies_list/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -14973,6 +15611,19 @@ Types opts() opts() :: #{ } Cookie store backend options.</description>
</item>
<item>
+ <title>gun_cookies_list(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies_list/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies_list/</guid>
+ <description>Name gun_cookies_list - Cookie store backend: in-memory, per connection
+Description The gun_cookies_list module implements a cookie store backend that keeps all the cookie data in-memory and tied to a specific connection.
+It is possible to implement a custom backend on top of gun_cookies_list in order to add persistence or sharing properties.
+Exports This module implements the callbacks defined in gun_cookies(3).
+Types opts() opts() :: #{ } Cookie store backend options.</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>
@@ -15051,6 +15702,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.2/manual/gun_data/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_data/</guid>
+ <description>Name gun_data - Response body
+Description {gun_data, ConnPid, StreamRef, IsFin, Data} ConnPid :: pid() StreamRef :: gun:stream_ref() 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>
@@ -15123,6 +15787,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.2/manual/gun_down/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: [gun:stream_ref()] 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>
@@ -15189,6 +15865,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.2/manual/gun_error/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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_event(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_event/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -15215,6 +15902,19 @@ init init_event() :: #{ owner := pid(), transport := tcp | tls, origin_scheme :=
</item>
<item>
+ <title>gun_event(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_event/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_event/</guid>
+ <description>Name gun_event - Events
+Description The gun_event module provides the callback interface and types for implementing event handlers.
+Callbacks Event handlers implement the following interface. Because types are tied to specific events, they are documented alongside them. All event types are exported and can be referred to as gun_event:Type().
+The events are ordered by the order they are likely to be triggered, with the most frequent events listed first.
+init init_event() :: #{ owner := pid(), transport := tcp | tls, origin_scheme := binary(), origin_host := inet:hostname() | inet:ip_address(), origin_port := inet:port_number(), opts := gun:opts() } init(init_event(), State) -&amp;gt; State Gun is initializing.</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>
@@ -15287,6 +15987,31 @@ 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.2/manual/gun_inform/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_inform/</guid>
+ <description>Name gun_inform - Informational response
+Description {gun_inform, ConnPid, StreamRef, Status, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() 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_notify(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_notify/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_notify/</guid>
+ <description>Name gun_notify - Optional event notification
+Description {gun_notify, ConnPid, settings_changed, Settings} ConnPid :: pid() Settings :: map() Optional event notification.
+Only two event notifications currently exist:
+settings_changed informs the user that the server has modified its connection settings. ping_ack informs the user that acknowledgement for a user ping was received. Elements ConnPid The pid of the Gun connection process.
+ Event Identifier for the event. Currently can only be settings_changed or ping_ack.</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>
@@ -15359,6 +16084,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.2/manual/gun_push/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_push/</guid>
+ <description>Name gun_push - Server-initiated push
+Description {gun_push, ConnPid, StreamRef, NewStreamRef, Method, URI, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() NewStreamRef :: gun:stream_ref() 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>
@@ -15443,6 +16180,20 @@ Elements ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun_response(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_response/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_response/</guid>
+ <description>Name gun_response - Response
+Description {gun_response, ConnPid, StreamRef, IsFin, Status, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() 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_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>
@@ -15533,6 +16284,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.2/manual/gun_trailers/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_trailers/</guid>
+ <description>Name gun_trailers - Response trailers
+Description {gun_trailers, ConnPid, StreamRef, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() 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_tunnel_up(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_tunnel_up/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -15557,6 +16323,18 @@ If Gun is configured to connect to another SOCKS server, then the connection is
</item>
<item>
+ <title>gun_tunnel_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_tunnel_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_tunnel_up/</guid>
+ <description>Name gun_tunnel_up - The tunnel is up
+Description {gun_tunnel_up, ConnPid, StreamRef, Protocol} ConnPid :: pid() StreamRef :: gun:stream_ref() | undefined Protocol :: http | http2 | socks The tunnel is up.
+This message informs the owner/calling process that the connection completed through the SOCKS or CONNECT proxy.
+If Gun is configured to connect to another SOCKS server, then the connection is not usable yet. One or more gun_tunnel_up(3) messages will follow.</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>
@@ -15631,6 +16409,19 @@ Otherwise, Gun will start processing the messages it received while waiting for
</item>
<item>
+ <title>gun_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_up/</guid>
+ <description>Name gun_up - The connection is up
+Description {gun_up, ConnPid, Protocol} ConnPid :: pid() Protocol :: http | http2 | raw | 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_tunnel_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>
@@ -15703,6 +16494,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.2/manual/gun_upgrade/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_upgrade/</guid>
+ <description>Name gun_upgrade - Successful protocol upgrade
+Description {gun_upgrade, ConnPid, StreamRef, Protocols, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() 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>
@@ -15779,6 +16582,18 @@ This message can only be sent on streams that were upgraded to the Websocket pro
</item>
<item>
+ <title>gun_ws(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws/</guid>
+ <description>Name gun_ws - Websocket frame
+Description {gun_ws, ConnPid, StreamRef, Frame} ConnPid :: pid() StreamRef :: gun:stream_ref() 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>gun_ws_protocol(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_ws_protocol/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -15805,6 +16620,19 @@ ReplyTo The pid of the process that owns the stream and to which messages will b
</item>
<item>
+ <title>gun_ws_protocol(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws_protocol/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws_protocol/</guid>
+ <description>Name gun_ws_protocol - Websocket subprotocols
+Description The gun_ws_protocol module provides the callback interface and types for implementing Websocket subprotocols.
+Callbacks Websocket subprotocols implement the following interface.
+init init(ReplyTo, StreamRef, Headers, Opts) -&amp;gt; {ok, State} ReplyTo :: pid() StreamRef :: reference() Headers :: cow_http:headers() Opts :: gun:ws_opts() State :: protocol_state() Initialize the Websocket protocol.
+ReplyTo The pid of the process that owns the stream and to which messages will be sent to.</description>
+ </item>
+
+ <item>
<title>HTTP status codes(7)</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/manual/http_status_codes/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
diff --git a/donate/index.html b/donate/index.html
index 15ff521f..0ccb81cb 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -1037,6 +1037,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<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">
@@ -3296,6 +3324,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</div>
</div>
</div>
diff --git a/erlanger-playbook/index.html b/erlanger-playbook/index.html
index dc5d3d01..1ad76ad0 100644
--- a/erlanger-playbook/index.html
+++ b/erlanger-playbook/index.html
@@ -1077,6 +1077,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<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">
@@ -3336,6 +3364,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</div>
</div>
</div>
diff --git a/index.html b/index.html
index 811aeb40..08370d49 100644
--- a/index.html
+++ b/index.html
@@ -135,7 +135,7 @@
<a class="btn btn-large" href="https://github.com/ninenines/cowlib">Source Code</a>
- <a class="btn btn-large" href="/docs/en/cowlib/2.14/manual/">Manual</a>
+ <a class="btn btn-large" href="/docs/en/cowlib/2.15/manual/">Manual</a>
</p>
@@ -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/2.1/guide/">User Guide</a>
+ <a class="btn btn-large" href="/docs/en/gun/2.2/guide/">User Guide</a>
- <a class="btn btn-large" href="/docs/en/gun/2.1/manual/">Manual</a>
+ <a class="btn btn-large" href="/docs/en/gun/2.2/manual/">Manual</a>
</p>
@@ -1177,6 +1177,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<p>Reward my work via <a href="https://github.com/sponsors/essen">GitHub Sponsors</a> and<br/>GitHub will double the funds I receive!</p>
@@ -3420,6 +3448,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</div></div>
</div>
diff --git a/index.xml b/index.xml
index c7c93fec..f3f83106 100644
--- a/index.xml
+++ b/index.xml
@@ -103,6 +103,21 @@ Copyright (c) 2013-2023, Loïc Hoguin &amp;lt;[email protected]&amp;gt; Permiss
<item>
<title>Introduction</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/introduction/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 22.0 and newer.
+License Gun uses the ISC License.
+Copyright (c) 2013-2025, Loïc Hoguin &amp;lt;[email protected]&amp;gt; Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.</description>
+ </item>
+
+ <item>
+ <title>Introduction</title>
<link>https://ninenines.eu/docs/en/ranch/1.6/guide/introduction/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -474,6 +489,18 @@ Adding Gun as an Erlang.mk dependency source-highlight: could not find a languag
</item>
<item>
+ <title>Starting and stopping</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/start/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 source-highlight: could not find a language definition for make Starting Gun is an OTP application. It needs to be started before you can use it.</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>
@@ -546,6 +573,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.2/guide/protocols/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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.10/guide/introduction/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -786,6 +825,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.2/guide/connect/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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.6/guide/protocols/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -998,6 +1048,18 @@ Streams can be canceled at any time.</description>
</item>
<item>
+ <title>HTTP</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/http/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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.6/guide/embedded/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -1220,6 +1282,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.2/guide/websocket/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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.6/guide/parsers/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -1317,6 +1390,16 @@ In order to have a TLS layer inside another TLS layer we need a way to encode th
</item>
<item>
+ <title>Internals: TLS over TLS</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/internals_tls_over_tls/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/internals_tls_over_tls/</guid>
+ <description>The ssl application that comes with Erlang/OTP implements TLS using an interface equivalent to the gen_tcp interface: you get and manipulate a socket. The TLS encoding and decoding is applied transparently to the data sent and received.
+In order to have a TLS layer inside another TLS layer we need a way to encode the data of the inner layer before we pass it to the outer layer. We cannot do this with a socket interface.</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>
@@ -1683,6 +1766,17 @@ Features added A new HTTP/2 option max_fragmented_header_block_size has been add
</item>
<item>
+ <title>Migrating from Gun 2.1 to 2.2</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.1/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.1/</guid>
+ <description>Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation.
+Gun 2.2 requires Erlang/OTP 24.0 or greater.
+Features added Gun will now do wildcard certificate matching by default, as required by the HTTP protocol, by setting the customize_hostname_check ssl option. User pings are now supported for HTTP/2. User pings are PING frames sent by the user, with the corresponding PING_ACK resulting in a gun_notify message being sent to the user process.</description>
+ </item>
+
+ <item>
<title>Constraints</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/constraints/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -1973,6 +2067,17 @@ Gun 2.0 adds many more features such as Websocket over HTTP/2, a built-in cookie
</item>
<item>
+ <title>Migrating from Gun 2.0 to 2.1</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.0/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.0/</guid>
+ <description>Gun 2.1 contains a small security improvement for the HTTP/2 protocol, as well as includes a small number of fixes and improvements.
+Gun 2.1 requires Erlang/OTP 22.0 or greater.
+Features added A new HTTP/2 option max_fragmented_header_block_size has been added to limit the size of header blocks that are sent over multiple HEADERS and CONTINUATION frames. Update Cowlib to 2.13.0. Bugs fixed Gun will no longer configure the NPN TLS extension, which has long been replaced by ALPN.</description>
+ </item>
+
+ <item>
<title>Migrating from Ranch 1.7 to Ranch 2.0</title>
<link>https://ninenines.eu/docs/en/ranch/2.0/guide/migrating_from_1.7/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2149,6 +2254,16 @@ Features added The protocols CONNECT destination option has been added as a repl
</item>
<item>
+ <title>Migrating from Gun 1.3 to 2.0</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.3/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.3/</guid>
+ <description>Gun 2.0 includes state of the art tunnel support. With Gun 2.0 it is possible to make requests or data go through any number of proxy endpoints using any combination of TCP or TLS transports and HTTP/1.1, HTTP/2 or SOCKS5 protocols. All combinations of the scenario Proxy1 -&amp;gt; Proxy2 -&amp;gt; Origin are tested and known to work.
+Gun 2.0 adds many more features such as Websocket over HTTP/2, a built-in cookie store, graceful shutdown, flow control for data messages, event handlers and more.</description>
+ </item>
+
+ <item>
<title>Static files</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/static_files/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2323,6 +2438,16 @@ 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/2.2/guide/migrating_from_1.2/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>The Req object</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/req/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2591,6 +2716,16 @@ 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/2.2/guide/migrating_from_1.1/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>Sending a response</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/resp/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -2820,6 +2955,16 @@ Cookies are a name/value store where the names and values are stored in plain te
</item>
<item>
+ <title>Migrating from Gun 1.0 to 1.1</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.0/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>Multipart requests</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/guide/multipart/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -4662,6 +4807,18 @@ HTTP IANA Registries HTTP Method Registry HTTP Status Code Registry Message He
</item>
<item>
+ <title>Gun 2.2</title>
+ <link>https://ninenines.eu/articles/gun-2.2.0/</link>
+ <pubDate>Fri, 11 Apr 2025 07:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/gun-2.2.0/</guid>
+ <description>Gun 2.2.0 has been released!
+Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation.
+Gun 2.2 is the first release that includes an experimental support for the HTTP/3 protocol. Note that unlike Cowboy, Gun 2.2 does not yet support Websocket over HTTP/3.
+Gun 2.2 now sets the appropriate ssl options to perform wildcard certificate matching, which is a requirement for HTTP and previously had to be configured by users.</description>
+ </item>
+
+ <item>
<title>Cowboy 2.13</title>
<link>https://ninenines.eu/articles/cowboy-2.13.0/</link>
<pubDate>Tue, 18 Feb 2025 07:00:00 +0100</pubDate>
@@ -5480,6 +5637,17 @@ Exports cow_cookie:parse_cookie(3) - Parse a cookie header cow_cookie:parse_set
<item>
<title>cow_cookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie/</guid>
+ <description>Name cow_cookie - Cookies
+Description The module cow_cookie provides functions for parsing and manipulating cookie headers.
+Exports cow_cookie:parse_cookie(3) - Parse a cookie header cow_cookie:parse_set_cookie(3) - Parse a set-cookie header cow_cookie:cookie(3) - Generate a cookie header cow_cookie:setcookie(3) - Generate a set-cookie header Types cookie_attrs() cookie_attrs() :: #{ expires =&amp;gt; calendar:datetime(), max_age =&amp;gt; calendar:datetime(), domain =&amp;gt; binary(), path =&amp;gt; binary(), secure =&amp;gt; true, http_only =&amp;gt; true, same_site =&amp;gt; default | none | strict | lax } Cookie attributes parsed from the set-cookie header.</description>
+ </item>
+
+ <item>
+ <title>cow_cookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -5567,6 +5735,19 @@ Changelog 2.9: Function introduced. Examples Generate a cookie header Cookie =
<item>
<title>cow_cookie:cookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.cookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.cookie/</guid>
+ <description>Name cow_cookie:cookie - Generate a cookie header
+Description cookie(Cookies) -&amp;gt; iolist() Cookies :: [{Name :: iodata(), Value :: iodata()}] Generate a cookie header.
+Arguments Cookies A list of pairs of cookie name and value.
+ Return value An iolist with the generated cookie header value.
+Changelog 2.9: Function introduced. Examples Generate a cookie header Cookie = cow_cookie:cookie([{&amp;lt;&amp;lt;&#34;sessionid&#34;&amp;gt;&amp;gt;, ID}]). See also cow_cookie(3), cow_cookie:parse_cookie(3), cow_cookie:parse_set_cookie(3), cow_cookie:setcookie(3)</description>
+ </item>
+
+ <item>
+ <title>cow_cookie:cookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.9/manual/cow_cookie.cookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -5650,6 +5831,20 @@ Changelog 2.9: Fixes to the parser may lead to potential incompatibilities. A co
<item>
<title>cow_cookie:parse_cookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_cookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_cookie/</guid>
+ <description>Name cow_cookie:parse_cookie - Parse a cookie header
+Description parse_cookie(Cookie :: binary()) -&amp;gt; [{binary(), binary()}] Parse a cookie header.
+Arguments Cookie The cookie header value.
+ Return value A list of cookie name/value pairs is returned on success.
+An exception is thrown in the event of a parse error.
+Changelog 2.9: Fixes to the parser may lead to potential incompatibilities. A cookie name starting with $ is no longer ignored.</description>
+ </item>
+
+ <item>
+ <title>cow_cookie:parse_cookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie.parse_cookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -5743,6 +5938,19 @@ An atom ignore is returned when the cookie has both an empty name and an empty v
<item>
<title>cow_cookie:parse_set_cookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_set_cookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_set_cookie/</guid>
+ <description>Name cow_cookie:parse_set_cookie - Parse a set-cookie header
+Description parse_set_cookie(SetCookie :: binary()) -&amp;gt; {ok, Name, Value, Attrs} | ignore Name :: binary() Value :: binary() Attrs :: cow_cookie:cookie_attrs() Parse a set-cookie header.
+Arguments SetCookie The set-cookie header value.
+ Return value An ok tuple with the cookie name, value and attributes is returned on success.
+An atom ignore is returned when the cookie has both an empty name and an empty value, and must be ignored.</description>
+ </item>
+
+ <item>
+ <title>cow_cookie:parse_set_cookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.9/manual/cow_cookie.parse_set_cookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -5831,6 +6039,21 @@ Changelog 2.12: The Version attribute is no longer generated. 1.0: Function int
<item>
<title>cow_cookie:setcookie(3)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.setcookie/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.setcookie/</guid>
+ <description>Name cow_cookie:setcookie - Generate a set-cookie header
+Description setcookie(Name :: iodata(), Value :: iodata(), Opts :: cow_cookie:cookie_opts()) -&amp;gt; iolist() Generate a set-cookie header.
+Arguments Name Cookie name.
+ Value Cookie value.
+ Opts Options added to the set-cookie header as attributes.
+ Return value An iolist with the generated set-cookie header value.
+Changelog 2.12: The Version attribute is no longer generated. 1.0: Function introduced. Examples Generate a set-cookie header SetCookie = cow_cookie:setcookie(&amp;lt;&amp;lt;&#34;</description>
+ </item>
+
+ <item>
+ <title>cow_cookie:setcookie(3)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie.setcookie/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -13656,6 +13879,18 @@ Modules cow_cookie(3) - Cookies Dependencies crypto - Crypto functions All t
<item>
<title>Cowlib Function Reference</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/</guid>
+ <description>Name cowlib - Support library for manipulating Web protocols
+Description Cowlib provides libraries for parsing and building messages for various Web protocols, including HTTP/1.1, HTTP/2 and Websocket.
+It is optimized for completeness rather than speed. No value is ignored, they are all returned.
+Modules cow_cookie(3) - Cookies Dependencies crypto - Crypto functions All these applications must be started before the cowlib application. To start Cowlib and all dependencies at once:</description>
+ </item>
+
+ <item>
+ <title>Cowlib Function Reference</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -13740,6 +13975,18 @@ Modules cow_cookie(3) - Cookies Dependencies crypto - Crypto functions All t
<item>
<title>cowlib(7)</title>
+ <link>https://ninenines.eu/docs/en/cowlib/2.15/manual/cowlib_app/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/cowlib/2.15/manual/cowlib_app/</guid>
+ <description>Name cowlib - Support library for manipulating Web protocols
+Description Cowlib provides libraries for parsing and building messages for various Web protocols, including HTTP/1.1, HTTP/2 and Websocket.
+It is optimized for completeness rather than speed. No value is ignored, they are all returned.
+Modules cow_cookie(3) - Cookies Dependencies crypto - Crypto functions All these applications must be started before the cowlib application. To start Cowlib and all dependencies at once:</description>
+ </item>
+
+ <item>
+ <title>cowlib(7)</title>
<link>https://ninenines.eu/docs/en/cowlib/2.8/manual/cowlib_app/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -13835,6 +14082,18 @@ Modules gun(3) - Asynchronous HTTP client gun_cookies(3) - Cookie store engine
</item>
<item>
+ <title>Gun Function Reference</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.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 gun_cookies(3) - Cookie store engine gun_cookies_list(3) - Cookie store backend: in-memory, per connection gun_event(3) - Events gun_ws_protocol(3) - Websocket subprotocols 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>
@@ -13889,6 +14148,15 @@ Modules gun(3) - Asynchronous HTTP client gun_cookies(3) - Cookie store engine
</item>
<item>
+ <title>Gun User Guide</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/guide/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/guide/</guid>
+ <description>Interface Introduction Starting and stopping Supported protocols Connection Using HTTP Using Websocket Advanced Internals: TLS over TLS Additional information Migrating from Gun 2.1 to 2.2 Migrating from Gun 2.0 to 2.1 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>
@@ -13961,6 +14229,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.2/manual/gun/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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:ping(3) - Check the health or RTT of 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>
@@ -14033,6 +14313,18 @@ Modules gun(3) - Asynchronous HTTP client gun_cookies(3) - Cookie store engine
</item>
<item>
+ <title>gun(7)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_app/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 gun_cookies(3) - Cookie store engine gun_cookies_list(3) - Cookie store backend: in-memory, per connection gun_event(3) - Events gun_ws_protocol(3) - Websocket subprotocols 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>
@@ -14099,6 +14391,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.2/manual/gun.await/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14159,6 +14462,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.2/manual/gun.await_body/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14225,6 +14538,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.2/manual/gun.await_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -14297,6 +14621,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.2/manual/gun.cancel/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun.cancel/</guid>
+ <description>Name gun:cancel - Cancel the given stream
+Description cancel(ConnPid, StreamRef) -&amp;gt; ok ConnPid :: pid() StreamRef :: gun:stream_ref() 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>
@@ -14375,6 +14711,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.2/manual/gun.close/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -14419,6 +14768,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.2/manual/gun.connect/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14491,6 +14851,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.2/manual/gun.data/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14575,6 +14947,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.2/manual/gun.delete/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14659,6 +15045,20 @@ ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:flush(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.flush/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14739,6 +15139,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.2/manual/gun.get/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14805,6 +15219,17 @@ 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.2/manual/gun.head/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14829,6 +15254,18 @@ The function headers/4,5 initiates a request but does not send the request body.
</item>
<item>
+ <title>gun:headers(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.headers/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -14898,6 +15335,16 @@ Description info(ConnPid) -&amp;gt; Info ConnPid :: pid() Info :: #{ owner =&amp
</item>
<item>
+ <title>gun:info(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.info/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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, state_name =&amp;gt; atom(), sock_ip =&amp;gt; inet:ip_address(), sock_port =&amp;gt; inet:port_number(), origin_scheme =&amp;gt; binary() | undefined, origin_host =&amp;gt; inet:hostname() | inet:ip_address(), origin_port =&amp;gt; inet:port_number(), intermediaries =&amp;gt; [Intermediary], cookie_store =&amp;gt; gun_cookies:cookie_store(), event_handler =&amp;gt; module(), event_handler_state =&amp;gt; any() } 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 | raw } 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>
@@ -14972,6 +15419,17 @@ Arguments Host Host or IP address to connect to.</description>
</item>
<item>
+ <title>gun:open(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.open/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -15048,6 +15506,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.2/manual/gun.open_unix/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -15114,6 +15584,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.2/manual/gun.options/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -15178,6 +15659,27 @@ Description patch(ConnPid, Path, Headers) -&amp;gt; patch(ConnPid, Path, Headers
</item>
<item>
+ <title>gun:patch(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.patch/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() Apply a set of changes to a resource.</description>
+ </item>
+
+ <item>
+ <title>gun:ping(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ping/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ping/</guid>
+ <description>Name gun:ping - Check the health or RTT of the connection
+Description ping(ConnPid) -&amp;gt; ping(ConnPid, #{}) ping(ConnPid, ReqOpts) -&amp;gt; PingRef ConnPid :: pid() ReqOpts :: gun:req_opts() PingRef :: reference() Check the health or round-trip time of the connection.
+On protocols that support it, Gun will send a PING frame and wait for its corresponding acknowledgement. When it receives that acknowledgement the user process gets notified via a gun_notify message.</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>
@@ -15242,6 +15744,16 @@ Description post(ConnPid, Path, Headers) -&amp;gt; post(ConnPid, Path, Headers,
</item>
<item>
+ <title>gun:post(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.post/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -15312,6 +15824,17 @@ The behavior of this function varies depending on whether a body is provided.</d
</item>
<item>
+ <title>gun:put(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.put/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -15378,6 +15901,17 @@ 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.2/manual/gun.request/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -15406,6 +15940,20 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:set_owner(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.set_owner/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -15430,6 +15978,18 @@ For HTTP/1.1 there is no such mechanism and Gun will close the connection once t
</item>
<item>
+ <title>gun:shutdown(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.shutdown/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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>
@@ -15450,6 +16010,16 @@ Description stream_info(ConnPid, StreamRef) -&amp;gt; {ok, undefined | Info} | {
</item>
<item>
+ <title>gun:stream_info(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.stream_info/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() Info :: #{ ref =&amp;gt; gun:stream_ref(), reply_to =&amp;gt; pid(), state =&amp;gt; running | stopping, intermediaries =&amp;gt; [Intermediary], tunnel =&amp;gt; Tunnel } 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 | raw } Tunnel :: #{ transport =&amp;gt; tcp | tls, protocol =&amp;gt; http | http2 | socks | raw, origin_scheme =&amp;gt; binary() | undefined, origin_host =&amp;gt; inet:hostname() | inet:ip_address(), origin_port =&amp;gt; inet:port_number() } Obtain information about a 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>
@@ -15478,6 +16048,20 @@ Arguments ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun:update_flow(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.update_flow/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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>
@@ -15554,6 +16138,18 @@ Arguments ConnPid The pid of the Gun connection process.</description>
</item>
<item>
+ <title>gun:ws_send(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ws_send/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ws_send/</guid>
+ <description>Name gun:ws_send - Send Websocket frames
+Description ws_send(ConnPid, StreamRef, Frames) -&amp;gt; ok ConnPid :: pid() StreamRef :: gun:stream_ref() 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.</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>
@@ -15626,6 +16222,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.2/manual/gun.ws_upgrade/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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_cookies(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -15650,6 +16258,18 @@ init init(Opts :: any()) -&amp;gt; gun_cookies:store() Initialize the cookie st
</item>
<item>
+ <title>gun_cookies(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies/</guid>
+ <description>Name gun_cookies - Cookie store engine
+Description The gun_cookies module implements a cookie store engine. It will be used by Gun when a cookie store is configured. It also defines the interface and provides functions used to implement cookie store backends.
+Callbacks Cookie store backends implement the following interface. Functions are organized by theme: initialization, querying, storing and garbage collecting:
+init init(Opts :: any()) -&amp;gt; gun_cookies:store() Initialize the cookie store.</description>
+ </item>
+
+ <item>
<title>gun_cookies:domain_match(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies.domain_match/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -15680,6 +16300,21 @@ Changelog 2.0: Function introduced. Examples Perform a domain match Match = gu
</item>
<item>
+ <title>gun_cookies:domain_match(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.domain_match/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.domain_match/</guid>
+ <description>Name gun_cookies:domain_match - Cookie domain match
+Description domain_match(String, DomainString) -&amp;gt; boolean() String :: binary() DomainString :: binary() Cookie domain match.
+This function can be used when implementing the set_cookie_secure_match callback of a cookie store.
+Arguments String The string to match.
+ DomainString The domain string that will be matched against.
+ Return value Returns true when String domain-matches DomainString, and false otherwise.
+Changelog 2.0: Function introduced. Examples Perform a domain match Match = gun_cookies:domain_match(Domain, CookieDomain).</description>
+ </item>
+
+ <item>
<title>gun_cookies:path_match(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies.path_match/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -15710,6 +16345,21 @@ Changelog 2.0: Function introduced. Examples Perform a path match Match = gun_
</item>
<item>
+ <title>gun_cookies:path_match(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.path_match/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.path_match/</guid>
+ <description>Name gun_cookies:path_match - Cookie path match
+Description path_match(ReqPath, CookiePath) -&amp;gt; boolean() ReqPath :: binary() CookiePath :: binary() Cookie path match.
+This function can be used when implementing the set_cookie_secure_match callback of a cookie store.
+Arguments ReqPath The request path to match.
+ CookiePath The cookie path that will be matched against.
+ Return value Returns true when ReqPath path-matches CookiePath, and false otherwise.
+Changelog 2.0: Function introduced. Examples Perform a path match Match = gun_cookies:path_match(ReqPath, CookiePath).</description>
+ </item>
+
+ <item>
<title>gun_cookies_list(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies_list/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -15736,6 +16386,19 @@ Types opts() opts() :: #{ } Cookie store backend options.</description>
</item>
<item>
+ <title>gun_cookies_list(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies_list/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies_list/</guid>
+ <description>Name gun_cookies_list - Cookie store backend: in-memory, per connection
+Description The gun_cookies_list module implements a cookie store backend that keeps all the cookie data in-memory and tied to a specific connection.
+It is possible to implement a custom backend on top of gun_cookies_list in order to add persistence or sharing properties.
+Exports This module implements the callbacks defined in gun_cookies(3).
+Types opts() opts() :: #{ } Cookie store backend options.</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>
@@ -15814,6 +16477,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.2/manual/gun_data/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_data/</guid>
+ <description>Name gun_data - Response body
+Description {gun_data, ConnPid, StreamRef, IsFin, Data} ConnPid :: pid() StreamRef :: gun:stream_ref() 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>
@@ -15886,6 +16562,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.2/manual/gun_down/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: [gun:stream_ref()] 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>
@@ -15952,6 +16640,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.2/manual/gun_error/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/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 :: gun:stream_ref() 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_event(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_event/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -15978,6 +16677,19 @@ init init_event() :: #{ owner := pid(), transport := tcp | tls, origin_scheme :=
</item>
<item>
+ <title>gun_event(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_event/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_event/</guid>
+ <description>Name gun_event - Events
+Description The gun_event module provides the callback interface and types for implementing event handlers.
+Callbacks Event handlers implement the following interface. Because types are tied to specific events, they are documented alongside them. All event types are exported and can be referred to as gun_event:Type().
+The events are ordered by the order they are likely to be triggered, with the most frequent events listed first.
+init init_event() :: #{ owner := pid(), transport := tcp | tls, origin_scheme := binary(), origin_host := inet:hostname() | inet:ip_address(), origin_port := inet:port_number(), opts := gun:opts() } init(init_event(), State) -&amp;gt; State Gun is initializing.</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>
@@ -16050,6 +16762,31 @@ 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.2/manual/gun_inform/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_inform/</guid>
+ <description>Name gun_inform - Informational response
+Description {gun_inform, ConnPid, StreamRef, Status, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() 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_notify(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_notify/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_notify/</guid>
+ <description>Name gun_notify - Optional event notification
+Description {gun_notify, ConnPid, settings_changed, Settings} ConnPid :: pid() Settings :: map() Optional event notification.
+Only two event notifications currently exist:
+settings_changed informs the user that the server has modified its connection settings. ping_ack informs the user that acknowledgement for a user ping was received. Elements ConnPid The pid of the Gun connection process.
+ Event Identifier for the event. Currently can only be settings_changed or ping_ack.</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>
@@ -16122,6 +16859,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.2/manual/gun_push/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_push/</guid>
+ <description>Name gun_push - Server-initiated push
+Description {gun_push, ConnPid, StreamRef, NewStreamRef, Method, URI, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() NewStreamRef :: gun:stream_ref() 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>
@@ -16206,6 +16955,20 @@ Elements ConnPid The pid of the Gun connection process.
</item>
<item>
+ <title>gun_response(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_response/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_response/</guid>
+ <description>Name gun_response - Response
+Description {gun_response, ConnPid, StreamRef, IsFin, Status, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() 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_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>
@@ -16296,6 +17059,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.2/manual/gun_trailers/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_trailers/</guid>
+ <description>Name gun_trailers - Response trailers
+Description {gun_trailers, ConnPid, StreamRef, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() 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_tunnel_up(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_tunnel_up/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -16320,6 +17098,18 @@ If Gun is configured to connect to another SOCKS server, then the connection is
</item>
<item>
+ <title>gun_tunnel_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_tunnel_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_tunnel_up/</guid>
+ <description>Name gun_tunnel_up - The tunnel is up
+Description {gun_tunnel_up, ConnPid, StreamRef, Protocol} ConnPid :: pid() StreamRef :: gun:stream_ref() | undefined Protocol :: http | http2 | socks The tunnel is up.
+This message informs the owner/calling process that the connection completed through the SOCKS or CONNECT proxy.
+If Gun is configured to connect to another SOCKS server, then the connection is not usable yet. One or more gun_tunnel_up(3) messages will follow.</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>
@@ -16394,6 +17184,19 @@ Otherwise, Gun will start processing the messages it received while waiting for
</item>
<item>
+ <title>gun_up(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_up/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_up/</guid>
+ <description>Name gun_up - The connection is up
+Description {gun_up, ConnPid, Protocol} ConnPid :: pid() Protocol :: http | http2 | raw | 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_tunnel_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>
@@ -16466,6 +17269,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.2/manual/gun_upgrade/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_upgrade/</guid>
+ <description>Name gun_upgrade - Successful protocol upgrade
+Description {gun_upgrade, ConnPid, StreamRef, Protocols, Headers} ConnPid :: pid() StreamRef :: gun:stream_ref() 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>
@@ -16542,6 +17357,18 @@ This message can only be sent on streams that were upgraded to the Websocket pro
</item>
<item>
+ <title>gun_ws(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws/</guid>
+ <description>Name gun_ws - Websocket frame
+Description {gun_ws, ConnPid, StreamRef, Frame} ConnPid :: pid() StreamRef :: gun:stream_ref() 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>gun_ws_protocol(3)</title>
<link>https://ninenines.eu/docs/en/gun/2.0/manual/gun_ws_protocol/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
@@ -16568,6 +17395,19 @@ ReplyTo The pid of the process that owns the stream and to which messages will b
</item>
<item>
+ <title>gun_ws_protocol(3)</title>
+ <link>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws_protocol/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws_protocol/</guid>
+ <description>Name gun_ws_protocol - Websocket subprotocols
+Description The gun_ws_protocol module provides the callback interface and types for implementing Websocket subprotocols.
+Callbacks Websocket subprotocols implement the following interface.
+init init(ReplyTo, StreamRef, Headers, Opts) -&amp;gt; {ok, State} ReplyTo :: pid() StreamRef :: reference() Headers :: cow_http:headers() Opts :: gun:ws_opts() State :: protocol_state() Initialize the Websocket protocol.
+ReplyTo The pid of the process that owns the stream and to which messages will be sent to.</description>
+ </item>
+
+ <item>
<title>HTTP status codes(7)</title>
<link>https://ninenines.eu/docs/en/cowboy/2.10/manual/http_status_codes/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
diff --git a/services/index.html b/services/index.html
index 643ca93d..297dae43 100644
--- a/services/index.html
+++ b/services/index.html
@@ -1063,6 +1063,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<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">
@@ -3322,6 +3350,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</div>
</div>
</div>
diff --git a/sitemap.xml b/sitemap.xml
index 3a6120d0..444006de 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -27,6 +27,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/introduction/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.6/guide/introduction/</loc>
</url>
@@ -163,6 +167,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/start/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/guide/protocols/</loc>
</url>
@@ -187,6 +195,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/protocols/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.10/guide/introduction/</loc>
</url>
@@ -267,6 +279,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/connect/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.6/guide/protocols/</loc>
</url>
@@ -347,6 +363,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/http/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.6/guide/embedded/</loc>
</url>
@@ -427,6 +447,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/websocket/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/1.6/guide/parsers/</loc>
</url>
@@ -463,6 +487,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/internals_tls_over_tls/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.1/guide/migrating_from_1.0/</loc>
</url>
@@ -599,6 +627,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.1/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.10/guide/constraints/</loc>
</url>
@@ -699,6 +731,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_2.0/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/ranch/2.0/guide/migrating_from_1.7/</loc>
</url>
@@ -767,6 +803,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.3/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.10/guide/static_files/</loc>
</url>
@@ -831,6 +871,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.2/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.10/guide/req/</loc>
</url>
@@ -927,6 +971,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.1/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.10/guide/resp/</loc>
</url>
@@ -1011,6 +1059,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/migrating_from_1.0/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.10/guide/multipart/</loc>
</url>
@@ -1712,7 +1764,12 @@
<url>
<loc>https://ninenines.eu/articles/</loc>
- <lastmod>2025-02-18T07:00:00+01:00</lastmod>
+ <lastmod>2025-04-11T07:00:00+01:00</lastmod>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/articles/gun-2.2.0/</loc>
+ <lastmod>2025-04-11T07:00:00+01:00</lastmod>
</url>
<url>
@@ -2085,6 +2142,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie/</loc>
</url>
@@ -2113,6 +2174,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.cookie/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowlib/2.9/manual/cow_cookie.cookie/</loc>
</url>
@@ -2137,6 +2202,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_cookie/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie.parse_cookie/</loc>
</url>
@@ -2165,6 +2234,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.parse_set_cookie/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowlib/2.9/manual/cow_cookie.parse_set_cookie/</loc>
</url>
@@ -2189,6 +2262,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/cowlib/2.15/manual/cow_cookie.setcookie/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowlib/2.8/manual/cow_cookie.setcookie/</loc>
</url>
@@ -4685,6 +4762,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/cowlib/2.15/manual/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowlib/2.8/manual/</loc>
</url>
@@ -4713,6 +4794,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/cowlib/2.15/manual/cowlib_app/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowlib/2.8/manual/cowlib_app/</loc>
</url>
@@ -4749,6 +4834,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/guide/</loc>
</url>
@@ -4773,6 +4862,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/guide/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun/</loc>
</url>
@@ -4797,6 +4890,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_app/</loc>
</url>
@@ -4821,6 +4918,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_app/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await/</loc>
</url>
@@ -4845,6 +4946,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.await/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await_body/</loc>
</url>
@@ -4869,6 +4974,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.await_body/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.await_up/</loc>
</url>
@@ -4893,6 +5002,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.await_up/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.cancel/</loc>
</url>
@@ -4917,6 +5030,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.cancel/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.close/</loc>
</url>
@@ -4941,6 +5058,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.close/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.2/manual/gun.connect/</loc>
</url>
@@ -4957,6 +5078,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.connect/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.data/</loc>
</url>
@@ -4981,6 +5106,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.data/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.delete/</loc>
</url>
@@ -5005,6 +5134,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.delete/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.flush/</loc>
</url>
@@ -5029,6 +5162,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.flush/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.get/</loc>
</url>
@@ -5053,6 +5190,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.get/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.head/</loc>
</url>
@@ -5077,6 +5218,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.head/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.headers/</loc>
</url>
@@ -5085,6 +5230,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.headers/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.info/</loc>
</url>
@@ -5109,6 +5258,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.info/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.open/</loc>
</url>
@@ -5133,6 +5286,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.open/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.open_unix/</loc>
</url>
@@ -5157,6 +5314,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.open_unix/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.options/</loc>
</url>
@@ -5181,6 +5342,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.options/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.patch/</loc>
</url>
@@ -5205,6 +5370,14 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.patch/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ping/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.post/</loc>
</url>
@@ -5229,6 +5402,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.post/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.put/</loc>
</url>
@@ -5253,6 +5430,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.put/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.request/</loc>
</url>
@@ -5277,6 +5458,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.request/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.set_owner/</loc>
</url>
@@ -5285,6 +5470,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.set_owner/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.shutdown/</loc>
</url>
@@ -5293,6 +5482,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.shutdown/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.stream_info/</loc>
</url>
@@ -5301,6 +5494,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.stream_info/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun.update_flow/</loc>
</url>
@@ -5309,6 +5506,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.update_flow/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.ws_send/</loc>
</url>
@@ -5333,6 +5534,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ws_send/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun.ws_upgrade/</loc>
</url>
@@ -5357,6 +5562,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun.ws_upgrade/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies/</loc>
</url>
@@ -5365,6 +5574,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies.domain_match/</loc>
</url>
@@ -5373,6 +5586,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.domain_match/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies.path_match/</loc>
</url>
@@ -5381,6 +5598,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies.path_match/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_cookies_list/</loc>
</url>
@@ -5389,6 +5610,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_cookies_list/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_data/</loc>
</url>
@@ -5413,6 +5638,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_data/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_down/</loc>
</url>
@@ -5437,6 +5666,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_down/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_error/</loc>
</url>
@@ -5461,6 +5694,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_error/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_event/</loc>
</url>
@@ -5469,6 +5706,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_event/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_inform/</loc>
</url>
@@ -5493,6 +5734,14 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_inform/</loc>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_notify/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_push/</loc>
</url>
@@ -5517,6 +5766,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_push/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_response/</loc>
</url>
@@ -5541,6 +5794,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_response/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_trailers/</loc>
</url>
@@ -5565,6 +5822,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_trailers/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_tunnel_up/</loc>
</url>
@@ -5573,6 +5834,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_tunnel_up/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_up/</loc>
</url>
@@ -5597,6 +5862,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_up/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_upgrade/</loc>
</url>
@@ -5621,6 +5890,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_upgrade/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/1.0/manual/gun_ws/</loc>
</url>
@@ -5645,6 +5918,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/gun/2.0/manual/gun_ws_protocol/</loc>
</url>
@@ -5653,6 +5930,10 @@
</url>
<url>
+ <loc>https://ninenines.eu/docs/en/gun/2.2/manual/gun_ws_protocol/</loc>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/docs/en/cowboy/2.10/manual/http_status_codes/</loc>
</url>