Refactored stop to avoid sending close_notify
This commit is contained in:
parent
dd58b5b345
commit
4707ea4b48
1 changed files with 7 additions and 7 deletions
|
@ -192,22 +192,22 @@ void SSLClient::flush() {
|
||||||
/* see SSLClient.h */
|
/* see SSLClient.h */
|
||||||
void SSLClient::stop() {
|
void SSLClient::stop() {
|
||||||
// tell the SSL connection to gracefully close
|
// tell the SSL connection to gracefully close
|
||||||
br_ssl_engine_close(&m_sslctx.eng);
|
// Disabled to prevent close_notify from hanging SSLClient
|
||||||
|
// br_ssl_engine_close(&m_sslctx.eng);
|
||||||
// if the engine isn't closed, and the socket is still open
|
// if the engine isn't closed, and the socket is still open
|
||||||
const auto state = br_ssl_engine_current_state(&m_sslctx.eng);
|
auto state = br_ssl_engine_current_state(&m_sslctx.eng);
|
||||||
while (getWriteError() == SSL_OK
|
if (state != BR_SSL_CLOSED
|
||||||
&& m_is_connected
|
|
||||||
&& state != BR_SSL_CLOSED
|
|
||||||
&& state != 0
|
&& state != 0
|
||||||
&& m_run_until(BR_SSL_SENDAPP | BR_SSL_RECVAPP) == 0) {
|
&& connected()) {
|
||||||
/*
|
/*
|
||||||
* Discard any incoming application data.
|
* Discard any incoming application data.
|
||||||
*/
|
*/
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if (br_ssl_engine_recvapp_buf(&m_sslctx.eng, &len) != nullptr) {
|
if (br_ssl_engine_recvapp_buf(&m_sslctx.eng, &len) != nullptr) {
|
||||||
br_ssl_engine_recvapp_ack(&m_sslctx.eng, len);
|
br_ssl_engine_recvapp_ack(&m_sslctx.eng, len);
|
||||||
}
|
}
|
||||||
|
// run SSL to finish any existing transactions
|
||||||
|
flush();
|
||||||
}
|
}
|
||||||
// close the ethernet socket
|
// close the ethernet socket
|
||||||
get_arduino_client().flush();
|
get_arduino_client().flush();
|
||||||
|
|
Loading…
Reference in a new issue