mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-09-04 04:31:44 +00:00
try to improve ssl management
This commit is contained in:
+14
-6
@@ -294,8 +294,12 @@ ssize_t hr_ssl_write(struct corerouter_peer *main_peer) {
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
if (ret == 0) return 0;
|
||||
int err = SSL_get_error(hr->ssl, ret);
|
||||
int err = 0;
|
||||
if (ERR_peek_error()) {
|
||||
err = SSL_get_error(hr->ssl, ret);
|
||||
}
|
||||
|
||||
if (err == SSL_ERROR_ZERO_RETURN || err == 0) return 0;
|
||||
|
||||
if (err == SSL_ERROR_WANT_READ) {
|
||||
cr_reset_hooks_and_read(main_peer, hr_ssl_write);
|
||||
@@ -350,8 +354,13 @@ ssize_t hr_ssl_read(struct corerouter_peer *main_peer) {
|
||||
#endif
|
||||
return http_parse(main_peer);
|
||||
}
|
||||
if (ret == 0) return 0;
|
||||
int err = SSL_get_error(hr->ssl, ret);
|
||||
int err = 0;
|
||||
|
||||
if (ERR_peek_error()) {
|
||||
err = SSL_get_error(hr->ssl, ret);
|
||||
}
|
||||
|
||||
if (err == SSL_ERROR_ZERO_RETURN || err == 0) return 0;
|
||||
|
||||
if (err == SSL_ERROR_WANT_READ) {
|
||||
cr_reset_hooks_and_read(main_peer, hr_ssl_read);
|
||||
@@ -382,7 +391,6 @@ ssize_t hr_ssl_shutdown(struct corerouter_peer *peer) {
|
||||
struct http_session *hr = (struct http_session *) cs;
|
||||
|
||||
int ret = SSL_shutdown(hr->ssl);
|
||||
if (ret < 0) return -1;
|
||||
if (ret == 1) return 0;
|
||||
|
||||
int err = 0;
|
||||
@@ -392,7 +400,7 @@ ssize_t hr_ssl_shutdown(struct corerouter_peer *peer) {
|
||||
}
|
||||
|
||||
// no error, close the connection
|
||||
if (err == 0 || err == SSL_ERROR_ZERO_RETURN) return -1;
|
||||
if (err == 0 || err == SSL_ERROR_ZERO_RETURN) return 0;
|
||||
|
||||
if (err == SSL_ERROR_WANT_READ) {
|
||||
if (uwsgi_cr_set_hooks(peer, hr_ssl_shutdown, NULL)) return -1;
|
||||
|
||||
Reference in New Issue
Block a user