libhttpserver
libhttpserver copied to clipboard
[BUG] deferred_response never sends content string passed to constructor
Prerequisites
- [X] Put an X between the brackets on this line if you have checked that your issue isn't already filed: https://github.com/search?l=&q=repo%3Aetr%2Flibhttpserver&type=Issues
Description
The deferred_response constructor includes a const std::string& content = "" parameter that is documented as:
Besides the callback, optionally, you can provide a content parameter that sets the initial message sent immediately to the client.
The content parameter is passed to the base class string_response constructor where it is assigned to the content member but never actually consumed because string_response::get_raw_response() is never called.
This behavior might appear to have been removed by https://github.com/etr/libhttpserver/commit/ed0841d177d88dada6e21e4dd5c36f8b670c1ee0 in #145, but it likely didn't work even in https://github.com/etr/libhttpserver/commit/eea93bdf45c42ffbb487f06385ab6a7647bc0a5f because get_raw_response() is a virtual function.
The tests don't expect the content parameter to be sent either: https://github.com/etr/libhttpserver/blob/d249ba682441dbb979146482aff01a7073ed165a/test/integ/deferred.cpp#L164
At this point in the interest of bug compatibility maybe just change the parameter name from "content" to "unused" and fix the docs.
Steps to Reproduce
Send a deferred_response with a non-empty content argument such as https://github.com/etr/libhttpserver/blob/d249ba682441dbb979146482aff01a7073ed165a/test/integ/deferred.cpp#L103
Expected behavior: Content argument is transmitted.
Actual behavior: Content argument is ignored.
Reproduces how often: 100%
Versions
- OS version
Linux hydrol2 4.18.0-477.15.1.el8_8.x86_64 #1 SMP Fri Jun 2 08:27:19 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux - libhttpserver verion 0.18.2 compiled
- libmicrohttpd version 0.9.71 compiled