Skip to content

[BUG] deferred_response never sends content string passed to constructor #331

Open
@jcphill

Description

@jcphill

Prerequisites

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 ed0841d in #145, but it likely didn't work even in eea93bd because get_raw_response() is a virtual function.

The tests don't expect the content parameter to be sent either:

LT_CHECK_EQ(s, "test42test84");

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

return std::make_shared<deferred_response<test_data>>(test_callback_with_data, internal_info, "cycle callback response");

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

Additional Information

Metadata

Metadata

Assignees

Labels

bugConfirmed bugs or reports that are very likely to be bugs.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions