Skip to content

Commit 22f55e6

Browse files
Move log_context to ResultData
Required to cover the completion callback Relates-To: HERESUP-4906 Signed-off-by: Mykhailo Kuchma <[email protected]>
1 parent bfd15ff commit 22f55e6

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

olp-cpp-sdk-core/src/http/winhttp/NetworkWinHttp.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -621,8 +621,6 @@ void NetworkWinHttp::RequestCallback(HINTERNET, DWORD_PTR context, DWORD status,
621621

622622
auto* handle = reinterpret_cast<RequestData*>(context);
623623

624-
logging::ScopedLogContext scope(handle->log_context);
625-
626624
if (!handle->connection_data || !handle->result_data) {
627625
OLP_SDK_LOG_WARNING(kLogTag, "RequestCallback to inactive handle, id="
628626
<< handle->request_id);
@@ -633,6 +631,8 @@ void NetworkWinHttp::RequestCallback(HINTERNET, DWORD_PTR context, DWORD status,
633631
ResultData& request_result = *handle->result_data;
634632
handle->connection_data->last_used = GetTickCount64();
635633

634+
logging::ScopedLogContext scope(request_result.log_context);
635+
636636
if (status == WINHTTP_CALLBACK_STATUS_REQUEST_ERROR) {
637637
// Error has occurred
638638
auto* result = reinterpret_cast<WINHTTP_ASYNC_RESULT*>(status_info);
@@ -972,6 +972,9 @@ void NetworkWinHttp::CompletionThread() {
972972
// protect against multiple calls
973973
std::swap(result->user_callback, callback);
974974
}
975+
976+
logging::ScopedLogContext scope(result->log_context);
977+
975978
// must call outside lock to prevent deadlock
976979
callback(NetworkResponse()
977980
.WithError(str)
@@ -1049,8 +1052,9 @@ NetworkWinHttp::RequestData* NetworkWinHttp::FindHandle(RequestId id) {
10491052
return nullptr;
10501053
}
10511054

1052-
NetworkWinHttp::ResultData::ResultData(RequestId id, Callback callback,
1053-
std::shared_ptr<std::ostream> payload)
1055+
NetworkWinHttp::ResultData::ResultData(
1056+
RequestId id, Callback callback, std::shared_ptr<std::ostream> payload,
1057+
std::shared_ptr<const logging::LogContext> context)
10541058
: user_callback(std::move(callback)),
10551059
payload(std::move(payload)),
10561060
content_length(0),
@@ -1061,7 +1065,8 @@ NetworkWinHttp::ResultData::ResultData(RequestId id, Callback callback,
10611065
completed(false),
10621066
error(false),
10631067
bytes_uploaded(0),
1064-
bytes_downloaded(0) {}
1068+
bytes_downloaded(0),
1069+
log_context(std::move(context)) {}
10651070

10661071
NetworkWinHttp::ConnectionData::ConnectionData(HINTERNET http_connection)
10671072
: http_connection(http_connection) {}
@@ -1081,8 +1086,8 @@ NetworkWinHttp::RequestData::RequestData(
10811086
std::shared_ptr<const logging::LogContext> context)
10821087
: self(self),
10831088
connection_data(std::move(connection)),
1084-
result_data(std::make_shared<ResultData>(id, std::move(callback),
1085-
std::move(payload))),
1089+
result_data(std::make_shared<ResultData>(
1090+
id, std::move(callback), std::move(payload), std::move(context))),
10861091
body(request.GetBody()),
10871092
header_callback(std::move(header_callback)),
10881093
data_callback(std::move(data_callback)),
@@ -1091,8 +1096,7 @@ NetworkWinHttp::RequestData::RequestData(
10911096
ignore_data(request.GetVerb() == NetworkRequest::HttpVerb::HEAD),
10921097
no_compression(false),
10931098
uncompress(false),
1094-
in_use(false),
1095-
log_context(std::move(context)) {}
1099+
in_use(false) {}
10961100

10971101
NetworkWinHttp::RequestData::RequestData()
10981102
: self(nullptr),

olp-cpp-sdk-core/src/http/winhttp/NetworkWinHttp.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ class NetworkWinHttp : public Network {
6363
private:
6464
struct ResultData {
6565
ResultData(RequestId id, Callback callback,
66-
std::shared_ptr<std::ostream> payload);
66+
std::shared_ptr<std::ostream> payload,
67+
std::shared_ptr<const logging::LogContext> context);
6768

6869
Callback user_callback;
6970
std::shared_ptr<std::ostream> payload;
@@ -77,6 +78,8 @@ class NetworkWinHttp : public Network {
7778

7879
std::uint64_t bytes_uploaded;
7980
std::uint64_t bytes_downloaded;
81+
82+
std::shared_ptr<const logging::LogContext> log_context;
8083
};
8184

8285
struct ConnectionData {
@@ -118,7 +121,6 @@ class NetworkWinHttp : public Network {
118121
bool no_compression;
119122
bool uncompress;
120123
bool in_use;
121-
std::shared_ptr<const logging::LogContext> log_context;
122124
#ifdef NETWORK_HAS_ZLIB
123125
z_stream strm;
124126
#endif

0 commit comments

Comments
 (0)