Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
nghttp2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
nghttp2
Commits
2c127b5c
Commit
2c127b5c
authored
Sep 07, 2013
by
Tatsuhiro Tsujikawa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove unused functions/macros
parent
3390c235
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
4 additions
and
249 deletions
+4
-249
lib/nghttp2_frame.c
lib/nghttp2_frame.c
+4
-147
lib/nghttp2_frame.h
lib/nghttp2_frame.h
+0
-61
tests/main.c
tests/main.c
+0
-3
tests/nghttp2_frame_test.c
tests/nghttp2_frame_test.c
+0
-36
tests/nghttp2_frame_test.h
tests/nghttp2_frame_test.h
+0
-2
No files found.
lib/nghttp2_frame.c
View file @
2c127b5c
...
@@ -32,21 +32,6 @@
...
@@ -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)
...
@@ -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,
...
@@ -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,
...
@@ -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
;
...
...
lib/nghttp2_frame.h
View file @
2c127b5c
...
@@ -64,9 +64,6 @@ typedef enum {
...
@@ -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,
...
@@ -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,
...
@@ -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);
...
@@ -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.
...
...
tests/main.c
View file @
2c127b5c
...
@@ -196,9 +196,6 @@ int main(int argc, char* argv[])
...
@@ -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"
,
...
...
tests/nghttp2_frame_test.c
View file @
2c127b5c
...
@@ -44,42 +44,6 @@ static const char *headers[] = {
...
@@ -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
};
...
...
tests/nghttp2_frame_test.h
View file @
2c127b5c
...
@@ -25,8 +25,6 @@
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment