Define constant for nv pair offset. Defined SPDYLAY_PROTO_VERSION.
This commit is contained in:
parent
1c0ec66a2b
commit
74673013ae
|
@ -35,6 +35,9 @@ extern "C" {
|
||||||
struct spdylay_session;
|
struct spdylay_session;
|
||||||
typedef struct spdylay_session spdylay_session;
|
typedef struct spdylay_session spdylay_session;
|
||||||
|
|
||||||
|
/* SPDY protocol version 2 */
|
||||||
|
#define SPDYLAY_PROTO_VERSION 2
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SPDYLAY_ERR_INVALID_ARGUMENT = -501,
|
SPDYLAY_ERR_INVALID_ARGUMENT = -501,
|
||||||
SPDYLAY_ERR_ZLIB = -502,
|
SPDYLAY_ERR_ZLIB = -502,
|
||||||
|
|
|
@ -342,7 +342,7 @@ void spdylay_frame_syn_stream_init(spdylay_syn_stream *frame, uint8_t flags,
|
||||||
uint8_t pri, char **nv)
|
uint8_t pri, char **nv)
|
||||||
{
|
{
|
||||||
memset(frame, 0, sizeof(spdylay_syn_stream));
|
memset(frame, 0, sizeof(spdylay_syn_stream));
|
||||||
frame->hd.version = 2;
|
frame->hd.version = SPDYLAY_PROTO_VERSION;
|
||||||
frame->hd.type = SPDYLAY_SYN_STREAM;
|
frame->hd.type = SPDYLAY_SYN_STREAM;
|
||||||
frame->hd.flags = flags;
|
frame->hd.flags = flags;
|
||||||
frame->stream_id = stream_id;
|
frame->stream_id = stream_id;
|
||||||
|
@ -361,7 +361,7 @@ void spdylay_frame_syn_reply_init(spdylay_syn_reply *frame, uint8_t flags,
|
||||||
int32_t stream_id, char **nv)
|
int32_t stream_id, char **nv)
|
||||||
{
|
{
|
||||||
memset(frame, 0, sizeof(spdylay_syn_reply));
|
memset(frame, 0, sizeof(spdylay_syn_reply));
|
||||||
frame->hd.version = 2;
|
frame->hd.version = SPDYLAY_PROTO_VERSION;
|
||||||
frame->hd.type = SPDYLAY_SYN_REPLY;
|
frame->hd.type = SPDYLAY_SYN_REPLY;
|
||||||
frame->hd.flags = flags;
|
frame->hd.flags = flags;
|
||||||
frame->stream_id = stream_id;
|
frame->stream_id = stream_id;
|
||||||
|
@ -378,7 +378,7 @@ void spdylay_frame_headers_init(spdylay_headers *frame, uint8_t flags,
|
||||||
int32_t stream_id, char **nv)
|
int32_t stream_id, char **nv)
|
||||||
{
|
{
|
||||||
memset(frame, 0, sizeof(spdylay_headers));
|
memset(frame, 0, sizeof(spdylay_headers));
|
||||||
frame->hd.version = 2;
|
frame->hd.version = SPDYLAY_PROTO_VERSION;
|
||||||
frame->hd.type = SPDYLAY_HEADERS;
|
frame->hd.type = SPDYLAY_HEADERS;
|
||||||
frame->hd.flags = flags;
|
frame->hd.flags = flags;
|
||||||
frame->stream_id = stream_id;
|
frame->stream_id = stream_id;
|
||||||
|
@ -395,7 +395,7 @@ void spdylay_frame_rst_stream_init(spdylay_rst_stream *frame,
|
||||||
int32_t stream_id, uint32_t status_code)
|
int32_t stream_id, uint32_t status_code)
|
||||||
{
|
{
|
||||||
memset(frame, 0, sizeof(spdylay_rst_stream));
|
memset(frame, 0, sizeof(spdylay_rst_stream));
|
||||||
frame->hd.version = 2;
|
frame->hd.version = SPDYLAY_PROTO_VERSION;
|
||||||
frame->hd.type = SPDYLAY_RST_STREAM;
|
frame->hd.type = SPDYLAY_RST_STREAM;
|
||||||
frame->hd.flags = 0;
|
frame->hd.flags = 0;
|
||||||
frame->hd.length = 8;
|
frame->hd.length = 8;
|
||||||
|
@ -417,18 +417,22 @@ void spdylay_frame_data_init(spdylay_data *frame, int32_t stream_id,
|
||||||
void spdylay_frame_data_free(spdylay_data *frame)
|
void spdylay_frame_data_free(spdylay_data *frame)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
#define SPDYLAY_SYN_STREAM_NV_OFFSET 18
|
||||||
|
|
||||||
ssize_t spdylay_frame_pack_syn_stream(uint8_t **buf_ptr,
|
ssize_t spdylay_frame_pack_syn_stream(uint8_t **buf_ptr,
|
||||||
spdylay_syn_stream *frame,
|
spdylay_syn_stream *frame,
|
||||||
spdylay_zlib *deflater)
|
spdylay_zlib *deflater)
|
||||||
{
|
{
|
||||||
uint8_t *framebuf = NULL;
|
uint8_t *framebuf = NULL;
|
||||||
ssize_t framelen;
|
ssize_t framelen;
|
||||||
framelen = spdylay_frame_alloc_pack_nv(&framebuf, frame->nv, 18, deflater);
|
framelen = spdylay_frame_alloc_pack_nv(&framebuf, frame->nv,
|
||||||
|
SPDYLAY_SYN_STREAM_NV_OFFSET,
|
||||||
|
deflater);
|
||||||
if(framelen < 0) {
|
if(framelen < 0) {
|
||||||
return framelen;
|
return framelen;
|
||||||
}
|
}
|
||||||
frame->hd.length = framelen-8;
|
frame->hd.length = framelen-SPDYLAY_FRAME_HEAD_LENGTH;
|
||||||
memset(framebuf, 0, 18);
|
memset(framebuf, 0, SPDYLAY_SYN_STREAM_NV_OFFSET);
|
||||||
/* pack ctrl header after length is determined */
|
/* pack ctrl header after length is determined */
|
||||||
spdylay_frame_pack_ctrl_hd(framebuf, &frame->hd);
|
spdylay_frame_pack_ctrl_hd(framebuf, &frame->hd);
|
||||||
spdylay_put_uint32be(&framebuf[8], frame->stream_id);
|
spdylay_put_uint32be(&framebuf[8], frame->stream_id);
|
||||||
|
@ -458,18 +462,21 @@ int spdylay_frame_unpack_syn_stream(spdylay_syn_stream *frame,
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SPDYLAY_SYN_REPLY_NV_OFFSET 14
|
||||||
|
|
||||||
ssize_t spdylay_frame_pack_syn_reply(uint8_t **buf_ptr,
|
ssize_t spdylay_frame_pack_syn_reply(uint8_t **buf_ptr,
|
||||||
spdylay_syn_reply *frame,
|
spdylay_syn_reply *frame,
|
||||||
spdylay_zlib *deflater)
|
spdylay_zlib *deflater)
|
||||||
{
|
{
|
||||||
uint8_t *framebuf = NULL;
|
uint8_t *framebuf = NULL;
|
||||||
ssize_t framelen;
|
ssize_t framelen;
|
||||||
framelen = spdylay_frame_alloc_pack_nv(&framebuf, frame->nv, 14, deflater);
|
framelen = spdylay_frame_alloc_pack_nv(&framebuf, frame->nv,
|
||||||
|
SPDYLAY_SYN_REPLY_NV_OFFSET, deflater);
|
||||||
if(framelen < 0) {
|
if(framelen < 0) {
|
||||||
return framelen;
|
return framelen;
|
||||||
}
|
}
|
||||||
frame->hd.length = framelen-8;
|
frame->hd.length = framelen-SPDYLAY_FRAME_HEAD_LENGTH;
|
||||||
memset(framebuf, 0, 14);
|
memset(framebuf, 0, SPDYLAY_SYN_REPLY_NV_OFFSET);
|
||||||
spdylay_frame_pack_ctrl_hd(framebuf, &frame->hd);
|
spdylay_frame_pack_ctrl_hd(framebuf, &frame->hd);
|
||||||
spdylay_put_uint32be(&framebuf[8], frame->stream_id);
|
spdylay_put_uint32be(&framebuf[8], frame->stream_id);
|
||||||
*buf_ptr = framebuf;
|
*buf_ptr = framebuf;
|
||||||
|
@ -482,6 +489,9 @@ int spdylay_frame_unpack_syn_reply(spdylay_syn_reply *frame,
|
||||||
spdylay_zlib *inflater)
|
spdylay_zlib *inflater)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
if(payloadlen < 8) {
|
||||||
|
return SPDYLAY_ERR_INVALID_FRAME;
|
||||||
|
}
|
||||||
spdylay_frame_unpack_ctrl_hd(&frame->hd, head);
|
spdylay_frame_unpack_ctrl_hd(&frame->hd, head);
|
||||||
frame->stream_id = spdylay_get_uint32(payload) & SPDYLAY_STREAM_ID_MASK;
|
frame->stream_id = spdylay_get_uint32(payload) & SPDYLAY_STREAM_ID_MASK;
|
||||||
r = spdylay_frame_alloc_unpack_nv(&frame->nv, payload+6, payloadlen-6,
|
r = spdylay_frame_alloc_unpack_nv(&frame->nv, payload+6, payloadlen-6,
|
||||||
|
@ -516,6 +526,9 @@ int spdylay_frame_unpack_headers(spdylay_headers *frame,
|
||||||
spdylay_zlib *inflater)
|
spdylay_zlib *inflater)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
if(payloadlen < 8) {
|
||||||
|
return SPDYLAY_ERR_INVALID_FRAME;
|
||||||
|
}
|
||||||
spdylay_frame_unpack_ctrl_hd(&frame->hd, head);
|
spdylay_frame_unpack_ctrl_hd(&frame->hd, head);
|
||||||
frame->stream_id = spdylay_get_uint32(payload) & SPDYLAY_STREAM_ID_MASK;
|
frame->stream_id = spdylay_get_uint32(payload) & SPDYLAY_STREAM_ID_MASK;
|
||||||
r = spdylay_frame_alloc_unpack_nv(&frame->nv, payload+6, payloadlen-6,
|
r = spdylay_frame_alloc_unpack_nv(&frame->nv, payload+6, payloadlen-6,
|
||||||
|
|
Loading…
Reference in New Issue