Project

General

Profile

Actions

Bug #13714

open

Wt::Htpp::Client: race condition while emitting headersReceived signal

Added by Dries Mys 19 days ago. Updated 1 day ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
Start date:
04/25/2025
Due date:
% Done:

0%

Estimated time:

Description

In case postSignals_ == true and a linked session exists, emitHeadersReceived may be executed simultaneously with handleReadContent.

  • emitHeadersReceived reads the whole message (i.e. it performs a copy of the message while emitting the headersReceived signal)
  • handleReadContent may change the body of the message.

Hence, a race condition may occur, resulting in UB / a crash.

Possible solution

A possible solution is to copy the message already when posting emitHeadersReceived to the related session. An advantage of this solution is that the message provided as argument to the headersReceived signal does not contain a (partial) message body in all cases. Hence, the headersReceived signal is emitted with the exact same message independent of whether postSignals_ is true or false.

Actions #1

Updated by Matthias Van Ceulebroeck 1 day ago

  • Target version set to 4.12.2

Perhaps ideally emitHeadersReceived() simply should not use the whole Message (meaning status, headers, and body), but only the status and actual headers.
Although that would change the API, and isn't really desired.

Actions

Also available in: Atom PDF