drogonframework/drogon

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

Open

#2,276 建立於 2025年3月10日

在 GitHub 查看
 (2 留言) (0 反應) (0 負責人)C++ (1,014 fork)batch import
help wanted

倉庫指標

Star
 (10,462 star)
PR 合併指標
 (平均合併 5天 16小時) (30 天內合併 3 個 PR)

描述

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.

貢獻者指南