-
Notifications
You must be signed in to change notification settings - Fork 1k
Closed
Labels
Milestone
Description
Description
Invoking any cpr::MultiPerform request e.g. cpr::MultiPerform::Get(); multiple times on the same object leads to a crash (SegFault) during the second invocation.
This leads to cpr::MultiPerform to being reusable.
Example/How to Reproduce
Here is an example test case:
TEST(MultiperformGetTests, MultiperformSingleSessionMultiGetTest) {
Url url{server->GetBaseUrl() + "/hello.html"};
std::shared_ptr<Session> session = std::make_shared<Session>();
session->SetUrl(url);
MultiPerform multiperform;
multiperform.AddSession(session);
std::vector<Response> responses = multiperform.Get();
EXPECT_EQ(responses.size(), 1);
std::string expected_text{"Hello world!"};
EXPECT_EQ(expected_text, responses.at(0).text);
EXPECT_EQ(url, responses.at(0).url);
EXPECT_EQ(std::string{"text/html"}, responses.at(0).header["content-type"]);
EXPECT_EQ(200, responses.at(0).status_code);
EXPECT_EQ(ErrorCode::OK, responses.at(0).error.code);
// Invoke for the second time
responses = multiperform.Get(); // Fails here
EXPECT_EQ(responses.size(), 1);
EXPECT_EQ(expected_text, responses.at(0).text);
EXPECT_EQ(url, responses.at(0).url);
EXPECT_EQ(std::string{"text/html"}, responses.at(0).header["content-type"]);
EXPECT_EQ(200, responses.at(0).status_code);
EXPECT_EQ(ErrorCode::OK, responses.at(0).error.code);
}Possible Fix
No response
Where did you get it from?
GitHub (branch e.g. master)
Additional Context/Your Environment
- OS: Fedora 39
- Version: Master as of 28.04.2024 - bed704f