diff options
Diffstat (limited to 'lib/http2.c')
| -rw-r--r-- | lib/http2.c | 29 | 
1 files changed, 15 insertions, 14 deletions
| diff --git a/lib/http2.c b/lib/http2.c index 9e782a5aa..c2e90613a 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -386,8 +386,8 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,                 stream->memlen));    if(nread < len) { -    stream->data = data + nread; -    stream->datalen = len - nread; +    stream->pausedata = data + nread; +    stream->pauselen = len - nread;      DEBUGF(infof(data_s, "NGHTTP2_ERR_PAUSE - out of buffer\n"));      conn->proto.httpc.pause_stream_id = stream_id;      return NGHTTP2_ERR_PAUSE; @@ -865,24 +865,24 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,        stream->mem = mem;      }    } -  else if(stream->data) { -    nread = MIN(len, stream->datalen); -    memcpy(mem, stream->data, nread); +  else if(stream->pausedata) { +    nread = MIN(len, stream->pauselen); +    memcpy(mem, stream->pausedata, nread); -    stream->data += nread; -    stream->datalen -= nread; +    stream->pausedata += nread; +    stream->pauselen -= nread;      infof(data, "%zu data bytes written\n", nread); -    if(stream->datalen == 0) { +    if(stream->pauselen == 0) {        DEBUGF(infof(data, "Unpaused by stream %x\n", stream->stream_id));        assert(httpc->pause_stream_id == stream->stream_id);        httpc->pause_stream_id = 0; -      stream->data = NULL; -      stream->datalen = 0; +      stream->pausedata = NULL; +      stream->pauselen = 0;      } -    infof(data, "http2_recv: Got %d bytes from stream->data\n", -          (int)nread); +    infof(data, "http2_recv: returns %zd bytes from stream->data\n", +          nread);      return nread;    }    else if(httpc->pause_stream_id) { @@ -967,7 +967,7 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,    }    if(stream->memlen) {      ssize_t retlen = stream->memlen; -    infof(data, "http2_recv: returns %d for stream %x (%zu/%zu)\n", +    infof(data, "http2_recv: returns %zd for stream %x (%zu/%zu)\n",            retlen, stream->stream_id,            len, stream->len);      data->state.drain = 0; /* this stream is hereby drained */ @@ -981,7 +981,8 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,      return http2_handle_stream_close(httpc, data, stream, err);    }    *err = CURLE_AGAIN; -  DEBUGF(infof(data, "http2_recv returns -1, AGAIN\n")); +  DEBUGF(infof(data, "http2_recv returns AGAIN for stream %x\n", +               stream->stream_id));    return -1;  } | 
