parent
d6d2e86f76
commit
216cc95839
|
@ -112,8 +112,10 @@ void uh_ssl_free(struct uh_connection *con)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (UHTTP_USE_OPENSSL)
|
#if (UHTTP_USE_OPENSSL)
|
||||||
|
SSL_shutdown(con->ssl);
|
||||||
SSL_free(con->ssl);
|
SSL_free(con->ssl);
|
||||||
#elif (UHTTP_USE_CYASSL)
|
#elif (UHTTP_USE_CYASSL)
|
||||||
|
wolfSSL_shutdown(con->ssl);
|
||||||
wolfSSL_free(con->ssl);
|
wolfSSL_free(con->ssl);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -123,6 +125,7 @@ static int uh_ssl_err(struct uh_connection *con, int ret, const char *fun)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
#if (UHTTP_USE_OPENSSL)
|
#if (UHTTP_USE_OPENSSL)
|
||||||
|
|
||||||
err = SSL_get_error(con->ssl, ret);
|
err = SSL_get_error(con->ssl, ret);
|
||||||
if (err == SSL_ERROR_ZERO_RETURN || ERR_peek_error()) {
|
if (err == SSL_ERROR_ZERO_RETURN || ERR_peek_error()) {
|
||||||
con->flags |= UH_CON_CLOSE;
|
con->flags |= UH_CON_CLOSE;
|
||||||
|
@ -141,9 +144,28 @@ static int uh_ssl_err(struct uh_connection *con, int ret, const char *fun)
|
||||||
|
|
||||||
con->flags |= UH_CON_CLOSE;
|
con->flags |= UH_CON_CLOSE;
|
||||||
uh_log_err("%s() Error: %s", fun, ERR_reason_error_string(err));
|
uh_log_err("%s() Error: %s", fun, ERR_reason_error_string(err));
|
||||||
return -1;
|
|
||||||
#elif (UHTTP_USE_CYASSL)
|
#elif (UHTTP_USE_CYASSL)
|
||||||
|
err = wolfSSL_get_error(con->ssl, ret);
|
||||||
|
if (ret == 0 || err == SSL_ERROR_ZERO_RETURN || wolfSSL_ERR_peek_error()) {
|
||||||
|
con->flags |= UH_CON_CLOSE;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (err == SSL_ERROR_SYSCALL) {
|
||||||
|
if (errno > 0)
|
||||||
|
uh_log_err("%s", fun);
|
||||||
|
con->flags |= UH_CON_CLOSE;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
con->flags |= UH_CON_CLOSE;
|
||||||
|
uh_log_err("%s() Error: %s", fun, wolfSSL_ERR_reason_error_string(err));
|
||||||
#endif
|
#endif
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -163,7 +185,12 @@ int uh_ssl_read(struct uh_connection *con, void *buf, int count)
|
||||||
return uh_ssl_err(con, ret, "SSL_read");
|
return uh_ssl_err(con, ret, "SSL_read");
|
||||||
|
|
||||||
#elif (UHTTP_USE_CYASSL)
|
#elif (UHTTP_USE_CYASSL)
|
||||||
return wolfSSL_read(con->ssl, buf, count);
|
ret = wolfSSL_read(con->ssl, buf, count);
|
||||||
|
if (ret > 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
return uh_ssl_err(con, ret, "wolfSSL_read");
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (UHTTP_SSL_ENABLED)
|
#if (UHTTP_SSL_ENABLED)
|
||||||
|
@ -198,7 +225,10 @@ int uh_ssl_write(struct uh_connection *con, void *buf, int count)
|
||||||
return uh_ssl_err(con, ret, "SSL_write");
|
return uh_ssl_err(con, ret, "SSL_write");
|
||||||
|
|
||||||
#elif (UHTTP_USE_CYASSL)
|
#elif (UHTTP_USE_CYASSL)
|
||||||
return wolfSSL_write(con->ssl, buf, count);
|
ret = wolfSSL_write(con->ssl, buf, count);
|
||||||
|
if (ret > 0)
|
||||||
|
return ret;
|
||||||
|
return uh_ssl_err(con, ret, "wolfSSL_write");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (UHTTP_SSL_ENABLED)
|
#if (UHTTP_SSL_ENABLED)
|
||||||
|
@ -252,7 +282,12 @@ int uh_ssl_accept(struct uh_connection *con)
|
||||||
if (!con->ssl)
|
if (!con->ssl)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
wolfSSL_set_fd(con->ssl, sock);
|
if (wolfSSL_set_fd(con->ssl, sock) != SSL_SUCCESS) {
|
||||||
|
uh_log_err("wolfSSL_set_fd() failed");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
wolfSSL_set_accept_state(con->ssl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return sock;
|
return sock;
|
||||||
|
@ -272,6 +307,13 @@ void uh_ssl_handshake(struct uh_connection *con)
|
||||||
uh_ssl_err(con, ret, "SSL_do_handshake");
|
uh_ssl_err(con, ret, "SSL_do_handshake");
|
||||||
|
|
||||||
#elif (UHTTP_USE_CYASSL)
|
#elif (UHTTP_USE_CYASSL)
|
||||||
|
ret = wolfSSL_accept(con->ssl);
|
||||||
|
if (ret == SSL_SUCCESS) {
|
||||||
|
con->flags |= UH_CON_SSL_HANDSHAKE_DONE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uh_ssl_err(con, ret, "wolfSSL_SSL_do_handshake");
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue