@@ -162,7 +162,14 @@ class NetworkClientSocketHandle {
162162 NetworkClientSocketHandle (int  fd) : sockfd(fd) {}
163163
164164 ~NetworkClientSocketHandle () {
165-  close (sockfd);
165+  close ();
166+  }
167+ 
168+  void  close () {
169+  if  (sockfd >= 0 ) {
170+  ::close (sockfd);
171+  sockfd = -1 ;
172+  }
166173 }
167174
168175 int  fd () {
@@ -178,10 +185,12 @@ NetworkClient::NetworkClient(int fd) : _connected(true), _timeout(WIFI_CLIENT_DE
178185}
179186
180187NetworkClient::~NetworkClient () {
181-  stop ();
182188}
183189
184190void  NetworkClient::stop () {
191+  if  (clientSocketHandle) {
192+ 	clientSocketHandle->close ();
193+  }
185194 clientSocketHandle = NULL ;
186195 _rxBuffer = NULL ;
187196 _connected = false ;
@@ -473,7 +482,7 @@ int NetworkClient::read(uint8_t *buf, size_t size) {
473482
474483int  NetworkClient::peek () {
475484 int  res = -1 ;
476-  if  (_rxBuffer) {
485+  if  (fd () >=  0  &&  _rxBuffer) {
477486 res = _rxBuffer->peek ();
478487 if  (_rxBuffer->failed ()) {
479488 log_e (" fail on fd %d, errno: %d, \" %s\" " fd (), errno, strerror (errno));
@@ -484,7 +493,7 @@ int NetworkClient::peek() {
484493}
485494
486495int  NetworkClient::available () {
487-  if  (!_rxBuffer) {
496+  if  (fd () <  0  ||  !_rxBuffer) {
488497 return  0 ;
489498 }
490499 int  res = _rxBuffer->available ();
@@ -502,6 +511,9 @@ void NetworkClient::clear() {
502511}
503512
504513uint8_t  NetworkClient::connected () {
514+  if  (fd () == -1  && _connected) {
515+  stop ();
516+  }
505517 if  (_connected) {
506518 uint8_t  dummy;
507519 int  res = recv (fd (), &dummy, 0 , MSG_DONTWAIT);
0 commit comments