h2s->st = H2_SS_HREM;
else
h2s_close(h2s);
- h2s->cs->flags |= CS_FL_REOS;
+ if (h2s->cs)
+ h2s->cs->flags |= CS_FL_REOS;
}
/* update the max stream ID if the request is being processed */
if (h2c->dff & H2_F_HEADERS_END_STREAM) {
h2s->flags |= H2_SF_ES_RCVD;
- h2s->cs->flags |= CS_FL_REOS;
+ if (h2s->cs)
+ h2s->cs->flags |= CS_FL_REOS;
}
- if (h2s->cs->flags & CS_FL_ERROR && h2s->st < H2_SS_ERROR)
+ if (h2s->cs && h2s->cs->flags & CS_FL_ERROR && h2s->st < H2_SS_ERROR)
h2s->st = H2_SS_ERROR;
- else if (h2s->cs->flags & CS_FL_REOS && h2s->st == H2_SS_OPEN)
+ else if (h2s->cs && h2s->cs->flags & CS_FL_REOS && h2s->st == H2_SS_OPEN)
h2s->st = H2_SS_HREM;
- else if (h2s->cs->flags & CS_FL_REOS && h2s->st == H2_SS_HLOC)
+ else if ((!h2s || h2s->cs->flags & CS_FL_REOS) && h2s->st == H2_SS_HLOC)
h2s_close(h2s);
return h2s;
h2s_close(h2s);
h2s->flags |= H2_SF_ES_RCVD;
- h2s->cs->flags |= CS_FL_REOS;
+ if (h2s->cs)
+ h2s->cs->flags |= CS_FL_REOS;
if (h2s->flags & H2_SF_DATA_CLEN && h2s->body_len) {
/* RFC7540#8.1.2 */
if (h2c->dff & H2_F_DATA_END_STREAM) {
h2s->flags |= H2_SF_ES_RCVD;
- h2s->cs->flags |= CS_FL_REOS;
+ if (h2s->cs)
+ h2s->cs->flags |= CS_FL_REOS;
}
if (htx)
htx_to_buf(htx, csbuf);
}
/* we may need to add END_STREAM */
- if (((h1m->flags & H1_MF_CLEN) && !h1m->body_len) || h2s->cs->flags & CS_FL_SHW)
+ if (((h1m->flags & H1_MF_CLEN) && !h1m->body_len) || !h2s->cs || h2s->cs->flags & CS_FL_SHW)
es_now = 1;
/* update the frame's size */
(h2s->status >= 200 || h2s->status == 101))
es_now = 1;
- if (h2s->cs->flags & CS_FL_SHW)
+ if (!h2s->cs || h2s->cs->flags & CS_FL_SHW)
es_now = 1;
/* update the frame's size */
if (sl->flags & HTX_SL_F_BODYLESS)
es_now = 1;
- if (h2s->cs->flags & CS_FL_SHW)
+ if (!h2s->cs || h2s->cs->flags & CS_FL_SHW)
es_now = 1;
/* update the frame's size */