|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|