Merge pull request #1707 from nghttp2/fix-nghttpd-tls-read-stall
nghttpd: Fix TLS read stall
This commit is contained in:
commit
c8a032b6f4
|
@ -749,37 +749,37 @@ int Http2Handler::read_tls() {
|
||||||
|
|
||||||
ERR_clear_error();
|
ERR_clear_error();
|
||||||
|
|
||||||
auto rv = SSL_read(ssl_, buf.data(), buf.size());
|
for (;;) {
|
||||||
|
auto rv = SSL_read(ssl_, buf.data(), buf.size());
|
||||||
|
|
||||||
if (rv <= 0) {
|
if (rv <= 0) {
|
||||||
auto err = SSL_get_error(ssl_, rv);
|
auto err = SSL_get_error(ssl_, rv);
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case SSL_ERROR_WANT_READ:
|
case SSL_ERROR_WANT_READ:
|
||||||
return write_(*this);
|
return write_(*this);
|
||||||
case SSL_ERROR_WANT_WRITE:
|
case SSL_ERROR_WANT_WRITE:
|
||||||
// renegotiation started
|
// renegotiation started
|
||||||
return -1;
|
return -1;
|
||||||
default:
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto nread = rv;
|
||||||
|
|
||||||
|
if (get_config()->hexdump) {
|
||||||
|
util::hexdump(stdout, buf.data(), nread);
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = nghttp2_session_mem_recv(session_, buf.data(), nread);
|
||||||
|
if (rv < 0) {
|
||||||
|
if (rv != NGHTTP2_ERR_BAD_CLIENT_MAGIC) {
|
||||||
|
std::cerr << "nghttp2_session_mem_recv() returned error: "
|
||||||
|
<< nghttp2_strerror(rv) << std::endl;
|
||||||
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto nread = rv;
|
|
||||||
|
|
||||||
if (get_config()->hexdump) {
|
|
||||||
util::hexdump(stdout, buf.data(), nread);
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = nghttp2_session_mem_recv(session_, buf.data(), nread);
|
|
||||||
if (rv < 0) {
|
|
||||||
if (rv != NGHTTP2_ERR_BAD_CLIENT_MAGIC) {
|
|
||||||
std::cerr << "nghttp2_session_mem_recv() returned error: "
|
|
||||||
<< nghttp2_strerror(rv) << std::endl;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return write_(*this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Http2Handler::write_tls() {
|
int Http2Handler::write_tls() {
|
||||||
|
|
Loading…
Reference in New Issue