Commit 88569844 authored by Ole Christian Eidheim's avatar Ole Christian Eidheim
Browse files

Improved SSL_R_SHORT_READ check

parent adbdc6fc
Loading
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -670,15 +670,18 @@ namespace SimpleWeb {
      });
    }

    /// Ignore end of file error codes
    virtual error_code clean_error_code(const error_code &ec) {
      return ec == error::eof ? error_code() : ec;
    }

    void read_content(const std::shared_ptr<Session> &session) {
      asio::async_read(*session->connection->socket, session->response->streambuf, [this, session](const error_code &ec_, std::size_t /*bytes_transferred*/) {
        auto lock = session->connection->handler_runner->continue_lock();
        if(!lock)
          return;
# define SSL_R_SHORT_READ                                 219
        auto ec = ec_ == error::eof ? error_code() : ec_;
        if((ec.value() & 0xff) == SSL_R_SHORT_READ)
           ec = error_code();

        auto ec = clean_error_code(ec_);

        if(!ec) {
          {
+5 −0
Original line number Diff line number Diff line
@@ -57,6 +57,11 @@ namespace SimpleWeb {
  protected:
    asio::ssl::context context;

    /// Ignore for end of file and SSL_R_SHORT_READ error codes
    error_code clean_error_code(const error_code &ec) override {
      return ec == error::eof || ec == asio::ssl::error::stream_truncated ? error_code() : ec;
    }

    std::shared_ptr<Connection> create_connection() noexcept override {
      return std::make_shared<Connection>(handler_runner, *io_service, context);
    }