Lines Matching defs:stream

136  * All about the H3 internals of a stream
146 uint64_t error3; /* HTTP/3 stream error code */
167 struct stream_ctx *stream = H3_STREAM_CTX(data);
169 if(stream)
172 stream = calloc(1, sizeof(*stream));
173 if(!stream)
176 H3_STREAM_LCTX(data) = stream;
177 stream->req = ZERO_NULL;
178 msh3_lock_initialize(&stream->recv_lock);
179 Curl_bufq_init2(&stream->recvbuf, H3_STREAM_CHUNK_SIZE,
187 struct stream_ctx *stream = H3_STREAM_CTX(data);
190 if(stream) {
192 Curl_bufq_free(&stream->recvbuf);
193 free(stream);
199 struct stream_ctx *stream)
205 if(stream && !stream->upload_done)
216 struct stream_ctx *stream = H3_STREAM_CTX(data);
221 if(stream && !stream->upload_done)
314 struct stream_ctx *stream = H3_STREAM_CTX(data);
318 if(!stream)
321 nwritten = Curl_bufq_write(&stream->recvbuf, mem, memlen, &result);
340 struct stream_ctx *stream = H3_STREAM_CTX(data);
344 if(!stream || stream->recv_header_complete) {
348 msh3_lock_acquire(&stream->recv_lock);
355 DEBUGASSERT(!stream->firstheader);
356 stream->status_code = decode_status_code(hd->Value, hd->ValueLength);
357 DEBUGASSERT(stream->status_code != -1);
359 stream->status_code);
362 stream->recv_error = result;
363 stream->firstheader = TRUE;
367 DEBUGASSERT(stream->firstheader);
376 stream->recv_error = result;
380 drain_stream_from_other_thread(data, stream);
381 msh3_lock_release(&stream->recv_lock);
389 struct stream_ctx *stream = H3_STREAM_CTX(data);
399 if(!stream)
402 msh3_lock_acquire(&stream->recv_lock);
404 if(!stream->recv_header_complete) {
407 stream->recv_error = result;
410 stream->recv_header_complete = true;
415 stream->recv_error = result;
420 msh3_lock_release(&stream->recv_lock);
428 struct stream_ctx *stream = H3_STREAM_CTX(data);
431 if(!stream)
433 msh3_lock_acquire(&stream->recv_lock);
434 stream->closed = TRUE;
435 stream->recv_header_complete = true;
437 stream->error3 = error;
439 stream->reset = TRUE;
440 msh3_lock_release(&stream->recv_lock);
447 struct stream_ctx *stream = H3_STREAM_CTX(data);
449 if(!stream)
452 (void)stream;
459 struct stream_ctx *stream = H3_STREAM_CTX(data);
460 if(!stream)
463 (void)stream;
471 struct stream_ctx *stream = H3_STREAM_CTX(data);
474 if(!stream) {
479 if(stream->reset) {
480 failf(data, "HTTP/3 stream reset by server");
485 else if(stream->error3) {
486 failf(data, "HTTP/3 stream was not closed cleanly: (error %zd)",
487 (ssize_t)stream->error3);
504 struct stream_ctx *stream = H3_STREAM_CTX(data);
510 if(stream && stream->req && !stream->closed) {
521 struct stream_ctx *stream = H3_STREAM_CTX(data);
526 if(!stream) {
533 msh3_lock_acquire(&stream->recv_lock);
535 if(stream->recv_error) {
537 *err = stream->recv_error;
543 if(!Curl_bufq_is_empty(&stream->recvbuf)) {
544 nread = Curl_bufq_read(&stream->recvbuf,
550 if(stream->closed)
553 else if(stream->closed) {
563 msh3_lock_release(&stream->recv_lock);
573 struct stream_ctx *stream = H3_STREAM_CTX(data);
588 DEBUGASSERT(stream);
591 if(!stream->req) {
634 stream->upload_done = TRUE;
639 stream->req = MsH3RequestOpen(ctx->qconn, &msh3_request_if, data,
643 if(!stream->req) {
659 if(!MsH3RequestSend(stream->req, MSH3_REQUEST_FLAG_NONE, buf,
660 (uint32_t)len, stream)) {
685 struct stream_ctx *stream = H3_STREAM_CTX(data);
689 if(stream && ctx->sock[SP_LOCAL] != CURL_SOCKET_BAD) {
690 if(stream->recv_error) {
694 else if(stream->req) {
704 struct stream_ctx *stream = H3_STREAM_CTX(data);
711 if(stream && stream->req) {
712 msh3_lock_acquire(&stream->recv_lock);
714 Curl_bufq_len(&stream->recvbuf));
715 pending = !Curl_bufq_is_empty(&stream->recvbuf);
716 msh3_lock_release(&stream->recv_lock);
757 struct stream_ctx *stream = H3_STREAM_CTX(data);
777 if(stream) {
778 stream->upload_done = TRUE;
779 if(stream->req) {
781 if(!MsH3RequestSend(stream->req, MSH3_REQUEST_FLAG_FIN,