-commit cc05c5fe8cfc8287ddc4930fa9684af878d9e631 (HEAD, tag: v1.40.0, origin/master, origin/HEAD, master)
+commit 8f7b008b158e12de0e58247afd170f127dbb6456 (HEAD, tag: v1.41.0, origin/master, origin/HEAD, master)
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-11-15
+AuthorDate: 2020-06-02
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-11-15
+CommitDate: 2020-06-02
+
+ Update bash_completion
+
+commit 83086ba91a20a444a3b151bd5e0f55037795a31a
+Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
+AuthorDate: 2020-06-02
+Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
+CommitDate: 2020-06-02
Update manual pages
-commit 66d7b194d4e27c8a316cbc5e8dca1722394401a9
+commit c3b46625633cd9a4519f6fbcd9048127b84a5514
+Merge: 3eecc2ca f8da73bd
+Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
+AuthorDate: 2020-06-02
+Commit: GitHub <noreply@github.com>
+CommitDate: 2020-06-02
+
+ Merge pull request from GHSA-q5wr-xfw9-q7xr
+
+ Implement max settings option
+
+commit 3eecc2ca45530024abb687bf808ec768eaa5e98a
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-11-15
+AuthorDate: 2020-06-02
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-11-15
+CommitDate: 2020-06-02
- Update AUTHORS
+ Bump version number to v1.41.0, LT revision to 34:0:20
-commit 41060943bdeff0ed575e3f0c011a0df17b9d8027
+commit 881c060d8c92c5246d9a6b5829e63838869bbaa9
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-11-15
+AuthorDate: 2020-06-02
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-11-15
+CommitDate: 2020-06-02
+
+ Update AUTHORS
+
+commit f8da73bd042f810f34d19f9eae02b46d870af394
+Author: James M Snell <jasnell@gmail.com>
+AuthorDate: 2020-04-19
+Commit: James M Snell <jasnell@gmail.com>
+CommitDate: 2020-05-05
- Bump up version number to 1.40.0, LT revision to 33:0:19
+ Earlier check for settings flood
-commit 5ae9bb8925c1cb1e945b41d140367f27b3dd5c98
+commit 336a98feb0d56b9ac54e12736b18785c27f75090
+Author: James M Snell <jasnell@gmail.com>
+AuthorDate: 2020-04-17
+Commit: James M Snell <jasnell@gmail.com>
+CommitDate: 2020-05-05
+
+ Implement max settings option
+
+commit ef41583614e95efd12b6cce821e34837c1b28ed0
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-11-09
+AuthorDate: 2020-04-22
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-11-09
+CommitDate: 2020-04-22
- Fail fast if huffman decoding context is in failure state
+ Revert "Add missing connection error handling"
+
+ This reverts commit b7d16101413276884d7f51c64f989f5f61abecb8.
-commit bb519154fe62f7ff7e5eb7269e05043dec6d3682
-Merge: db9a8f6e 77f5487a
+commit 979e6c5325826d06922f25047ffafb7ed92fa749
+Merge: b7d16101 c663349f
Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
-AuthorDate: 2019-11-02
+AuthorDate: 2020-04-21
Commit: GitHub <noreply@github.com>
-CommitDate: 2019-11-02
+CommitDate: 2020-04-21
- Merge pull request #1413 from nghttp2/check-authority
+ Merge pull request #1459 from nghttp2/proxyprotov2
- Add nghttp2_check_authority as public API
+ nghttpx: Add PROXY protocol version 2
-commit 77f5487a588f3c02a9671b7dd684186a5c34c1ea
+commit b7d16101413276884d7f51c64f989f5f61abecb8
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-11-02
+AuthorDate: 2020-04-21
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-11-02
+CommitDate: 2020-04-21
- Add nghttp2_check_authority as public API
+ Add missing connection error handling
-commit db9a8f6efe6cc692e09c81fed200d159071566d1
-Merge: 6f28a69b 6ce4835e
+commit cd53bd81bfbf571a0f7836b5979e19702a76890f
+Merge: 3b17a659 e5625b8c
Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
-AuthorDate: 2019-10-29
+AuthorDate: 2020-04-18
Commit: GitHub <noreply@github.com>
-CommitDate: 2019-10-29
+CommitDate: 2020-04-18
- Merge pull request #1409 from nghttp2/fix-wrong-stream-close-error-code
+ Merge pull request #1460 from gportay/patch-1
- Fix the bug that stream is closed with wrong error code
+ Fix doc
-commit 6f28a69b7d5bd93b67e2ca7af04bf9fa0b3c5c89
-Merge: d08c4395 29042f1c
-Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
-AuthorDate: 2019-10-29
+commit e5625b8cf083b076c0fcb9d4b80749f30c75b4f7
+Author: Gaël PORTAY <gael.portay@gmail.com>
+AuthorDate: 2020-04-18
Commit: GitHub <noreply@github.com>
-CommitDate: 2019-10-29
+CommitDate: 2020-04-18
- Merge pull request #1411 from richard78917/fix_warning
-
- priority_spec::valid(): remove const qualifier from return value
+ Fix doc
-commit 6ce4835eeafe5bcea91c9672fcd3f9ef68ebd472
+commit c663349f24b851865f4f1f5ca21de542a2e5c07f
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-10-29
+AuthorDate: 2020-04-18
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-10-29
+CommitDate: 2020-04-18
- Fix the bug that stream is closed with wrong error code
-
- This commit fixes the bug that stream is closed with wrong error code
- (0). This happens when STREAM or DATA frame with END_STREAM flag set
- is received and it violates HTTP messaging rule (i.e., content-length
- does not match) and the other side of stream has been closed. In this
- case, nghttp2_on_stream_close_callback should be called with nonzero
- error code, but previously it is called with 0 (NO_ERROR).
-
-commit 29042f1c95ef5d17fde7e8d972d2af24e47adf1b
-Author: Richard Wolfert <richard.wolfert@mavenir.com>
-AuthorDate: 2019-10-29
-Commit: Richard Wolfert <richard.wolfert@mavenir.com>
-CommitDate: 2019-10-29
-
- priority_spec::valid(): remove const qualifier from return value
-
- gcc generates warning:
- * type qualifiers ignored on function return type [-Wignored-qualifiers]
-
-commit d08c43951f5bf599dace882ed0e67ded2ff8519e
-Merge: 6f967c6e 5d6964cf
-Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
-AuthorDate: 2019-10-12
-Commit: GitHub <noreply@github.com>
-CommitDate: 2019-10-12
-
- Merge pull request #1405 from nghttp2/huffman
-
- Faster Huffman encoding/decoding
+ integration: Add PROXY protocol v2 tests
-commit 5d6964cf81aaf41b4af5fdfbf4b06737bcb8f9a0
+commit 854e9fe395e928d31650a0f398897cc209064c90
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-10-08
+AuthorDate: 2020-04-18
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-10-12
+CommitDate: 2020-04-18
- Faster huffman decoding
+ nghttpx: Always call init_forwarded_for
+
+ Always call init_forwarded_for to get the default when source address
+ in PROXY protocol is ignored. This ensures that forwarded header
+ field has the same value as x-forwarded-for.
-commit 0d855bfc1ba6e4201e21d7d130dbaad0907c8a3e
+commit c60ea227cc61294da0ea0355108c2f90d77f974a
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-10-08
+AuthorDate: 2020-04-18
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-10-12
+CommitDate: 2020-04-18
- Faster huffman encoding
+ Update doc
-commit 6f967c6ef3ea5799b59a5cea6b6f4bec10d25b04
+commit 49cd8e6e733a74d52d442a3d2667fd130d6437c8
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-21
+AuthorDate: 2020-04-17
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-21
+CommitDate: 2020-04-18
- Fix errors reported by coverity scan
+ nghttpx: Add PROXY-protocol v2 support
-commit b8a43db84c5ce9a91cede2f4faf4706c1b3f4010
-Merge: 70b62c1a 28b1f0b9
+commit 3b17a659f69fb2ef5d2239142437da2902e61911
+Merge: 600fcdf5 dc7a7df6
Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
-AuthorDate: 2019-09-21
+AuthorDate: 2020-03-31
Commit: GitHub <noreply@github.com>
-CommitDate: 2019-09-21
+CommitDate: 2020-03-31
- Merge pull request #1394 from wrowe/fix-static-libname
+ Merge pull request #1453 from Leo-Neat/master
- Avoid filename collision of static and dynamic lib
+ Add CIFuzz
-commit 70b62c1a32eb56edc67eae0609949e0830ec14ad
-Merge: 1dd966f1 72b71a6b
+commit 600fcdf52d60f67ecd936d61eaf0c7ecb8624075
+Merge: b3f85e2d 4922bb41
Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
-AuthorDate: 2019-09-21
+AuthorDate: 2020-03-31
Commit: GitHub <noreply@github.com>
-CommitDate: 2019-09-21
+CommitDate: 2020-03-31
- Merge pull request #1393 from wrowe/fix-static-msvcrt
+ Merge pull request #1455 from xjtian/long_serials
- Add new flag ENABLE_STATIC_CRT for Windows
+ Fix get_x509_serial for long serial numbers
-commit 28b1f0b90f82cccb3f1977ed3b580d2c98421f94
-Author: William A Rowe Jr <wrowe@pivotal.io>
-AuthorDate: 2019-09-16
-Commit: William A Rowe Jr <wrowe@pivotal.io>
-CommitDate: 2019-09-16
+commit 4922bb41d604a15483e12f1b33bac2bf6628d866
+Author: Jacky Tian <xjtian@fb.com>
+AuthorDate: 2020-03-31
+Commit: Jacky Tian <xjtian@fb.com>
+CommitDate: 2020-03-31
- Avoid filename collision of static and dynamic lib
-
- Renames the output of the ENABLE_STATIC_LIB library/archive output
- to nghttp2_static.lib/.a to avoid filenames colliding with the output
- name for ENABLE_SHARED_LIB library/archive, when both are enabled.
-
- Signed-off-by: William A Rowe Jr <wrowe@pivotal.io>
- Signed-off-by: Yechiel Kalmenson <ykalmenson@pivotal.io>
+ static_cast size parameter in StringRef constructor to size_t
-commit 1dd966f1897421fe10d1ad91cfe466526636fcad
-Merge: f8933fe5 fe8946dd
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-17
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-17
+commit aad8697575d90b1763c31ad06986be0550917aac
+Author: Jacky Tian <xjtian@fb.com>
+AuthorDate: 2020-03-30
+Commit: Jacky Tian <xjtian@fb.com>
+CommitDate: 2020-03-31
- Merge branch 'fix-nghttpx-mruby'
+ Fix get_x509_serial for long serial numbers
-commit fe8946ddc7c081eb0b2f376fc99279121a3f2a8b
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-16
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-16
+commit dc7a7df61c7cd1cc05c9c09f827e564495c2bebe
+Author: Leo Neat <lneat@google.com>
+AuthorDate: 2020-03-18
+Commit: Leo Neat <lneat@google.com>
+CommitDate: 2020-03-18
- nghttpx: Fix bug that mruby is incorrectly shared between backends
-
- Previously, mruby context is wrongly shared by multiple patterns if
- the underlying SharedDownstreamAddr is shared by multiple
- DownstreamAddrGroups. This commit fixes it.
+ Adding CIFuzz
-commit 72b71a6ba3f843bdea27f5c1cf926a5e1b152e48
-Author: William A Rowe Jr <wrowe@pivotal.io>
-AuthorDate: 2019-09-14
-Commit: William A Rowe Jr <wrowe@pivotal.io>
-CommitDate: 2019-09-14
+commit b3f85e2daa629732ac3ebb092cd5543c26045e03
+Merge: ffb49c6c 2ec58551
+Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
+AuthorDate: 2020-02-20
+Commit: GitHub <noreply@github.com>
+CommitDate: 2020-02-20
- Add new flag ENABLE_STATIC_CRT for Windows
-
- This change adds the CMake option;
-
- ENABLE_STATIC_CRT Build libnghttp2 against the MS LIBCMT[d]
+ Merge pull request #1444 from nghttp2/fix-recv-window-flow-control-issue
- This avoids linking to msvcrt.lib for binaries to compile (/MT[d])
- and link against the static C Runtime libcrt.lib, and
- avoiding the msvcrt[d].dll dependency.
-
- Signed-off-by: William A Rowe Jr <wrowe@pivotal.io>
- Signed-off-by: Yechiel Kalmenson <ykalmenson@pivotal.io>
+ Fix receiving stream data stall
-commit f8933fe50468413eb149df7e331e7335400f1649
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-07
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-07
+commit ffb49c6c589617d6c9a4172464b9100b377e56f9
+Merge: 459df42b 866eadb5
+Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
+AuthorDate: 2020-02-20
+Commit: GitHub <noreply@github.com>
+CommitDate: 2020-02-20
- nghttpx: Reconnect h1 backend if it lost connection before sending headers
+ Merge pull request #1435 from geoffhill/master
- This is the second attempt. The first attempt was
- 8a59ce6d37471ec7a437d4700cabd98c55115b1e and it failed.
+ Enable session_create_idle_stream test, fix errors
-commit 89c33d690fd4667dd07c5791638eb6a4653a7f73
+commit 2ec585518e83bec7de8deb0d429cd744d99fc72b
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-07
+AuthorDate: 2020-02-19
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-07
-
- Update neverbleed
+CommitDate: 2020-02-20
-commit 7079dc5e753c1881aa6f162bbb4a9bb6d44e79ed
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-06
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-06
-
- Update neverbleed to fix memory leak
-
-commit 5080db84e267d9b036c08ac7b2de8b7696c4d6b2
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-06
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-06
-
- Revert "nghttpx: Reconnect h1 backend if it lost connection before sending headers"
+ Fix receiving stream data stall
- This reverts commit 8a59ce6d37471ec7a437d4700cabd98c55115b1e.
-
-commit 053c7ac5889c280e1108b2bdd40c48d40920172a
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-03
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-03
-
- nghttpx: Returns 408 if backend timed out before sending headers
-
-commit 8a59ce6d37471ec7a437d4700cabd98c55115b1e
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-09-03
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-09-03
-
- nghttpx: Reconnect h1 backend if it lost connection before sending headers
+ Previously, if automatic window update is enabled (which is default),
+ after window size is set to 0 by
+ nghttp2_session_set_local_window_size, once the receiving window is
+ exhausted, even after window size is increased by
+ nghttp2_session_set_local_window_size, no more data cannot be
+ received. This is because nghttp2_session_set_local_window_size does
+ not submit WINDOW_UPDATE. It is only triggered when new data arrives
+ but since window is filled up, no more data cannot be received, thus
+ dead lock happens.
+
+ This commit fixes this issue. nghttp2_session_set_local_window_size
+ submits WINDOW_UPDATE if necessary.
+
+ https://github.com/curl/curl/issues/4939
-commit f2fde180cdcca1f0a1c12d097c92510a887f6500
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-08-19
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-08-19
+commit 459df42b8b074dffd40ac1f95fc65ad099050a7a
+Merge: 5e13274b a4c1fed5
+Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
+AuthorDate: 2020-02-11
+Commit: GitHub <noreply@github.com>
+CommitDate: 2020-02-11
- Remove redundant null check before delete
+ Merge pull request #1442 from nghttp2/upgrade-llhttp
- Reported in https://github.com/nghttp2/nghttp2/issues/1384
+ Bump llhttp to 2.0.4
-commit 95efb3e19d174354ca50c65d5d7227d92bcd60e1
+commit a4c1fed5139b2df7ce611a519a7b1d69aee3bae0
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-06-25
+AuthorDate: 2020-02-11
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-08-14
+CommitDate: 2020-02-11
- Don't read too greedily
+ Bump llhttp to 2.0.4
-commit 0a6ce87c22c69438ecbffe52a2859c3a32f1620f
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-06-25
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-08-14
+commit 866eadb5de0f859d30272f5359a79c195271cd6c
+Author: Geoff Hill <geoffhill@fb.com>
+AuthorDate: 2020-01-23
+Commit: Geoff Hill <geoffhill@fb.com>
+CommitDate: 2020-01-23
- Add nghttp2_option_set_max_outbound_ack
+ Enable session_create_idle_stream test, fix errors
+
+ Add the currently-unused `test_nghttp2_session_create_idle_stream()`
+ function to the test suite definition.
+
+ Modify the test in two places to make it pass:
+
+ * Use stream ID=10 as the priority stream ID to test automatic creation
+ of streams for priority specs. The code below checks against stream
+ ID=10 so I assume this was a typo in the test.
+
+ * Set the `last_sent_stream_id` instead of the `next_stream_id` to test
+ that idle streams cannot be created with smaller numbers than the
+ most-recently-seen stream ID. Looking at the validation path in
+ `session_detect_idle_stream()`, I think this was another test typo.
-commit 2aa79fa91d2714ad704277c1c027c7f18cdd94f0
+commit 5e13274b7c533b00f2a14582de5f6b34c08b0018
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-08-14
+AuthorDate: 2019-12-21
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-08-14
+CommitDate: 2019-12-21
- Bump up LT revision to 32:0:18
+ Fix typo
-commit 3980678d24ff1bd84b95ec88d1acc07326af3e62
-Merge: 448bbbc3 319d5ab1
+commit e0d7f7de5e58b2e9abd92ee3384f78e91d018503
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-08-06
+AuthorDate: 2019-12-21
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-08-06
+CommitDate: 2019-12-21
- Merge branch 'nghttpx-fix-request-stall'
+ h2load: Allow port in --connect-to
-commit 319d5ab1c6d916b6b8a0d85b2ae3f01b3ad04f2c
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-08-06
+commit df575f968fa3d82fb40c2637e7d3e245def43766
+Author: lucas <lucas@cloudflare.com>
+AuthorDate: 2019-12-12
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-08-06
+CommitDate: 2019-12-21
- nghttpx: Fix request stall
-
- Fix request stall if backend connection is reused and buffer is full.
+ h2load: add --connect-to option
-commit 448bbbc38c0f260447d0aae579d678885aa0f16c
+commit 1fff737955d3e080d4e4be9ecb615c83fd3fd767
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-08-06
+AuthorDate: 2019-12-18
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-08-06
+CommitDate: 2019-12-18
- integration-tests: gofmt
+ clang-format-9
-commit e575a2aad99fe57126ad817c57356ea0ce51d213
-Merge: 7a590893 4f7aedc9
+commit b40c6c862fafe87fa32b28bf040456b064482893
+Merge: 2d5f7659 9bc2c75e
Author: Tatsuhiro Tsujikawa <404610+tatsuhiro-t@users.noreply.github.com>
-AuthorDate: 2019-08-01
+AuthorDate: 2019-12-08
Commit: GitHub <noreply@github.com>
-CommitDate: 2019-08-01
+CommitDate: 2019-12-08
- Merge pull request #1377 from Aldrog/cmake_systemd
+ Merge pull request #1418 from vszakats/patch-1
- Support building nghttpx with systemd using cmake
-
-commit 4f7aedc9d274183f4db17634d320a6d60ef2edb5
-Author: Andrew Penkrat <Andrey.Penkrat@lanit-tercom.com>
-AuthorDate: 2019-07-29
-Commit: Andrew Penkrat <Andrey.Penkrat@lanit-tercom.com>
-CommitDate: 2019-07-29
-
- cmake: Support building nghttpx with systemd
-
-commit 7a5908933e55297ce2d8a0217391663ddf0c3f31
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-06-22
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-06-22
-
- Fix clang-8 warning
-
-commit ee4431344511886efc66395a38b9bf5dddd7151b
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-06-11
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-06-11
-
- Fix FPE with default backend
+ lib/CMakeLists.txt: Make hard-coded static lib suffix optional
-commit abef9b90ef2ba35ec25adbca7cb8d0b9a6c2d044
-Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-06-11
-Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-06-11
+commit 9bc2c75e388fbb5e6e694ef4471bd63521c966ae
+Author: Viktor Szakats <vszakats@users.noreply.github.com>
+AuthorDate: 2019-11-15
+Commit: Viktor Szakats <commit@vsz.me>
+CommitDate: 2019-11-15
- Fix log-level is not set with cmd-line or configuration file
+ lib/CMakeLists.txt: Make hard-coded static lib suffix optional
+
+ It can be set via the `STATIC_LIB_SUFFIX` variable.
+
+ This fixes every existing dependent project that relied on the name
+ having no suffix and thus capable of using either a static or shared
+ flavour depending on which one is present on this or how the linker
+ is configured.
+
+ Ref: https://github.com/nghttp2/nghttp2/pull/1394
-commit 12a999f0b8bc67706fdd5ff9b134ab67d495c76a
+commit 2d5f76594a8c4e11d6e2a70588c01433f214150b
Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-AuthorDate: 2019-06-11
+AuthorDate: 2019-11-15
Commit: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
-CommitDate: 2019-06-11
+CommitDate: 2019-11-15
- Bump up version number to 1.40.0-DEV
+ Bump up version number to 1.41.0-DEV
#include <stdint.h>
#include <string.h>
+#ifdef __SSE4_2__
+ #ifdef _MSC_VER
+ #include <nmmintrin.h>
+ #else /* !_MSC_VER */
+ #include <x86intrin.h>
+ #endif /* _MSC_VER */
+#endif /* __SSE4_2__ */
+
+#ifdef _MSC_VER
+ #define ALIGN(n) _declspec(align(n))
+#else /* !_MSC_VER */
+ #define ALIGN(n) __attribute__((aligned(n)))
+#endif /* _MSC_VER */
+
#include "llhttp.h"
typedef int (*llhttp__internal__span_cb)(
static const unsigned char llparse_blob0[] = {
'C', 'L'
};
-static const unsigned char llparse_blob1[] = {
- 'o', 'n'
+#ifdef __SSE4_2__
+static const unsigned char ALIGN(16) llparse_blob1[] = {
+ 0x9, 0x9, 0xc, 0xc, '!', '"', '$', '>', '@', '~', 0x80,
+ 0xff, 0x0, 0x0, 0x0, 0x0
};
+#endif /* __SSE4_2__ */
static const unsigned char llparse_blob2[] = {
- 'e', 'c', 't', 'i', 'o', 'n'
+ 'o', 'n'
};
static const unsigned char llparse_blob3[] = {
- 'l', 'o', 's', 'e'
+ 'e', 'c', 't', 'i', 'o', 'n'
};
static const unsigned char llparse_blob4[] = {
- 'e', 'e', 'p', '-', 'a', 'l', 'i', 'v', 'e'
+ 'l', 'o', 's', 'e'
};
static const unsigned char llparse_blob5[] = {
- 'p', 'g', 'r', 'a', 'd', 'e'
+ 'e', 'e', 'p', '-', 'a', 'l', 'i', 'v', 'e'
};
static const unsigned char llparse_blob6[] = {
- 'h', 'u', 'n', 'k', 'e', 'd'
+ 'p', 'g', 'r', 'a', 'd', 'e'
};
-static const unsigned char llparse_blob7[] = {
- 'e', 'n', 't', '-', 'l', 'e', 'n', 'g', 't', 'h'
+#ifdef __SSE4_2__
+static const unsigned char ALIGN(16) llparse_blob7[] = {
+ 0x9, 0x9, ' ', '~', 0x80, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0
};
+#endif /* __SSE4_2__ */
static const unsigned char llparse_blob8[] = {
+ 'c', 'h', 'u', 'n', 'k', 'e', 'd'
+};
+#ifdef __SSE4_2__
+static const unsigned char ALIGN(16) llparse_blob9[] = {
+ ' ', '!', '#', '\'', '*', '+', '-', '.', '0', '9', 'A',
+ 'Z', '^', 'z', '|', '|'
+};
+#endif /* __SSE4_2__ */
+#ifdef __SSE4_2__
+static const unsigned char ALIGN(16) llparse_blob10[] = {
+ '~', '~', 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0
+};
+#endif /* __SSE4_2__ */
+static const unsigned char llparse_blob11[] = {
+ 'e', 'n', 't', '-', 'l', 'e', 'n', 'g', 't', 'h'
+};
+static const unsigned char llparse_blob12[] = {
'r', 'o', 'x', 'y', '-', 'c', 'o', 'n', 'n', 'e', 'c',
't', 'i', 'o', 'n'
};
-static const unsigned char llparse_blob9[] = {
+static const unsigned char llparse_blob13[] = {
'r', 'a', 'n', 's', 'f', 'e', 'r', '-', 'e', 'n', 'c',
'o', 'd', 'i', 'n', 'g'
};
-static const unsigned char llparse_blob10[] = {
+static const unsigned char llparse_blob14[] = {
'p', 'g', 'r', 'a', 'd', 'e'
};
-static const unsigned char llparse_blob11[] = {
+static const unsigned char llparse_blob15[] = {
0xd, 0xa
};
-static const unsigned char llparse_blob12[] = {
+static const unsigned char llparse_blob16[] = {
'T', 'T', 'P', '/'
};
-static const unsigned char llparse_blob13[] = {
+static const unsigned char llparse_blob17[] = {
'C', 'E', '/'
};
-static const unsigned char llparse_blob14[] = {
+static const unsigned char llparse_blob18[] = {
'I', 'N', 'D'
};
-static const unsigned char llparse_blob15[] = {
+static const unsigned char llparse_blob19[] = {
'E', 'C', 'K', 'O', 'U', 'T'
};
-static const unsigned char llparse_blob16[] = {
+static const unsigned char llparse_blob20[] = {
'N', 'E', 'C', 'T'
};
-static const unsigned char llparse_blob17[] = {
+static const unsigned char llparse_blob21[] = {
'E', 'L', 'E', 'T', 'E'
};
-static const unsigned char llparse_blob18[] = {
+static const unsigned char llparse_blob22[] = {
'E', 'T'
};
-static const unsigned char llparse_blob19[] = {
+static const unsigned char llparse_blob23[] = {
'E', 'A', 'D'
};
-static const unsigned char llparse_blob20[] = {
+static const unsigned char llparse_blob24[] = {
'N', 'K'
};
-static const unsigned char llparse_blob21[] = {
+static const unsigned char llparse_blob25[] = {
'C', 'K'
};
-static const unsigned char llparse_blob22[] = {
+static const unsigned char llparse_blob26[] = {
'S', 'E', 'A', 'R', 'C', 'H'
};
-static const unsigned char llparse_blob23[] = {
+static const unsigned char llparse_blob27[] = {
'R', 'G', 'E'
};
-static const unsigned char llparse_blob24[] = {
+static const unsigned char llparse_blob28[] = {
'C', 'T', 'I', 'V', 'I', 'T', 'Y'
};
-static const unsigned char llparse_blob25[] = {
+static const unsigned char llparse_blob29[] = {
'L', 'E', 'N', 'D', 'A', 'R'
};
-static const unsigned char llparse_blob26[] = {
+static const unsigned char llparse_blob30[] = {
'V', 'E'
};
-static const unsigned char llparse_blob27[] = {
+static const unsigned char llparse_blob31[] = {
'O', 'T', 'I', 'F', 'Y'
};
-static const unsigned char llparse_blob28[] = {
+static const unsigned char llparse_blob32[] = {
'P', 'T', 'I', 'O', 'N', 'S'
};
-static const unsigned char llparse_blob29[] = {
+static const unsigned char llparse_blob33[] = {
'T', 'C', 'H'
};
-static const unsigned char llparse_blob30[] = {
+static const unsigned char llparse_blob34[] = {
'S', 'T'
};
-static const unsigned char llparse_blob31[] = {
+static const unsigned char llparse_blob35[] = {
'O', 'P'
};
-static const unsigned char llparse_blob32[] = {
+static const unsigned char llparse_blob36[] = {
'I', 'N', 'D'
};
-static const unsigned char llparse_blob33[] = {
+static const unsigned char llparse_blob37[] = {
'A', 'T', 'C', 'H'
};
-static const unsigned char llparse_blob34[] = {
+static const unsigned char llparse_blob38[] = {
'G', 'E'
};
-static const unsigned char llparse_blob35[] = {
+static const unsigned char llparse_blob39[] = {
'I', 'N', 'D'
};
-static const unsigned char llparse_blob36[] = {
+static const unsigned char llparse_blob40[] = {
'O', 'R', 'T'
};
-static const unsigned char llparse_blob37[] = {
+static const unsigned char llparse_blob41[] = {
'A', 'R', 'C', 'H'
};
-static const unsigned char llparse_blob38[] = {
+static const unsigned char llparse_blob42[] = {
'U', 'R', 'C', 'E'
};
-static const unsigned char llparse_blob39[] = {
+static const unsigned char llparse_blob43[] = {
'B', 'S', 'C', 'R', 'I', 'B', 'E'
};
-static const unsigned char llparse_blob40[] = {
+static const unsigned char llparse_blob44[] = {
'R', 'A', 'C', 'E'
};
-static const unsigned char llparse_blob41[] = {
+static const unsigned char llparse_blob45[] = {
'I', 'N', 'D'
};
-static const unsigned char llparse_blob42[] = {
+static const unsigned char llparse_blob46[] = {
'N', 'K'
};
-static const unsigned char llparse_blob43[] = {
+static const unsigned char llparse_blob47[] = {
'C', 'K'
};
-static const unsigned char llparse_blob44[] = {
+static const unsigned char llparse_blob48[] = {
'U', 'B', 'S', 'C', 'R', 'I', 'B', 'E'
};
-static const unsigned char llparse_blob45[] = {
+static const unsigned char llparse_blob49[] = {
'H', 'T', 'T', 'P', '/'
};
-static const unsigned char llparse_blob46[] = {
+static const unsigned char llparse_blob50[] = {
'A', 'D'
};
-static const unsigned char llparse_blob47[] = {
+static const unsigned char llparse_blob51[] = {
'T', 'P', '/'
};
s_n_llhttp__internal__n_header_value_discard_ws_almost_done,
s_n_llhttp__internal__n_header_value_lws,
s_n_llhttp__internal__n_header_value_almost_done,
+ s_n_llhttp__internal__n_header_value_lenient,
s_n_llhttp__internal__n_header_value_otherwise,
s_n_llhttp__internal__n_header_value_connection_token,
s_n_llhttp__internal__n_header_value_connection_ws,
s_n_llhttp__internal__n_header_value_connection_2,
s_n_llhttp__internal__n_header_value_connection_3,
s_n_llhttp__internal__n_header_value_connection,
- s_n_llhttp__internal__n_error_15,
+ s_n_llhttp__internal__n_error_18,
s_n_llhttp__internal__n_header_value,
s_n_llhttp__internal__n_header_value_discard_rws,
- s_n_llhttp__internal__n_error_16,
+ s_n_llhttp__internal__n_error_19,
s_n_llhttp__internal__n_header_value_content_length_ws,
s_n_llhttp__internal__n_header_value_content_length,
- s_n_llhttp__internal__n_header_value_te_chunked_1,
+ s_n_llhttp__internal__n_header_value_te_chunked_last,
+ s_n_llhttp__internal__n_header_value_te_token_ows,
+ s_n_llhttp__internal__n_header_value_te_token,
s_n_llhttp__internal__n_header_value_te_chunked,
s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1,
s_n_llhttp__internal__n_header_value_discard_ws,
llhttp__internal_t* s, const unsigned char* p,
const unsigned char* endp);
+int llhttp__internal__c_update_finish_1(
+ llhttp__internal_t* state,
+ const unsigned char* p,
+ const unsigned char* endp) {
+ state->finish = 0;
+ return 0;
+}
+
int llhttp__internal__c_test_flags_1(
llhttp__internal_t* state,
const unsigned char* p,
const unsigned char* endp) {
+ return (state->flags & 544) == 544;
+}
+
+int llhttp__internal__c_test_flags_2(
+ llhttp__internal_t* state,
+ const unsigned char* p,
+ const unsigned char* endp) {
+ return (state->flags & 256) == 256;
+}
+
+int llhttp__internal__c_test_flags_3(
+ llhttp__internal_t* state,
+ const unsigned char* p,
+ const unsigned char* endp) {
return (state->flags & 40) == 40;
}
return 0;
}
-int llhttp__internal__c_update_finish_1(
+int llhttp__internal__c_update_finish_2(
llhttp__internal_t* state,
const unsigned char* p,
const unsigned char* endp) {
return 0;
}
-int llhttp__internal__c_test_flags_2(
+int llhttp__internal__c_test_flags_5(
llhttp__internal_t* state,
const unsigned char* p,
const unsigned char* endp) {
return 0;
}
+int llhttp__internal__c_or_flags_16(
+ llhttp__internal_t* state,
+ const unsigned char* p,
+ const unsigned char* endp) {
+ state->flags |= 512;
+ return 0;
+}
+
int llhttp__internal__c_update_header_state_8(
llhttp__internal_t* state,
const unsigned char* p,
return 0;
}
-int llhttp__internal__c_or_flags_16(
+int llhttp__internal__c_or_flags_17(
llhttp__internal_t* state,
const unsigned char* p,
const unsigned char* endp) {
s_n_llhttp__internal__n_invoke_llhttp__after_message_complete: {
switch (llhttp__after_message_complete(state, p, endp)) {
default:
- goto s_n_llhttp__internal__n_start;
+ goto s_n_llhttp__internal__n_invoke_update_finish_1;
}
/* UNREACHABLE */;
abort();
}
case s_n_llhttp__internal__n_pause_1:
s_n_llhttp__internal__n_pause_1: {
- state->error = 0x15;
+ state->error = 0x16;
state->reason = "Pause on CONNECT/Upgrade";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
switch (llhttp__on_message_complete(state, p, endp)) {
case 0:
goto s_n_llhttp__internal__n_invoke_is_equal_upgrade;
- case 20:
+ case 21:
goto s_n_llhttp__internal__n_pause_5;
default:
goto s_n_llhttp__internal__n_error_9;
}
state->_span_pos0 = (void*) p;
state->_span_cb0 = llhttp__on_body;
- goto s_n_llhttp__internal__n_invoke_update_finish_1;
+ goto s_n_llhttp__internal__n_eof;
/* UNREACHABLE */;
abort();
}
case 3:
goto s_n_llhttp__internal__n_span_start_llhttp__on_body_1;
case 4:
- goto s_n_llhttp__internal__n_span_start_llhttp__on_body_2;
+ goto s_n_llhttp__internal__n_invoke_update_finish_2;
+ case 5:
+ goto s_n_llhttp__internal__n_error_10;
default:
goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete;
}
goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
}
default: {
- goto s_n_llhttp__internal__n_invoke_load_header_state_2;
+ goto s_n_llhttp__internal__n_invoke_load_header_state_3;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_header_value_lws;
}
default: {
- goto s_n_llhttp__internal__n_error_12;
+ goto s_n_llhttp__internal__n_error_15;
+ }
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
+ case s_n_llhttp__internal__n_header_value_lenient:
+ s_n_llhttp__internal__n_header_value_lenient: {
+ if (p == endp) {
+ return s_n_llhttp__internal__n_header_value_lenient;
+ }
+ switch (*p) {
+ case 10: {
+ goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_1;
+ }
+ case 13: {
+ goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3;
+ }
+ default: {
+ p++;
+ goto s_n_llhttp__internal__n_header_value_lenient;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_2;
}
default: {
- goto s_n_llhttp__internal__n_error_13;
+ goto s_n_llhttp__internal__n_invoke_test_flags_4;
}
}
/* UNREACHABLE */;
}
case ',': {
p++;
- goto s_n_llhttp__internal__n_invoke_load_header_state_3;
+ goto s_n_llhttp__internal__n_invoke_load_header_state_4;
}
default: {
goto s_n_llhttp__internal__n_invoke_update_header_state_4;
if (p == endp) {
return s_n_llhttp__internal__n_header_value_connection_1;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob3, 4);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob4, 4);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
if (p == endp) {
return s_n_llhttp__internal__n_header_value_connection_2;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob4, 9);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob5, 9);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
if (p == endp) {
return s_n_llhttp__internal__n_header_value_connection_3;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob5, 6);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob6, 6);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
/* UNREACHABLE */;
abort();
}
- case s_n_llhttp__internal__n_error_15:
- s_n_llhttp__internal__n_error_15: {
+ case s_n_llhttp__internal__n_error_18:
+ s_n_llhttp__internal__n_error_18: {
state->error = 0xb;
state->reason = "Content-Length overflow";
state->error_pos = (const char*) p;
if (p == endp) {
return s_n_llhttp__internal__n_header_value;
}
+ #ifdef __SSE4_2__
+ if (endp - p >= 16) {
+ __m128i ranges;
+ __m128i input;
+ int avail;
+ int match_len;
+
+ /* Load input */
+ input = _mm_loadu_si128((__m128i const*) p);
+ ranges = _mm_loadu_si128((__m128i const*) llparse_blob7);
+
+ /* Find first character that does not match `ranges` */
+ match_len = _mm_cmpestri(ranges, 6,
+ input, 16,
+ _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
+ _SIDD_NEGATIVE_POLARITY);
+
+ if (match_len != 0) {
+ p += match_len;
+ goto s_n_llhttp__internal__n_header_value;
+ }
+ goto s_n_llhttp__internal__n_header_value_otherwise;
+ }
+ #endif /* __SSE4_2__ */
switch (lookup_table[(uint8_t) *p]) {
case 1: {
p++;
/* UNREACHABLE */;
abort();
}
- case s_n_llhttp__internal__n_error_16:
- s_n_llhttp__internal__n_error_16: {
+ case s_n_llhttp__internal__n_error_19:
+ s_n_llhttp__internal__n_error_19: {
state->error = 0xb;
state->reason = "Invalid character in Content-Length";
state->error_pos = (const char*) p;
goto s_n_llhttp__internal__n_header_value_content_length_ws;
}
default: {
- goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_4;
+ goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_5;
}
}
/* UNREACHABLE */;
/* UNREACHABLE */;
abort();
}
- case s_n_llhttp__internal__n_header_value_te_chunked_1:
- s_n_llhttp__internal__n_header_value_te_chunked_1: {
- llparse_match_t match_seq;
-
+ case s_n_llhttp__internal__n_header_value_te_chunked_last:
+ s_n_llhttp__internal__n_header_value_te_chunked_last: {
if (p == endp) {
- return s_n_llhttp__internal__n_header_value_te_chunked_1;
+ return s_n_llhttp__internal__n_header_value_te_chunked_last;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob6, 6);
- p = match_seq.current;
- switch (match_seq.status) {
- case kMatchComplete: {
- p++;
+ switch (*p) {
+ case 10: {
goto s_n_llhttp__internal__n_invoke_update_header_state_8;
}
- case kMatchPause: {
- return s_n_llhttp__internal__n_header_value_te_chunked_1;
+ case 13: {
+ goto s_n_llhttp__internal__n_invoke_update_header_state_8;
}
- case kMatchMismatch: {
- goto s_n_llhttp__internal__n_invoke_update_header_state_7;
+ case ' ': {
+ p++;
+ goto s_n_llhttp__internal__n_header_value_te_chunked_last;
+ }
+ default: {
+ goto s_n_llhttp__internal__n_header_value_te_chunked;
}
}
/* UNREACHABLE */;
abort();
}
- case s_n_llhttp__internal__n_header_value_te_chunked:
- s_n_llhttp__internal__n_header_value_te_chunked: {
+ case s_n_llhttp__internal__n_header_value_te_token_ows:
+ s_n_llhttp__internal__n_header_value_te_token_ows: {
if (p == endp) {
- return s_n_llhttp__internal__n_header_value_te_chunked;
+ return s_n_llhttp__internal__n_header_value_te_token_ows;
}
- switch (((*p) | 0x20)) {
- case 10: {
- goto s_n_llhttp__internal__n_header_value_discard_rws;
- }
- case 13: {
- goto s_n_llhttp__internal__n_header_value_discard_rws;
+ switch (*p) {
+ case 9: {
+ p++;
+ goto s_n_llhttp__internal__n_header_value_te_token_ows;
}
case ' ': {
- goto s_n_llhttp__internal__n_header_value_discard_rws;
+ p++;
+ goto s_n_llhttp__internal__n_header_value_te_token_ows;
}
- case 'c': {
+ default: {
+ goto s_n_llhttp__internal__n_header_value_te_chunked;
+ }
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
+ case s_n_llhttp__internal__n_header_value_te_token:
+ s_n_llhttp__internal__n_header_value_te_token: {
+ static uint8_t lookup_table[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0
+ };
+ if (p == endp) {
+ return s_n_llhttp__internal__n_header_value_te_token;
+ }
+ switch (lookup_table[(uint8_t) *p]) {
+ case 1: {
p++;
- goto s_n_llhttp__internal__n_header_value_te_chunked_1;
+ goto s_n_llhttp__internal__n_header_value_te_token;
+ }
+ case 2: {
+ p++;
+ goto s_n_llhttp__internal__n_header_value_te_token_ows;
}
default: {
goto s_n_llhttp__internal__n_invoke_update_header_state_7;
/* UNREACHABLE */;
abort();
}
+ case s_n_llhttp__internal__n_header_value_te_chunked:
+ s_n_llhttp__internal__n_header_value_te_chunked: {
+ llparse_match_t match_seq;
+
+ if (p == endp) {
+ return s_n_llhttp__internal__n_header_value_te_chunked;
+ }
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob8, 7);
+ p = match_seq.current;
+ switch (match_seq.status) {
+ case kMatchComplete: {
+ p++;
+ goto s_n_llhttp__internal__n_header_value_te_chunked_last;
+ }
+ case kMatchPause: {
+ return s_n_llhttp__internal__n_header_value_te_chunked;
+ }
+ case kMatchMismatch: {
+ goto s_n_llhttp__internal__n_header_value_te_token;
+ }
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
case s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1:
s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1: {
if (p == endp) {
}
state->_span_pos0 = (void*) p;
state->_span_cb0 = llhttp__on_header_value;
- goto s_n_llhttp__internal__n_invoke_load_header_state_1;
+ goto s_n_llhttp__internal__n_invoke_load_header_state_2;
/* UNREACHABLE */;
abort();
}
goto s_n_llhttp__internal__n_span_end_llhttp__on_header_field_1;
}
default: {
- goto s_n_llhttp__internal__n_error_17;
+ goto s_n_llhttp__internal__n_error_20;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_header_field_general;
}
+ #ifdef __SSE4_2__
+ if (endp - p >= 16) {
+ __m128i ranges;
+ __m128i input;
+ int avail;
+ int match_len;
+
+ /* Load input */
+ input = _mm_loadu_si128((__m128i const*) p);
+ ranges = _mm_loadu_si128((__m128i const*) llparse_blob9);
+
+ /* Find first character that does not match `ranges` */
+ match_len = _mm_cmpestri(ranges, 16,
+ input, 16,
+ _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
+ _SIDD_NEGATIVE_POLARITY);
+
+ if (match_len != 0) {
+ p += match_len;
+ goto s_n_llhttp__internal__n_header_field_general;
+ }
+ ranges = _mm_loadu_si128((__m128i const*) llparse_blob10);
+
+ /* Find first character that does not match `ranges` */
+ match_len = _mm_cmpestri(ranges, 2,
+ input, 16,
+ _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
+ _SIDD_NEGATIVE_POLARITY);
+
+ if (match_len != 0) {
+ p += match_len;
+ goto s_n_llhttp__internal__n_header_field_general;
+ }
+ goto s_n_llhttp__internal__n_header_field_general_otherwise;
+ }
+ #endif /* __SSE4_2__ */
switch (lookup_table[(uint8_t) *p]) {
case 1: {
p++;
if (p == endp) {
return s_n_llhttp__internal__n_header_field_3;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob2, 6);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob3, 6);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
if (p == endp) {
return s_n_llhttp__internal__n_header_field_4;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob7, 10);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob11, 10);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
if (p == endp) {
return s_n_llhttp__internal__n_header_field_1;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob1, 2);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob2, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
if (p == endp) {
return s_n_llhttp__internal__n_header_field_5;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob8, 15);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob12, 15);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
if (p == endp) {
return s_n_llhttp__internal__n_header_field_6;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob9, 16);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob13, 16);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
if (p == endp) {
return s_n_llhttp__internal__n_header_field_7;
}
- match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob10, 6);
+ match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob14, 6);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
if (p == endp) {
return s_n_llhttp__internal__n_url_skip_lf_to_http09;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob11, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob15, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_url_skip_lf_to_http09;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_18;
+ goto s_n_llhttp__internal__n_error_21;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_header_field_start;
}
default: {
- goto s_n_llhttp__internal__n_error_19;
+ goto s_n_llhttp__internal__n_error_22;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_req_http_end_1;
}
default: {
- goto s_n_llhttp__internal__n_error_19;
+ goto s_n_llhttp__internal__n_error_22;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_invoke_store_http_minor;
}
default: {
- goto s_n_llhttp__internal__n_error_20;
+ goto s_n_llhttp__internal__n_error_23;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_req_http_minor;
}
default: {
- goto s_n_llhttp__internal__n_error_21;
+ goto s_n_llhttp__internal__n_error_24;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_invoke_store_http_major;
}
default: {
- goto s_n_llhttp__internal__n_error_22;
+ goto s_n_llhttp__internal__n_error_25;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_req_http_start_1;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob12, 4);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob16, 4);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_req_http_start_1;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_24;
+ goto s_n_llhttp__internal__n_error_27;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_req_http_start_2;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob13, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob17, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_req_http_start_2;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_24;
+ goto s_n_llhttp__internal__n_error_27;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_req_http_start_2;
}
default: {
- goto s_n_llhttp__internal__n_error_24;
+ goto s_n_llhttp__internal__n_error_27;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_span_end_llhttp__on_url_8;
}
default: {
- goto s_n_llhttp__internal__n_error_25;
+ goto s_n_llhttp__internal__n_error_28;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_span_end_stub_query_3;
}
default: {
- goto s_n_llhttp__internal__n_error_26;
+ goto s_n_llhttp__internal__n_error_29;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_url_query;
}
default: {
- goto s_n_llhttp__internal__n_error_27;
+ goto s_n_llhttp__internal__n_error_30;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_url_path;
}
+ #ifdef __SSE4_2__
+ if (endp - p >= 16) {
+ __m128i ranges;
+ __m128i input;
+ int avail;
+ int match_len;
+
+ /* Load input */
+ input = _mm_loadu_si128((__m128i const*) p);
+ ranges = _mm_loadu_si128((__m128i const*) llparse_blob1);
+
+ /* Find first character that does not match `ranges` */
+ match_len = _mm_cmpestri(ranges, 12,
+ input, 16,
+ _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
+ _SIDD_NEGATIVE_POLARITY);
+
+ if (match_len != 0) {
+ p += match_len;
+ goto s_n_llhttp__internal__n_url_path;
+ }
+ goto s_n_llhttp__internal__n_url_query_or_fragment;
+ }
+ #endif /* __SSE4_2__ */
switch (lookup_table[(uint8_t) *p]) {
case 1: {
p++;
}
case 7: {
p++;
- goto s_n_llhttp__internal__n_error_28;
+ goto s_n_llhttp__internal__n_error_31;
}
default: {
- goto s_n_llhttp__internal__n_error_29;
+ goto s_n_llhttp__internal__n_error_32;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_url_server_with_at;
}
default: {
- goto s_n_llhttp__internal__n_error_30;
+ goto s_n_llhttp__internal__n_error_33;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_url_server;
}
default: {
- goto s_n_llhttp__internal__n_error_32;
+ goto s_n_llhttp__internal__n_error_35;
}
}
/* UNREACHABLE */;
switch (*p) {
case 10: {
p++;
- goto s_n_llhttp__internal__n_error_31;
+ goto s_n_llhttp__internal__n_error_34;
}
case 13: {
p++;
- goto s_n_llhttp__internal__n_error_31;
+ goto s_n_llhttp__internal__n_error_34;
}
case ' ': {
p++;
- goto s_n_llhttp__internal__n_error_31;
+ goto s_n_llhttp__internal__n_error_34;
}
case '/': {
p++;
goto s_n_llhttp__internal__n_url_schema_delim_1;
}
default: {
- goto s_n_llhttp__internal__n_error_32;
+ goto s_n_llhttp__internal__n_error_35;
}
}
/* UNREACHABLE */;
switch (lookup_table[(uint8_t) *p]) {
case 1: {
p++;
- goto s_n_llhttp__internal__n_error_31;
+ goto s_n_llhttp__internal__n_error_34;
}
case 2: {
goto s_n_llhttp__internal__n_span_end_stub_schema;
goto s_n_llhttp__internal__n_url_schema;
}
default: {
- goto s_n_llhttp__internal__n_error_33;
+ goto s_n_llhttp__internal__n_error_36;
}
}
/* UNREACHABLE */;
switch (lookup_table[(uint8_t) *p]) {
case 1: {
p++;
- goto s_n_llhttp__internal__n_error_31;
+ goto s_n_llhttp__internal__n_error_34;
}
case 2: {
goto s_n_llhttp__internal__n_span_start_stub_path_2;
goto s_n_llhttp__internal__n_url_schema;
}
default: {
- goto s_n_llhttp__internal__n_error_34;
+ goto s_n_llhttp__internal__n_error_37;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_req_spaces_before_url;
}
default: {
- goto s_n_llhttp__internal__n_error_35;
+ goto s_n_llhttp__internal__n_error_38;
}
}
/* UNREACHABLE */;
return s_n_llhttp__internal__n_start_req_1;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_2;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob14, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob18, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_2;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_4;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob15, 6);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob19, 6);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_4;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_6;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob16, 4);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob20, 4);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_6;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_invoke_store_method_1;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_7;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_5;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_8;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob17, 5);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob21, 5);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_8;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_9;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob18, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob22, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_9;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_10;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob19, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob23, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_10;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_12;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob20, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob24, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_12;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_13;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob21, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob25, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_13;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_13;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_15;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob22, 6);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob26, 6);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_15;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_16;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob23, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob27, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_16;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_18;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob24, 7);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob28, 7);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_18;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_20;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob25, 6);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob29, 6);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_20;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_invoke_store_method_1;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_21;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_19;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_22;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob26, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob30, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_22;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_22;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_23;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob27, 5);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob31, 5);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_23;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_24;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob28, 6);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob32, 6);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_24;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_26;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob29, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob33, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_26;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_27;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob30, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob34, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_27;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_30;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob32, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob36, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_30;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_31;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob33, 4);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob37, 4);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_31;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_31;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_28;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob31, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob35, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_28;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_33;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob34, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob38, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_33;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_invoke_store_method_1;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_32;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_36;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob35, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob39, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_36;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_37;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob36, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob40, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_37;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_37;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_35;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_39;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob37, 4);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob41, 4);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_39;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_40;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob38, 4);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob42, 4);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_40;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_41;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob39, 7);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob43, 7);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_41;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_41;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_42;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob40, 4);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob44, 4);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_42;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_45;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob41, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob45, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_45;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_47;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob42, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob46, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_47;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_48;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob43, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob47, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_48;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_48;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_req_49;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob44, 8);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob48, 8);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_req_49;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_49;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_44;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_start_req_43;
}
default: {
- goto s_n_llhttp__internal__n_error_43;
+ goto s_n_llhttp__internal__n_error_46;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_res_status_start;
}
default: {
- goto s_n_llhttp__internal__n_error_37;
+ goto s_n_llhttp__internal__n_error_40;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_invoke_update_status_code;
}
default: {
- goto s_n_llhttp__internal__n_error_38;
+ goto s_n_llhttp__internal__n_error_41;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
}
default: {
- goto s_n_llhttp__internal__n_error_39;
+ goto s_n_llhttp__internal__n_error_42;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_res_http_minor;
}
default: {
- goto s_n_llhttp__internal__n_error_40;
+ goto s_n_llhttp__internal__n_error_43;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_invoke_store_http_major_1;
}
default: {
- goto s_n_llhttp__internal__n_error_41;
+ goto s_n_llhttp__internal__n_error_44;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_start_res;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob45, 5);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob49, 5);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_start_res;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_44;
+ goto s_n_llhttp__internal__n_error_47;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_req_or_res_method_2;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob46, 2);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob50, 2);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_req_or_res_method_2;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_42;
+ goto s_n_llhttp__internal__n_error_45;
}
}
/* UNREACHABLE */;
if (p == endp) {
return s_n_llhttp__internal__n_req_or_res_method_3;
}
- match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob47, 3);
+ match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob51, 3);
p = match_seq.current;
switch (match_seq.status) {
case kMatchComplete: {
return s_n_llhttp__internal__n_req_or_res_method_3;
}
case kMatchMismatch: {
- goto s_n_llhttp__internal__n_error_42;
+ goto s_n_llhttp__internal__n_error_45;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_req_or_res_method_3;
}
default: {
- goto s_n_llhttp__internal__n_error_42;
+ goto s_n_llhttp__internal__n_error_45;
}
}
/* UNREACHABLE */;
goto s_n_llhttp__internal__n_req_or_res_method_1;
}
default: {
- goto s_n_llhttp__internal__n_error_42;
+ goto s_n_llhttp__internal__n_error_45;
}
}
/* UNREACHABLE */;
/* UNREACHABLE */
abort();
}
- s_n_llhttp__internal__n_error_31: {
+ s_n_llhttp__internal__n_error_34: {
state->error = 0x7;
state->reason = "Invalid characters in url";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
+ s_n_llhttp__internal__n_invoke_update_finish_1: {
+ switch (llhttp__internal__c_update_finish_1(state, p, endp)) {
+ default:
+ goto s_n_llhttp__internal__n_start;
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
s_n_llhttp__internal__n_pause_5: {
- state->error = 0x14;
+ state->error = 0x15;
state->reason = "on_message_complete pause";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_is_equal_upgrade;
abort();
}
s_n_llhttp__internal__n_error_9: {
- state->error = 0x11;
+ state->error = 0x12;
state->reason = "`on_message_complete` callback error";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_error;
abort();
}
s_n_llhttp__internal__n_pause_7: {
- state->error = 0x14;
+ state->error = 0x15;
state->reason = "on_chunk_complete pause";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_11: {
- state->error = 0x13;
+ s_n_llhttp__internal__n_error_13: {
+ state->error = 0x14;
state->reason = "`on_chunk_complete` callback error";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_error;
switch (llhttp__on_chunk_complete(state, p, endp)) {
case 0:
goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
- case 20:
+ case 21:
goto s_n_llhttp__internal__n_pause_7;
default:
- goto s_n_llhttp__internal__n_error_11;
+ goto s_n_llhttp__internal__n_error_13;
}
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_10: {
+ s_n_llhttp__internal__n_error_11: {
+ state->error = 0x4;
+ state->reason = "Content-Length can't be present with Transfer-Encoding";
+ state->error_pos = (const char*) p;
+ state->_current = (void*) (intptr_t) s_error;
+ return s_error;
+ /* UNREACHABLE */;
+ abort();
+ }
+ s_n_llhttp__internal__n_error_12: {
state->error = 0x4;
state->reason = "Content-Length can't be present with chunked encoding";
state->error_pos = (const char*) p;
abort();
}
s_n_llhttp__internal__n_pause_2: {
- state->error = 0x14;
+ state->error = 0x15;
state->reason = "on_message_complete pause";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_pause_1;
abort();
}
s_n_llhttp__internal__n_error_3: {
- state->error = 0x11;
+ state->error = 0x12;
state->reason = "`on_message_complete` callback error";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_error;
switch (llhttp__on_message_complete(state, p, endp)) {
case 0:
goto s_n_llhttp__internal__n_pause_1;
- case 20:
+ case 21:
goto s_n_llhttp__internal__n_pause_2;
default:
goto s_n_llhttp__internal__n_error_3;
abort();
}
s_n_llhttp__internal__n_pause_3: {
- state->error = 0x14;
+ state->error = 0x15;
state->reason = "on_chunk_complete pause";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_update_content_length;
abort();
}
s_n_llhttp__internal__n_error_5: {
- state->error = 0x13;
+ state->error = 0x14;
state->reason = "`on_chunk_complete` callback error";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_error;
switch (llhttp__on_chunk_complete(state, p, endp)) {
case 0:
goto s_n_llhttp__internal__n_invoke_update_content_length;
- case 20:
+ case 21:
goto s_n_llhttp__internal__n_pause_3;
default:
goto s_n_llhttp__internal__n_error_5;
abort();
}
s_n_llhttp__internal__n_pause_4: {
- state->error = 0x14;
+ state->error = 0x15;
state->reason = "on_chunk_header pause";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_is_equal_content_length;
abort();
}
s_n_llhttp__internal__n_error_4: {
- state->error = 0x12;
+ state->error = 0x13;
state->reason = "`on_chunk_header` callback error";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_error;
switch (llhttp__on_chunk_header(state, p, endp)) {
case 0:
goto s_n_llhttp__internal__n_invoke_is_equal_content_length;
- case 20:
+ case 21:
goto s_n_llhttp__internal__n_pause_4;
default:
goto s_n_llhttp__internal__n_error_4;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_invoke_update_finish_1: {
- switch (llhttp__internal__c_update_finish_1(state, p, endp)) {
+ s_n_llhttp__internal__n_invoke_update_finish_2: {
+ switch (llhttp__internal__c_update_finish_2(state, p, endp)) {
default:
- goto s_n_llhttp__internal__n_eof;
+ goto s_n_llhttp__internal__n_span_start_llhttp__on_body_2;
}
/* UNREACHABLE */;
abort();
}
+ s_n_llhttp__internal__n_error_10: {
+ state->error = 0xf;
+ state->reason = "Request has invalid `Transfer-Encoding`";
+ state->error_pos = (const char*) p;
+ state->_current = (void*) (intptr_t) s_error;
+ return s_error;
+ /* UNREACHABLE */;
+ abort();
+ }
s_n_llhttp__internal__n_pause: {
- state->error = 0x14;
+ state->error = 0x15;
state->reason = "on_message_complete pause";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
abort();
}
s_n_llhttp__internal__n_error_2: {
- state->error = 0x11;
+ state->error = 0x12;
state->reason = "`on_message_complete` callback error";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_error;
switch (llhttp__on_message_complete(state, p, endp)) {
case 0:
goto s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
- case 20:
+ case 21:
goto s_n_llhttp__internal__n_pause;
default:
goto s_n_llhttp__internal__n_error_2;
abort();
}
s_n_llhttp__internal__n_pause_6: {
- state->error = 0x14;
+ state->error = 0x15;
state->reason = "Paused by on_headers_complete";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
abort();
}
s_n_llhttp__internal__n_error_1: {
- state->error = 0x10;
+ state->error = 0x11;
state->reason = "User callback error";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_error;
goto s_n_llhttp__internal__n_invoke_or_flags_1;
case 2:
goto s_n_llhttp__internal__n_invoke_update_upgrade;
- case 20:
+ case 21:
goto s_n_llhttp__internal__n_pause_6;
default:
goto s_n_llhttp__internal__n_error_1;
/* UNREACHABLE */;
abort();
}
+ s_n_llhttp__internal__n_invoke_test_flags_3: {
+ switch (llhttp__internal__c_test_flags_3(state, p, endp)) {
+ case 1:
+ goto s_n_llhttp__internal__n_error_12;
+ default:
+ goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
+ s_n_llhttp__internal__n_invoke_test_flags_2: {
+ switch (llhttp__internal__c_test_flags_2(state, p, endp)) {
+ case 0:
+ goto s_n_llhttp__internal__n_error_11;
+ case 1:
+ goto s_n_llhttp__internal__n_invoke_test_flags_3;
+ default:
+ goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
s_n_llhttp__internal__n_invoke_test_flags_1: {
switch (llhttp__internal__c_test_flags_1(state, p, endp)) {
case 1:
- goto s_n_llhttp__internal__n_error_10;
+ goto s_n_llhttp__internal__n_invoke_test_flags_2;
default:
goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
}
/* UNREACHABLE */;
abort();
}
+ s_n_llhttp__internal__n_error_14: {
+ state->error = 0xb;
+ state->reason = "Empty Content-Length";
+ state->error_pos = (const char*) p;
+ state->_current = (void*) (intptr_t) s_error;
+ return s_error;
+ /* UNREACHABLE */;
+ abort();
+ }
s_n_llhttp__internal__n_span_end_llhttp__on_header_value: {
const unsigned char* start;
int err;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_invoke_load_header_state: {
+ s_n_llhttp__internal__n_invoke_load_header_state_1: {
switch (llhttp__internal__c_load_header_state(state, p, endp)) {
case 5:
goto s_n_llhttp__internal__n_invoke_or_flags_3;
/* UNREACHABLE */;
abort();
}
+ s_n_llhttp__internal__n_invoke_load_header_state: {
+ switch (llhttp__internal__c_load_header_state(state, p, endp)) {
+ case 2:
+ goto s_n_llhttp__internal__n_error_14;
+ default:
+ goto s_n_llhttp__internal__n_invoke_load_header_state_1;
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
s_n_llhttp__internal__n_invoke_update_header_state_1: {
switch (llhttp__internal__c_update_header_state(state, p, endp)) {
default:
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_invoke_load_header_state_2: {
+ s_n_llhttp__internal__n_invoke_load_header_state_3: {
switch (llhttp__internal__c_load_header_state(state, p, endp)) {
case 5:
goto s_n_llhttp__internal__n_invoke_or_flags_7;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_12: {
+ s_n_llhttp__internal__n_error_15: {
state->error = 0x3;
state->reason = "Missing expected LF after header value";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_13: {
+ s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3: {
+ const unsigned char* start;
+ int err;
+
+ start = state->_span_pos0;
+ state->_span_pos0 = NULL;
+ err = llhttp__on_header_value(state, start, p);
+ if (err != 0) {
+ state->error = err;
+ state->error_pos = (const char*) (p + 1);
+ state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_almost_done;
+ return s_error;
+ }
+ p++;
+ goto s_n_llhttp__internal__n_header_value_almost_done;
+ /* UNREACHABLE */;
+ abort();
+ }
+ s_n_llhttp__internal__n_error_16: {
state->error = 0xa;
state->reason = "Invalid header value char";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
+ s_n_llhttp__internal__n_invoke_test_flags_4: {
+ switch (llhttp__internal__c_test_flags_2(state, p, endp)) {
+ case 1:
+ goto s_n_llhttp__internal__n_header_value_lenient;
+ default:
+ goto s_n_llhttp__internal__n_error_16;
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
s_n_llhttp__internal__n_invoke_update_header_state_3: {
switch (llhttp__internal__c_update_header_state(state, p, endp)) {
default:
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_invoke_load_header_state_3: {
+ s_n_llhttp__internal__n_invoke_load_header_state_4: {
switch (llhttp__internal__c_load_header_state(state, p, endp)) {
case 5:
goto s_n_llhttp__internal__n_invoke_or_flags_11;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3: {
+ s_n_llhttp__internal__n_span_end_llhttp__on_header_value_4: {
const unsigned char* start;
int err;
if (err != 0) {
state->error = err;
state->error_pos = (const char*) p;
- state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_15;
+ state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_18;
return s_error;
}
- goto s_n_llhttp__internal__n_error_15;
+ goto s_n_llhttp__internal__n_error_18;
/* UNREACHABLE */;
abort();
}
s_n_llhttp__internal__n_invoke_mul_add_content_length_1: {
switch (llhttp__internal__c_mul_add_content_length_1(state, p, endp, match)) {
case 1:
- goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3;
+ goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_4;
default:
goto s_n_llhttp__internal__n_header_value_content_length;
}
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_span_end_llhttp__on_header_value_4: {
+ s_n_llhttp__internal__n_span_end_llhttp__on_header_value_5: {
const unsigned char* start;
int err;
if (err != 0) {
state->error = err;
state->error_pos = (const char*) p;
- state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_16;
+ state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_19;
return s_error;
}
- goto s_n_llhttp__internal__n_error_16;
+ goto s_n_llhttp__internal__n_error_19;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_14: {
+ s_n_llhttp__internal__n_error_17: {
state->error = 0x4;
state->reason = "Duplicate Content-Length";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_invoke_test_flags_2: {
- switch (llhttp__internal__c_test_flags_2(state, p, endp)) {
+ s_n_llhttp__internal__n_invoke_test_flags_5: {
+ switch (llhttp__internal__c_test_flags_5(state, p, endp)) {
case 0:
goto s_n_llhttp__internal__n_header_value_content_length;
default:
- goto s_n_llhttp__internal__n_error_14;
+ goto s_n_llhttp__internal__n_error_17;
}
/* UNREACHABLE */;
abort();
s_n_llhttp__internal__n_invoke_update_header_state_8: {
switch (llhttp__internal__c_update_header_state_8(state, p, endp)) {
default:
- goto s_n_llhttp__internal__n_header_value_discard_rws;
+ goto s_n_llhttp__internal__n_header_value_otherwise;
}
/* UNREACHABLE */;
abort();
s_n_llhttp__internal__n_invoke_or_flags_16: {
switch (llhttp__internal__c_or_flags_16(state, p, endp)) {
default:
+ goto s_n_llhttp__internal__n_header_value_te_chunked;
+ }
+ /* UNREACHABLE */;
+ abort();
+ }
+ s_n_llhttp__internal__n_invoke_or_flags_17: {
+ switch (llhttp__internal__c_or_flags_17(state, p, endp)) {
+ default:
goto s_n_llhttp__internal__n_invoke_update_header_state_7;
}
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_invoke_load_header_state_1: {
+ s_n_llhttp__internal__n_invoke_load_header_state_2: {
switch (llhttp__internal__c_load_header_state(state, p, endp)) {
case 1:
goto s_n_llhttp__internal__n_header_value_connection;
case 2:
- goto s_n_llhttp__internal__n_invoke_test_flags_2;
+ goto s_n_llhttp__internal__n_invoke_test_flags_5;
case 3:
- goto s_n_llhttp__internal__n_header_value_te_chunked;
- case 4:
goto s_n_llhttp__internal__n_invoke_or_flags_16;
+ case 4:
+ goto s_n_llhttp__internal__n_invoke_or_flags_17;
default:
goto s_n_llhttp__internal__n_header_value;
}
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_17: {
+ s_n_llhttp__internal__n_error_20: {
state->error = 0xa;
state->reason = "Invalid header token";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_18: {
+ s_n_llhttp__internal__n_error_21: {
state->error = 0x7;
state->reason = "Expected CRLF";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_19: {
+ s_n_llhttp__internal__n_error_22: {
state->error = 0x9;
state->reason = "Expected CRLF after version";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_20: {
+ s_n_llhttp__internal__n_error_23: {
state->error = 0x9;
state->reason = "Invalid minor version";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_21: {
+ s_n_llhttp__internal__n_error_24: {
state->error = 0x9;
state->reason = "Expected dot";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_22: {
+ s_n_llhttp__internal__n_error_25: {
state->error = 0x9;
state->reason = "Invalid major version";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_24: {
+ s_n_llhttp__internal__n_error_27: {
state->error = 0x8;
state->reason = "Expected HTTP/";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_23: {
+ s_n_llhttp__internal__n_error_26: {
state->error = 0x8;
state->reason = "Expected SOURCE method for ICE/x.x request";
state->error_pos = (const char*) p;
s_n_llhttp__internal__n_invoke_is_equal_method_1: {
switch (llhttp__internal__c_is_equal_method_1(state, p, endp)) {
case 0:
- goto s_n_llhttp__internal__n_error_23;
+ goto s_n_llhttp__internal__n_error_26;
default:
goto s_n_llhttp__internal__n_req_http_major;
}
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_25: {
+ s_n_llhttp__internal__n_error_28: {
state->error = 0x7;
state->reason = "Invalid char in url fragment start";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_26: {
+ s_n_llhttp__internal__n_error_29: {
state->error = 0x7;
state->reason = "Invalid char in url query";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_27: {
+ s_n_llhttp__internal__n_error_30: {
state->error = 0x7;
state->reason = "Invalid char in url path";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_28: {
+ s_n_llhttp__internal__n_error_31: {
state->error = 0x7;
state->reason = "Double @ in url";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_29: {
+ s_n_llhttp__internal__n_error_32: {
state->error = 0x7;
state->reason = "Unexpected char in url server";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_30: {
+ s_n_llhttp__internal__n_error_33: {
state->error = 0x7;
state->reason = "Unexpected char in url server";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_32: {
+ s_n_llhttp__internal__n_error_35: {
state->error = 0x7;
state->reason = "Unexpected char in url schema";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_33: {
+ s_n_llhttp__internal__n_error_36: {
state->error = 0x7;
state->reason = "Unexpected char in url schema";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_34: {
+ s_n_llhttp__internal__n_error_37: {
state->error = 0x7;
state->reason = "Unexpected start char in url";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_35: {
+ s_n_llhttp__internal__n_error_38: {
state->error = 0x6;
state->reason = "Expected space after method";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_43: {
+ s_n_llhttp__internal__n_error_46: {
state->error = 0x6;
state->reason = "Invalid method encountered";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_36: {
+ s_n_llhttp__internal__n_error_39: {
state->error = 0xd;
state->reason = "Response overflow";
state->error_pos = (const char*) p;
s_n_llhttp__internal__n_invoke_mul_add_status_code: {
switch (llhttp__internal__c_mul_add_status_code(state, p, endp, match)) {
case 1:
- goto s_n_llhttp__internal__n_error_36;
+ goto s_n_llhttp__internal__n_error_39;
default:
goto s_n_llhttp__internal__n_res_status_code;
}
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_37: {
+ s_n_llhttp__internal__n_error_40: {
state->error = 0xd;
state->reason = "Invalid response status";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_38: {
+ s_n_llhttp__internal__n_error_41: {
state->error = 0x9;
state->reason = "Expected space after version";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_39: {
+ s_n_llhttp__internal__n_error_42: {
state->error = 0x9;
state->reason = "Invalid minor version";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_40: {
+ s_n_llhttp__internal__n_error_43: {
state->error = 0x9;
state->reason = "Expected dot";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_41: {
+ s_n_llhttp__internal__n_error_44: {
state->error = 0x9;
state->reason = "Invalid major version";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_44: {
+ s_n_llhttp__internal__n_error_47: {
state->error = 0x8;
state->reason = "Expected HTTP/";
state->error_pos = (const char*) p;
/* UNREACHABLE */;
abort();
}
- s_n_llhttp__internal__n_error_42: {
+ s_n_llhttp__internal__n_error_45: {
state->error = 0x8;
state->reason = "Invalid word encountered";
state->error_pos = (const char*) p;
abort();
}
s_n_llhttp__internal__n_pause_8: {
- state->error = 0x14;
+ state->error = 0x15;
state->reason = "on_message_begin pause";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_load_type;
abort();
}
s_n_llhttp__internal__n_error: {
- state->error = 0xf;
+ state->error = 0x10;
state->reason = "`on_message_begin` callback error";
state->error_pos = (const char*) p;
state->_current = (void*) (intptr_t) s_error;
switch (llhttp__on_message_begin(state, p, endp)) {
case 0:
goto s_n_llhttp__internal__n_invoke_load_type;
- case 20:
+ case 21:
goto s_n_llhttp__internal__n_pause_8;
default:
goto s_n_llhttp__internal__n_error;