summaryrefslogtreecommitdiff
path: root/deps/node/deps/llhttp/src/http.c
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/llhttp/src/http.c')
-rw-r--r--deps/node/deps/llhttp/src/http.c120
1 files changed, 0 insertions, 120 deletions
diff --git a/deps/node/deps/llhttp/src/http.c b/deps/node/deps/llhttp/src/http.c
deleted file mode 100644
index 67834c2d..00000000
--- a/deps/node/deps/llhttp/src/http.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#include <stdio.h>
-#ifndef LLHTTP__TEST
-# include "llhttp.h"
-#else
-# define llhttp_t llparse_t
-#endif /* */
-
-int llhttp_message_needs_eof(const llhttp_t* parser);
-int llhttp_should_keep_alive(const llhttp_t* parser);
-
-int llhttp__before_headers_complete(llhttp_t* parser, const char* p,
- const char* endp) {
- /* Set this here so that on_headers_complete() callbacks can see it */
- if ((parser->flags & F_UPGRADE) &&
- (parser->flags & F_CONNECTION_UPGRADE)) {
- /* For responses, "Upgrade: foo" and "Connection: upgrade" are
- * mandatory only when it is a 101 Switching Protocols response,
- * otherwise it is purely informational, to announce support.
- */
- parser->upgrade =
- (parser->type == HTTP_REQUEST || parser->status_code == 101);
- } else {
- parser->upgrade = (parser->method == HTTP_CONNECT);
- }
- return 0;
-}
-
-
-/* Return values:
- * 0 - No body, `restart`, message_complete
- * 1 - CONNECT request, `restart`, message_complete, and pause
- * 2 - chunk_size_start
- * 3 - body_identity
- * 4 - body_identity_eof
- */
-int llhttp__after_headers_complete(llhttp_t* parser, const char* p,
- const char* endp) {
- int hasBody;
-
- hasBody = parser->flags & F_CHUNKED || parser->content_length > 0;
- if (parser->upgrade && (parser->method == HTTP_CONNECT ||
- (parser->flags & F_SKIPBODY) || !hasBody)) {
- /* Exit, the rest of the message is in a different protocol. */
- return 1;
- }
-
- if (parser->flags & F_SKIPBODY) {
- return 0;
- } else if (parser->flags & F_CHUNKED) {
- /* chunked encoding - ignore Content-Length header */
- return 2;
- } else {
- if (!(parser->flags & F_CONTENT_LENGTH)) {
- if (!llhttp_message_needs_eof(parser)) {
- /* Assume content-length 0 - read the next */
- return 0;
- } else {
- /* Read body until EOF */
- return 4;
- }
- } else if (parser->content_length == 0) {
- /* Content-Length header given but zero: Content-Length: 0\r\n */
- return 0;
- } else {
- /* Content-Length header given and non-zero */
- return 3;
- }
- }
-}
-
-
-int llhttp__after_message_complete(llhttp_t* parser, const char* p,
- const char* endp) {
- int should_keep_alive;
-
- should_keep_alive = llhttp_should_keep_alive(parser);
- parser->flags = 0;
- parser->finish = HTTP_FINISH_SAFE;
-
- /* NOTE: this is ignored in loose parsing mode */
- return should_keep_alive;
-}
-
-
-int llhttp_message_needs_eof(const llhttp_t* parser) {
- if (parser->type == HTTP_REQUEST) {
- return 0;
- }
-
- /* See RFC 2616 section 4.4 */
- if (parser->status_code / 100 == 1 || /* 1xx e.g. Continue */
- parser->status_code == 204 || /* No Content */
- parser->status_code == 304 || /* Not Modified */
- (parser->flags & F_SKIPBODY)) { /* response to a HEAD request */
- return 0;
- }
-
- if (parser->flags & (F_CHUNKED | F_CONTENT_LENGTH)) {
- return 0;
- }
-
- return 1;
-}
-
-
-int llhttp_should_keep_alive(const llhttp_t* parser) {
- if (parser->http_major > 0 && parser->http_minor > 0) {
- /* HTTP/1.1 */
- if (parser->flags & F_CONNECTION_CLOSE) {
- return 0;
- }
- } else {
- /* HTTP/1.0 or earlier */
- if (!(parser->flags & F_CONNECTION_KEEP_ALIVE)) {
- return 0;
- }
- }
-
- return !llhttp_message_needs_eof(parser);
-}