Commit 4945da7d authored by hyperxor's avatar hyperxor

Add exceptions handing on responce data parse

parent 322371f1
...@@ -545,26 +545,30 @@ Fd Connection::fd() const { ...@@ -545,26 +545,30 @@ 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());
}
} }
void Connection::handleError(const char *error) { void Connection::handleError(const char *error) {
......
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