@@ -139,6 +139,7 @@ void HTTPConnection::closeConnection() {
139
139
140
140
if (_wsHandler != nullptr ) {
141
141
HTTPS_LOGD (" Free WS Handler" );
142
+ _wsHandler->onClose ();
142
143
delete _wsHandler;
143
144
_wsHandler = NULL ;
144
145
}
@@ -204,9 +205,9 @@ int HTTPConnection::updateBuffer() {
204
205
// TODO: If we are in state websocket, we might need to do something here
205
206
return 0 ;
206
207
} else {
207
- // An error occured
208
+ // An error occurred
208
209
_connectionState = STATE_ERROR;
209
- HTTPS_LOGE (" An receive error occured , FID=%d" , _socket);
210
+ HTTPS_LOGE (" An receive error occurred , FID=%d, code=%d " , _socket, readReturnCode );
210
211
closeConnection ();
211
212
return -1 ;
212
213
}
@@ -254,7 +255,7 @@ size_t HTTPConnection::readBuffer(byte* buffer, size_t length) {
254
255
255
256
size_t HTTPConnection::pendingBufferSize () {
256
257
updateBuffer ();
257
-
258
+ if ( isClosed ()) return 0 ;
258
259
return _bufferUnusedIdx - _bufferProcessed + pendingByteCount ();
259
260
}
260
261
@@ -596,17 +597,21 @@ void HTTPConnection::loop() {
596
597
}
597
598
598
599
// If the handler has terminated the connection, clean up and close the socket too
599
- if (_wsHandler->closed () || _clientState == CSTATE_CLOSED) {
600
- HTTPS_LOGI (" WS closed, freeing Handler, FID=%d" , _socket);
601
- delete _wsHandler;
602
- _wsHandler = nullptr ;
603
- _connectionState = STATE_CLOSING;
600
+ if (_wsHandler != nullptr ){
601
+ if (_wsHandler->closed () || _clientState == CSTATE_CLOSED) {
602
+ HTTPS_LOGI (" WS closed, freeing Handler, FID=%d" , _socket);
603
+ delete _wsHandler;
604
+ _wsHandler = nullptr ;
605
+ _connectionState = STATE_CLOSING;
606
+ }
607
+ }
608
+ else {
609
+ HTTPS_LOGI (" WS closed due to SSL level issue and cleanded up" );
604
610
}
605
611
break ;
606
612
default :;
607
613
}
608
614
}
609
-
610
615
}
611
616
612
617
0 commit comments