| 324 | |
| 325 | // Both with and without body we should stop listening to data events |
| 326 | SC_HTTP_ASSERT_RELEASE( |
| 327 | client.getReadableTransportStream().eventData.removeListener(EventDataListener{*this, client})); |
| 328 | if (client.requestCount > 0) |
| 329 | { |
| 330 | SC_HTTP_ASSERT_RELEASE( |
| 331 | client.getReadableTransportStream().eventEnd.removeListener(EventEndListener{*this, client})); |
| 332 | } |
| 333 | Result prepareBody = |
| 334 | client.request.prepareBodyStream(client.buffersPool, |
| 335 | {[&client]() -> Result |
| 336 | { |
| 337 | if (not client.request.isBodyComplete()) |
| 338 | { |
| 339 | client.getReadableTransportStream().resumeReading(); |
| 340 | } |
| 341 | return Result(true); |
| 342 | }}, |
| 343 | false); |
| 344 | if (not prepareBody) |
| 345 | { |
| 346 | if (onError.isValid()) |
| 347 | { |
| 348 | onError(prepareBody); |
| 349 | } |
| 350 | closeAsync(client); |
| 351 | return; |
| 352 | } |
| 353 | |
| 354 | if (client.request.getBodyFramingKind() == HttpBodyFramingKind::Chunked or |
| 355 | client.request.getBodyFramingKind() == HttpBodyFramingKind::ContentLength) |
| 356 | { |
| 357 | const bool addedBodyData = |
| 358 | client.getReadableTransportStream().eventData.addListener(EventBodyDataListener{*this, client}); |
| 359 | SC_HTTP_ASSERT_RELEASE(addedBodyData); |
| 360 | } |
| 361 |
no test coverage detected