Remove unused functions/macros

This commit is contained in:
Tatsuhiro Tsujikawa 2013-09-07 15:32:45 +09:00
parent 3390c2356e
commit 2c127b5cb6
5 changed files with 4 additions and 249 deletions

View File

@ -32,21 +32,6 @@
#include "nghttp2_helper.h" #include "nghttp2_helper.h"
#include "nghttp2_net.h" #include "nghttp2_net.h"
/* This is SPDY stuff, and will be removed after header compression is
implemented */
static size_t nghttp2_frame_get_len_size(void)
{
return 2;
}
static uint8_t* nghttp2_pack_str(uint8_t *buf, const char *str, size_t len)
{
nghttp2_frame_put_nv_len(buf, len);
buf += nghttp2_frame_get_len_size();
memcpy(buf, str, len);
return buf+len;
}
int nghttp2_frame_is_data_frame(uint8_t *head) int nghttp2_frame_is_data_frame(uint8_t *head)
{ {
return head[2] == 0; return head[2] == 0;
@ -68,122 +53,6 @@ void nghttp2_frame_unpack_frame_hd(nghttp2_frame_hd *hd, const uint8_t* buf)
hd->stream_id = nghttp2_get_uint32(&buf[4]) & NGHTTP2_STREAM_ID_MASK; hd->stream_id = nghttp2_get_uint32(&buf[4]) & NGHTTP2_STREAM_ID_MASK;
} }
ssize_t nghttp2_frame_pack_nv(uint8_t *buf, char **nv, size_t len_size)
{
int i;
uint8_t *bufp = buf+len_size;
uint32_t num_nv = 0;
const char *prev = "";
uint8_t *cur_vallen_buf = NULL;
uint32_t cur_vallen = 0;
size_t prevkeylen = 0;
size_t prevvallen = 0;
for(i = 0; nv[i]; i += 2) {
const char *key = nv[i];
const char *val = nv[i+1];
size_t keylen = strlen(key);
size_t vallen = strlen(val);
if(prevkeylen == keylen && memcmp(prev, key, keylen) == 0) {
if(vallen) {
if(prevvallen) {
/* Join previous value, with NULL character */
cur_vallen += vallen+1;
nghttp2_frame_put_nv_len(cur_vallen_buf, cur_vallen);
*bufp = '\0';
++bufp;
memcpy(bufp, val, vallen);
bufp += vallen;
} else {
/* Previous value is empty. In this case, drop the
previous. */
cur_vallen += vallen;
nghttp2_frame_put_nv_len(cur_vallen_buf, cur_vallen);
memcpy(bufp, val, vallen);
bufp += vallen;
}
}
} else {
++num_nv;
bufp = nghttp2_pack_str(bufp, key, keylen);
prev = key;
cur_vallen_buf = bufp;
cur_vallen = vallen;
prevkeylen = keylen;
prevvallen = vallen;
bufp = nghttp2_pack_str(bufp, val, vallen);
}
}
nghttp2_frame_put_nv_len(buf, num_nv);
return bufp-buf;
}
void nghttp2_frame_nv_del(char **nv)
{
free(nv);
}
char** nghttp2_frame_nv_copy(const char **nv)
{
int i;
char *buf;
char **idx, *data;
size_t buflen = 0;
for(i = 0; nv[i]; ++i) {
buflen += strlen(nv[i])+1;
}
buflen += (i+1)*sizeof(char*);
buf = malloc(buflen);
if(buf == NULL) {
return NULL;
}
idx = (char**)buf;
data = buf+(i+1)*sizeof(char*);
for(i = 0; nv[i]; ++i) {
size_t len = strlen(nv[i])+1;
memcpy(data, nv[i], len);
*idx++ = data;
data += len;
}
*idx = NULL;
return (char**)buf;
}
static int nghttp2_string_compar(const void *lhs, const void *rhs)
{
return strcmp(*(char **)lhs, *(char **)rhs);
}
void nghttp2_frame_nv_sort(char **nv)
{
int n;
for(n = 0; nv[n]; ++n);
qsort(nv, n/2, 2*sizeof(char*), nghttp2_string_compar);
}
void nghttp2_frame_nv_downcase(char **nv)
{
int i, j;
for(i = 0; nv[i]; i += 2) {
for(j = 0; nv[i][j] != '\0'; ++j) {
if('A' <= nv[i][j] && nv[i][j] <= 'Z') {
nv[i][j] += 'a'-'A';
}
}
}
}
char** nghttp2_frame_nv_norm_copy(const char **nv)
{
char **nv_copy;
nv_copy = nghttp2_frame_nv_copy(nv);
if(nv_copy != NULL) {
nghttp2_frame_nv_downcase(nv_copy);
nghttp2_frame_nv_sort(nv_copy);
}
return nv_copy;
}
static void nghttp2_frame_set_hd(nghttp2_frame_hd *hd, uint16_t length, static void nghttp2_frame_set_hd(nghttp2_frame_hd *hd, uint16_t length,
uint8_t type, uint8_t flags, uint8_t type, uint8_t flags,
int32_t stream_id) int32_t stream_id)
@ -326,6 +195,10 @@ void nghttp2_frame_data_init(nghttp2_data *frame, uint8_t flags,
void nghttp2_frame_data_free(nghttp2_data *frame) void nghttp2_frame_data_free(nghttp2_data *frame)
{} {}
/*
* Returns the offset of the name/header block in the HEADERS frame,
* including frame header length.
*/
static size_t headers_nv_offset(nghttp2_headers *frame) static size_t headers_nv_offset(nghttp2_headers *frame)
{ {
if(frame->hd.flags & NGHTTP2_FLAG_PRIORITY) { if(frame->hd.flags & NGHTTP2_FLAG_PRIORITY) {
@ -711,22 +584,6 @@ nghttp2_settings_entry* nghttp2_frame_iv_copy(const nghttp2_settings_entry *iv,
return iv_copy; return iv_copy;
} }
ssize_t nghttp2_frame_nv_offset(const uint8_t *head)
{
switch(head[2]) {
case NGHTTP2_HEADERS:
if(head[3] & NGHTTP2_FLAG_PRIORITY) {
return NGHTTP2_FRAME_HEAD_LENGTH + 4;
} else {
return NGHTTP2_FRAME_HEAD_LENGTH;
}
case NGHTTP2_PUSH_PROMISE:
return NGHTTP2_FRAME_HEAD_LENGTH + 4;
default:
return -1;
}
}
int nghttp2_frame_nv_check_null(const char **nv) int nghttp2_frame_nv_check_null(const char **nv)
{ {
size_t i; size_t i;

View File

@ -64,9 +64,6 @@ typedef enum {
NGHTTP2_CAT_DATA NGHTTP2_CAT_DATA
} nghttp2_frame_category; } nghttp2_frame_category;
#define nghttp2_frame_get_nv_len(RED) nghttp2_buffer_reader_uint16(RED)
#define nghttp2_frame_put_nv_len(OUT, VAL) nghttp2_put_uint16be(OUT, VAL)
/** /**
* @struct * @struct
* The DATA frame. It has the following members: * The DATA frame. It has the following members:
@ -434,24 +431,6 @@ int nghttp2_frame_unpack_window_update(nghttp2_window_update *frame,
const uint8_t *payload, const uint8_t *payload,
size_t payloadlen); size_t payloadlen);
/*
* Returns number of bytes to pack name/value pairs |nv|. This
* function expects |nv| is sorted in ascending order of key.
* |len_size| is the number of bytes in length of name/value pair and
* it must be 2 or 4.
*
* This function can handles duplicate keys and concatenation of thier
* values with '\0'.
*/
size_t nghttp2_frame_count_nv_space(char **nv, size_t len_size);
/*
* Packs name/value pairs in |nv| in |buf|. |buf| must have at least
* nghttp2_frame_count_nv_space(nv) bytes. |len_size| is the number
* of bytes in length of name/value pair and it must be 2 or 4.
*/
ssize_t nghttp2_frame_pack_nv(uint8_t *buf, char **nv, size_t len_size);
/* /*
* Initializes HEADERS frame |frame| with given values. |frame| takes * Initializes HEADERS frame |frame| with given values. |frame| takes
* ownership of |nva|, so caller must not free it. If |stream_id| is * ownership of |nva|, so caller must not free it. If |stream_id| is
@ -531,39 +510,6 @@ void nghttp2_frame_data_init(nghttp2_data *frame, uint8_t flags,
void nghttp2_frame_data_free(nghttp2_data *frame); void nghttp2_frame_data_free(nghttp2_data *frame);
/*
* Deallocates memory of name/value pair |nv|.
*/
void nghttp2_frame_nv_del(char **nv);
/*
* Makes a deep copy of |nv| and returns the copy. This function
* returns the pointer to the copy if it succeeds, or NULL. To free
* allocated memory, use nghttp2_frame_nv_del().
*/
char** nghttp2_frame_nv_copy(const char **nv);
/*
* Sorts |nv| in the ascending order of name.
*/
void nghttp2_frame_nv_sort(char **nv);
/*
* Makes names in |nv| lower cased.
*/
void nghttp2_frame_nv_downcase(char **nv);
/*
* This function first makes a copy of |nv| using
* nghttp2_frame_nv_copy(). If it succeeds, then call
* nghttp2_frame_nv_downcase() and nghttp2_frame_nv_sort() with the
* copied name/value pairs.
*
* This function returns the copied name/value pairs if it succeeds,
* or NULL.
*/
char** nghttp2_frame_nv_norm_copy(const char **nv);
/* /*
* Makes copy of |iv| and return the copy. The |niv| is the number of * Makes copy of |iv| and return the copy. The |niv| is the number of
* entries in |iv|. This function returns the pointer to the copy if * entries in |iv|. This function returns the pointer to the copy if
@ -572,13 +518,6 @@ char** nghttp2_frame_nv_norm_copy(const char **nv);
nghttp2_settings_entry* nghttp2_frame_iv_copy(const nghttp2_settings_entry *iv, nghttp2_settings_entry* nghttp2_frame_iv_copy(const nghttp2_settings_entry *iv,
size_t niv); size_t niv);
/*
* Returns the offset of the name/header block in the frame, including
* frame header. The |head| is frame header. If the indicated frame
* type does not have header block, this function returns -1.
*/
ssize_t nghttp2_frame_nv_offset(const uint8_t *head);
/* /*
* Checks names are not empty string and do not contain control * Checks names are not empty string and do not contain control
* characters and values are not NULL. * characters and values are not NULL.

View File

@ -196,9 +196,6 @@ int main(int argc, char* argv[])
test_nghttp2_session_data_backoff_by_high_pri_frame) || test_nghttp2_session_data_backoff_by_high_pri_frame) ||
!CU_add_test(pSuite, "pack_settings_payload", !CU_add_test(pSuite, "pack_settings_payload",
test_nghttp2_pack_settings_payload) || test_nghttp2_pack_settings_payload) ||
!CU_add_test(pSuite, "frame_nv_sort", test_nghttp2_frame_nv_sort) ||
!CU_add_test(pSuite, "frame_nv_downcase",
test_nghttp2_frame_nv_downcase) ||
!CU_add_test(pSuite, "frame_nv_check_null", !CU_add_test(pSuite, "frame_nv_check_null",
test_nghttp2_frame_nv_check_null) || test_nghttp2_frame_nv_check_null) ||
!CU_add_test(pSuite, "frame_pack_headers", !CU_add_test(pSuite, "frame_pack_headers",

View File

@ -44,42 +44,6 @@ static const char *headers[] = {
NULL NULL
}; };
void test_nghttp2_frame_nv_sort(void)
{
char *nv[7];
nv[0] = (char*)"version";
nv[1] = (char*)"HTTP/1.1";
nv[2] = (char*)"method";
nv[3] = (char*)"GET";
nv[4] = (char*)"scheme";
nv[5] = (char*)"https";
nv[6] = NULL;
nghttp2_frame_nv_sort(nv);
CU_ASSERT(strcmp("method", nv[0]) == 0);
CU_ASSERT(strcmp("GET", nv[1]) == 0);
CU_ASSERT(strcmp("scheme", nv[2]) == 0);
CU_ASSERT(strcmp("https", nv[3]) == 0);
CU_ASSERT(strcmp("version", nv[4]) == 0);
CU_ASSERT(strcmp("HTTP/1.1", nv[5]) == 0);
}
void test_nghttp2_frame_nv_downcase(void)
{
const char *nv_src[] = {
"VERSION", "HTTP/1.1",
"Content-Length", "1000000007",
NULL
};
char **nv;
nv = nghttp2_frame_nv_copy(nv_src);
nghttp2_frame_nv_downcase(nv);
CU_ASSERT(0 == strcmp("version", nv[0]));
CU_ASSERT(0 == strcmp("HTTP/1.1", nv[1]));
CU_ASSERT(0 == strcmp("content-length", nv[2]));
CU_ASSERT(0 == strcmp("1000000007", nv[3]));
nghttp2_frame_nv_del(nv);
}
void test_nghttp2_frame_nv_check_null(void) void test_nghttp2_frame_nv_check_null(void)
{ {
const char *headers1[] = { "path", "/", "host", "a", NULL }; const char *headers1[] = { "path", "/", "host", "a", NULL };

View File

@ -25,8 +25,6 @@
#ifndef NGHTTP2_FRAME_TEST_H #ifndef NGHTTP2_FRAME_TEST_H
#define NGHTTP2_FRAME_TEST_H #define NGHTTP2_FRAME_TEST_H
void test_nghttp2_frame_nv_sort(void);
void test_nghttp2_frame_nv_downcase(void);
void test_nghttp2_frame_nv_check_null(void); void test_nghttp2_frame_nv_check_null(void);
void test_nghttp2_frame_pack_headers(void); void test_nghttp2_frame_pack_headers(void);
void test_nghttp2_frame_pack_headers_frame_too_large(void); void test_nghttp2_frame_pack_headers_frame_too_large(void);