Unverified Commit 0dee2f6c authored by Dennis Jenkins's avatar Dennis Jenkins Committed by GitHub

Merge pull request #687 from hyperxor/handle_exceptions_in_responce_parse_on_client

Handle exceptions on responce parse in client
parents 322371f1 a3ade46d
......@@ -545,25 +545,28 @@ Fd Connection::fd() const {
}
void Connection::handleResponsePacket(const char *buffer, size_t totalBytes) {
try {
parser.feed(buffer, totalBytes);
if (parser.parse() == Private::State::Done) {
if (requestEntry) {
if (requestEntry->timer) {
requestEntry->timer->disarm();
timerPool_.releaseTimer(requestEntry->timer);
}
parser.feed(buffer, totalBytes);
if (parser.parse() == Private::State::Done) {
if (requestEntry) {
if (requestEntry->timer) {
requestEntry->timer->disarm();
timerPool_.releaseTimer(requestEntry->timer);
}
requestEntry->resolve(std::move(parser.response));
parser.reset();
requestEntry->resolve(std::move(parser.response));
parser.reset();
auto onDone = requestEntry->onDone;
auto onDone = requestEntry->onDone;
requestEntry.reset(nullptr);
requestEntry.reset(nullptr);
if (onDone)
onDone();
if (onDone)
onDone();
}
}
} catch (const std::exception &ex) {
handleError(ex.what());
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment