|
|
|
@ -140,159 +140,6 @@ int keyvalue_get_key(keyvalue *kv, const char *s) {
|
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
keyvalue_buffer *keyvalue_buffer_init(void) { |
|
|
|
|
keyvalue_buffer *kvb; |
|
|
|
|
|
|
|
|
|
kvb = calloc(1, sizeof(*kvb)); |
|
|
|
|
|
|
|
|
|
return kvb; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int keyvalue_buffer_append(keyvalue_buffer *kvb, int key, const char *value) { |
|
|
|
|
size_t i; |
|
|
|
|
if (kvb->size == 0) { |
|
|
|
|
kvb->size = 4; |
|
|
|
|
|
|
|
|
|
kvb->kv = malloc(kvb->size * sizeof(*kvb->kv)); |
|
|
|
|
|
|
|
|
|
for(i = 0; i < kvb->size; i++) { |
|
|
|
|
kvb->kv[i] = calloc(1, sizeof(**kvb->kv)); |
|
|
|
|
} |
|
|
|
|
} else if (kvb->used == kvb->size) { |
|
|
|
|
kvb->size += 4; |
|
|
|
|
|
|
|
|
|
kvb->kv = realloc(kvb->kv, kvb->size * sizeof(*kvb->kv)); |
|
|
|
|
|
|
|
|
|
for(i = kvb->used; i < kvb->size; i++) { |
|
|
|
|
kvb->kv[i] = calloc(1, sizeof(**kvb->kv)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
kvb->kv[kvb->used]->key = key; |
|
|
|
|
kvb->kv[kvb->used]->value = strdup(value); |
|
|
|
|
|
|
|
|
|
kvb->used++; |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void keyvalue_buffer_free(keyvalue_buffer *kvb) { |
|
|
|
|
size_t i; |
|
|
|
|
|
|
|
|
|
for (i = 0; i < kvb->size; i++) { |
|
|
|
|
if (kvb->kv[i]->value) free(kvb->kv[i]->value); |
|
|
|
|
free(kvb->kv[i]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (kvb->kv) free(kvb->kv); |
|
|
|
|
|
|
|
|
|
free(kvb); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s_keyvalue_buffer *s_keyvalue_buffer_init(void) { |
|
|
|
|
s_keyvalue_buffer *kvb; |
|
|
|
|
|
|
|
|
|
kvb = calloc(1, sizeof(*kvb)); |
|
|
|
|
|
|
|
|
|
return kvb; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int s_keyvalue_buffer_append(s_keyvalue_buffer *kvb, const char *key, const char *value) { |
|
|
|
|
size_t i; |
|
|
|
|
if (kvb->size == 0) { |
|
|
|
|
kvb->size = 4; |
|
|
|
|
kvb->used = 0; |
|
|
|
|
|
|
|
|
|
kvb->kv = malloc(kvb->size * sizeof(*kvb->kv)); |
|
|
|
|
|
|
|
|
|
for(i = 0; i < kvb->size; i++) { |
|
|
|
|
kvb->kv[i] = calloc(1, sizeof(**kvb->kv)); |
|
|
|
|
} |
|
|
|
|
} else if (kvb->used == kvb->size) { |
|
|
|
|
kvb->size += 4; |
|
|
|
|
|
|
|
|
|
kvb->kv = realloc(kvb->kv, kvb->size * sizeof(*kvb->kv)); |
|
|
|
|
|
|
|
|
|
for(i = kvb->used; i < kvb->size; i++) { |
|
|
|
|
kvb->kv[i] = calloc(1, sizeof(**kvb->kv)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
kvb->kv[kvb->used]->key = key ? strdup(key) : NULL; |
|
|
|
|
kvb->kv[kvb->used]->value = strdup(value); |
|
|
|
|
|
|
|
|
|
kvb->used++; |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void s_keyvalue_buffer_free(s_keyvalue_buffer *kvb) { |
|
|
|
|
size_t i; |
|
|
|
|
|
|
|
|
|
for (i = 0; i < kvb->size; i++) { |
|
|
|
|
if (kvb->kv[i]->key) free(kvb->kv[i]->key); |
|
|
|
|
if (kvb->kv[i]->value) free(kvb->kv[i]->value); |
|
|
|
|
free(kvb->kv[i]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (kvb->kv) free(kvb->kv); |
|
|
|
|
|
|
|
|
|
free(kvb); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
httpauth_keyvalue_buffer *httpauth_keyvalue_buffer_init(void) { |
|
|
|
|
httpauth_keyvalue_buffer *kvb; |
|
|
|
|
|
|
|
|
|
kvb = calloc(1, sizeof(*kvb)); |
|
|
|
|
|
|
|
|
|
return kvb; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int httpauth_keyvalue_buffer_append(httpauth_keyvalue_buffer *kvb, const char *key, const char *realm, httpauth_type type) { |
|
|
|
|
size_t i; |
|
|
|
|
if (kvb->size == 0) { |
|
|
|
|
kvb->size = 4; |
|
|
|
|
|
|
|
|
|
kvb->kv = malloc(kvb->size * sizeof(*kvb->kv)); |
|
|
|
|
|
|
|
|
|
for(i = 0; i < kvb->size; i++) { |
|
|
|
|
kvb->kv[i] = calloc(1, sizeof(**kvb->kv)); |
|
|
|
|
} |
|
|
|
|
} else if (kvb->used == kvb->size) { |
|
|
|
|
kvb->size += 4; |
|
|
|
|
|
|
|
|
|
kvb->kv = realloc(kvb->kv, kvb->size * sizeof(*kvb->kv)); |
|
|
|
|
|
|
|
|
|
for(i = kvb->used; i < kvb->size; i++) { |
|
|
|
|
kvb->kv[i] = calloc(1, sizeof(**kvb->kv)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
kvb->kv[kvb->used]->key = strdup(key); |
|
|
|
|
kvb->kv[kvb->used]->realm = strdup(realm); |
|
|
|
|
kvb->kv[kvb->used]->type = type; |
|
|
|
|
|
|
|
|
|
kvb->used++; |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void httpauth_keyvalue_buffer_free(httpauth_keyvalue_buffer *kvb) { |
|
|
|
|
size_t i; |
|
|
|
|
|
|
|
|
|
for (i = 0; i < kvb->size; i++) { |
|
|
|
|
if (kvb->kv[i]->key) free(kvb->kv[i]->key); |
|
|
|
|
if (kvb->kv[i]->realm) free(kvb->kv[i]->realm); |
|
|
|
|
free(kvb->kv[i]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (kvb->kv) free(kvb->kv); |
|
|
|
|
|
|
|
|
|
free(kvb); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const char *get_http_version_name(int i) { |
|
|
|
|
return keyvalue_get_value(http_versions, i); |
|
|
|
@ -325,6 +172,7 @@ pcre_keyvalue_buffer *pcre_keyvalue_buffer_init(void) {
|
|
|
|
|
pcre_keyvalue_buffer *kvb; |
|
|
|
|
|
|
|
|
|
kvb = calloc(1, sizeof(*kvb)); |
|
|
|
|
force_assert(NULL != kvb); |
|
|
|
|
|
|
|
|
|
return kvb; |
|
|
|
|
} |
|
|
|
@ -345,17 +193,21 @@ int pcre_keyvalue_buffer_append(server *srv, pcre_keyvalue_buffer *kvb, const ch
|
|
|
|
|
kvb->used = 0; |
|
|
|
|
|
|
|
|
|
kvb->kv = malloc(kvb->size * sizeof(*kvb->kv)); |
|
|
|
|
force_assert(NULL != kvb->kv); |
|
|
|
|
|
|
|
|
|
for(i = 0; i < kvb->size; i++) { |
|
|
|
|
kvb->kv[i] = calloc(1, sizeof(**kvb->kv)); |
|
|
|
|
force_assert(NULL != kvb->kv[i]); |
|
|
|
|
} |
|
|
|
|
} else if (kvb->used == kvb->size) { |
|
|
|
|
kvb->size += 4; |
|
|
|
|
|
|
|
|
|
kvb->kv = realloc(kvb->kv, kvb->size * sizeof(*kvb->kv)); |
|
|
|
|
force_assert(NULL != kvb->kv); |
|
|
|
|
|
|
|
|
|
for(i = kvb->used; i < kvb->size; i++) { |
|
|
|
|
kvb->kv[i] = calloc(1, sizeof(**kvb->kv)); |
|
|
|
|
force_assert(NULL != kvb->kv[i]); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|