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 { ...@@ -545,25 +545,28 @@ Fd Connection::fd() const {
} }
void Connection::handleResponsePacket(const char *buffer, size_t totalBytes) { 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); requestEntry->resolve(std::move(parser.response));
if (parser.parse() == Private::State::Done) { parser.reset();
if (requestEntry) {
if (requestEntry->timer) {
requestEntry->timer->disarm();
timerPool_.releaseTimer(requestEntry->timer);
}
requestEntry->resolve(std::move(parser.response));
parser.reset();
auto onDone = requestEntry->onDone; auto onDone = requestEntry->onDone;
requestEntry.reset(nullptr); requestEntry.reset(nullptr);
if (onDone) if (onDone)
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