drogonframework/drogon

Header "connection: close" disconnects the client before Response Stream is started

Open

#2.276 aberto em 10 de mar. de 2025

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)C++ (1.014 forks)batch import
help wanted

Métricas do repositório

Stars
 (10.462 stars)
Métricas de merge de PR
 (Mesclagem média 2d 2h) (7 fundiu PRs em 30d)

Description

Describe the bug

In our project we use Drogon for HTTP response streaming. However, when client includes connection header that is not keep-alive, response stream is immediaitely closed.

Source code: https://github.com/drogonframework/drogon/blob/cbf63f8fc4d849bbb82eeb1c83fcf8ff953f19f3/lib/src/HttpServer.cc#L981-L990

It is common practice to use connection: close to indicate that connection should be closed after processing is finished*, meaning - after HTTP response stream is done.

In our setup, we needed to patch drogon like this: https://github.com/openvinotoolkit/model_server/pull/3113/commits/8ca2918c04ae9fab77ad157dcd23673971d84420

To Reproduce Steps to reproduce the behavior:

  1. Start drogon with streaming response endpoint defined
  2. Request with any client including header connection: close
  3. Request is immediately rejected

Expected behavior Connection is closed after response streaming is finished.

Desktop (please complete the following information):

  • OS: ubuntu, redhat, windows
  • Client: any

More context We are using Continue VSCode plugin as a client for code completions: https://github.com/continuedev/continue We use drogon to serve http streaming (code completions), however, this plugin (client) sends connection: close header.

Guia do colaborador