Skip to content

Commit a80d0a5

Browse files
committed
Keep socket close logic.
1 parent 12a7783 commit a80d0a5

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

libs/server-sent-events/src/curl_client.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,11 @@ curl_socket_t CurlClient::OpenSocketCallback(void* clientp,
346346
curl_socket_t sockfd = socket(address->family, address->socktype,
347347
address->protocol);
348348

349+
// Store it so we can close it during shutdown
350+
if (sockfd != CURL_SOCKET_BAD) {
351+
context->set_curl_socket(sockfd);
352+
}
353+
349354
return sockfd;
350355
}
351356

libs/server-sent-events/src/curl_client.hpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class CurlClient final : public Client,
8080
// thread need to be mutex protected.
8181
std::mutex mutex_;
8282
std::atomic<bool> shutting_down_;
83+
std::atomic<curl_socket_t> curl_socket_;
8384
// End mutex protected items.
8485
std::optional<Callbacks> callbacks_;
8586

@@ -164,20 +165,34 @@ class CurlClient final : public Client,
164165
return shutting_down_;
165166
}
166167

168+
void set_curl_socket(curl_socket_t curl_socket) {
169+
std::lock_guard lock(mutex_);
170+
curl_socket_ = curl_socket;
171+
}
172+
167173
void shutdown() {
168174
std::lock_guard lock(mutex_);
169175
shutting_down_ = true;
176+
if (curl_socket_ != CURL_SOCKET_BAD) {
177+
#ifdef _WIN32
178+
closesocket(curl_socket_);
179+
#else
180+
close(curl_socket_);
181+
#endif
182+
}
170183
}
171184

185+
172186
RequestContext(std::string url,
173187
http::request<http::string_body> req,
174188
std::optional<std::chrono::milliseconds> connect_timeout,
175189
std::optional<std::chrono::milliseconds> read_timeout,
176190
std::optional<std::chrono::milliseconds> write_timeout,
177191
std::optional<std::string> custom_ca_file,
178192
std::optional<std::string> proxy_url,
179-
const bool skip_verify_peer
193+
bool skip_verify_peer
180194
) : shutting_down_(false),
195+
curl_socket_(CURL_SOCKET_BAD),
181196
last_download_amount(0),
182197
req(std::move(req)),
183198
url(std::move(url)),

0 commit comments

Comments
 (0)