diff options
author | Arno Töll <arno@debian.org> | 2012-11-21 23:03:46 +0100 |
---|---|---|
committer | Arno Töll <arno@debian.org> | 2012-11-21 23:03:46 +0100 |
commit | 0f22664a8c9f92c8b7d5dd05772bacf7caecbd52 (patch) | |
tree | c85da4e4968e5ec69d6d154fa032672f45cb3e13 /src/buffer.c | |
parent | 9fa7c3d770fb8688555b661940e04c3bf6b6d8aa (diff) | |
download | lighttpd-6c5a38c845d111ba26ba9167b500f48dafa30cb5.tar.gz |
Imported Upstream version 1.4.15upstream/1.4.15
Diffstat (limited to 'src/buffer.c')
-rw-r--r-- | src/buffer.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/buffer.c b/src/buffer.c index cf25d5b..094cee2 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -729,6 +729,29 @@ const char encoded_chars_hex[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* F0 - FF */ }; +const char encoded_chars_http_header[] = { + /* + 0 1 2 3 4 5 6 7 8 9 A B C D E F + */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, /* 00 - 0F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 - 1F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 - 2F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 30 - 3F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 40 - 4F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 50 - 5F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 60 - 6F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 70 - 7F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 - 8F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 - 9F */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* A0 - AF */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* B0 - BF */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* C0 - CF */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* D0 - DF */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* E0 - EF */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* F0 - FF */ +}; + + int buffer_append_string_encoded(buffer *b, const char *s, size_t s_len, buffer_encoding_t encoding) { unsigned char *ds, *d; @@ -759,6 +782,9 @@ int buffer_append_string_encoded(buffer *b, const char *s, size_t s_len, buffer_ case ENCODING_HEX: map = encoded_chars_hex; break; + case ENCODING_HTTP_HEADER: + map = encoded_chars_http_header; + break; case ENCODING_UNSET: break; } @@ -777,6 +803,7 @@ int buffer_append_string_encoded(buffer *b, const char *s, size_t s_len, buffer_ case ENCODING_MINIMAL_XML: d_len += 6; break; + case ENCODING_HTTP_HEADER: case ENCODING_HEX: d_len += 2; break; @@ -812,6 +839,10 @@ int buffer_append_string_encoded(buffer *b, const char *s, size_t s_len, buffer_ d[d_len++] = hex_chars[((*ds) >> 4) & 0x0F]; d[d_len++] = hex_chars[(*ds) & 0x0F]; break; + case ENCODING_HTTP_HEADER: + d[d_len++] = *ds; + d[d_len++] = '\t'; + break; case ENCODING_UNSET: break; } |