From 39a186c47de550a5fd2a2e055790963d4d0b8491 Mon Sep 17 00:00:00 2001
From: Seva <seva@binarytrails.net>
Date: Wed, 18 Sep 2019 12:16:07 -0400
Subject: [PATCH] http: end request on 0 body bytes

the latter ensures that the request will be terminate even if the
http_parser on_message_complete callback is not called with an old
version of dhtproxy using restbed
---
 src/http.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/http.cpp b/src/http.cpp
index 5970fe03..b7f3373e 100644
--- a/src/http.cpp
+++ b/src/http.cpp
@@ -629,6 +629,8 @@ Request::init_parser()
                 on_body_cb(at, length);
         };
         cbs_->on_message_complete = [this](){
+            if (logger_)
+                logger_->d("[http:client]  [request:%i] response: message complete", id_);
             message_complete_.store(true);
         };
     }
@@ -896,6 +898,11 @@ Request::handle_response_body(const asio::error_code& ec, const size_t bytes)
     if (logger_)
         logger_->d("[http:client]  [request:%i] response body: %i bytes received", id_, bytes);
 
+    if (bytes == 0){
+        terminate(asio::error::eof);
+        return;
+    }
+
     unsigned int content_length;
     auto content_length_it = response_.headers.find(HTTP_HEADER_CONTENT_LENGTH);
 
-- 
GitLab