Further fix of #246 : corrected use of response streambuf after reconnect (wrong response object was used in Session::callback). Also closes connection when appropriate, and simplified Session::callback.

This commit is contained in:
eidheim 2019-06-21 19:08:43 +02:00
commit dbd2287418
2 changed files with 76 additions and 72 deletions

View file

@ -84,36 +84,36 @@ namespace SimpleWeb {
if(!lock)
return;
if((!ec || ec == asio::error::not_found) && response->streambuf.size() == response->streambuf.max_size()) {
session->callback(session->connection, make_error_code::make_error_code(errc::message_size));
session->callback(make_error_code::make_error_code(errc::message_size));
return;
}
if(!ec) {
if(!ResponseMessage::parse(response->content, response->http_version, response->status_code, response->header))
session->callback(session->connection, make_error_code::make_error_code(errc::protocol_error));
session->callback(make_error_code::make_error_code(errc::protocol_error));
else {
if(response->status_code.compare(0, 3, "200") != 0)
session->callback(session->connection, make_error_code::make_error_code(errc::permission_denied));
session->callback(make_error_code::make_error_code(errc::permission_denied));
else
this->handshake(session);
}
}
else
session->callback(session->connection, ec);
session->callback(ec);
});
}
else
session->callback(session->connection, ec);
session->callback(ec);
});
}
else
this->handshake(session);
}
else
session->callback(session->connection, ec);
session->callback(ec);
});
}
else
session->callback(session->connection, ec);
session->callback(ec);
});
}
else
@ -132,7 +132,7 @@ namespace SimpleWeb {
if(!ec)
this->write(session);
else
session->callback(session->connection, ec);
session->callback(ec);
});
}
};