]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
server : handle unsuccessful sink.write in chunked stream provider (#21478)
authorlainon1 <redacted>
Mon, 6 Apr 2026 12:03:02 +0000 (13:03 +0100)
committerGitHub <redacted>
Mon, 6 Apr 2026 12:03:02 +0000 (14:03 +0200)
Check the return value of sink.write() in the chunked content provider
and return false when the write fails, matching cpp-httplib's own
streaming contract. This prevents logging chunks as sent when the sink
rejected them and properly aborts the stream on connection failure.

tools/server/server-http.cpp

index be2af26223da2e56ed68e0f2b39526943dacdcf9..37e7cbe9c48ab8414257c71933721505be34e455 100644 (file)
@@ -397,8 +397,9 @@ static void process_handler_response(server_http_req_ptr && request, server_http
             std::string chunk;
             bool has_next = response->next(chunk);
             if (!chunk.empty()) {
-                // TODO: maybe handle sink.write unsuccessful? for now, we rely on is_connection_closed()
-                sink.write(chunk.data(), chunk.size());
+                if (!sink.write(chunk.data(), chunk.size())) {
+                    return false;
+                }
                 SRV_DBG("http: streamed chunk: %s\n", chunk.c_str());
             }
             if (!has_next) {