Просмотр исходного кода

【修复】开启TLS 支持后 Socket 无法释放问题。

Signed-off-by: chenyong <1521761801@qq.com>
chenyong 7 лет назад
Родитель
Сommit
7cd6eb5d28
1 измененных файлов с 13 добавлено и 4 удалено
  1. 13 4
      webclient.c

+ 13 - 4
webclient.c

@@ -23,7 +23,7 @@
 #else
 #else
 #include <lwip/netdb.h>
 #include <lwip/netdb.h>
 #include <lwip/sockets.h>
 #include <lwip/sockets.h>
-#endif /* RT_USING_DFS_NET */
+#endif /* SAL_USING_POSIX */
 
 
 #include "webclient_internal.h"
 #include "webclient_internal.h"
 
 
@@ -1107,11 +1107,18 @@ int webclient_close(struct webclient_session *session)
     
     
 #ifdef WEBCLIENT_USING_TLS
 #ifdef WEBCLIENT_USING_TLS
     if(session->tls_session)
     if(session->tls_session)
+    {
         mbedtls_client_close(session->tls_session);
         mbedtls_client_close(session->tls_session);
+    }
+    else
+    {
+        if (session->socket >= 0)
+            closesocket(session->socket); 
+    }
 #else
 #else
     if (session->socket >= 0)
     if (session->socket >= 0)
-        closesocket(session->socket);  
-#endif  
+        closesocket(session->socket); 
+#endif
     if(session->transfer_encoding)
     if(session->transfer_encoding)
         web_free(session->transfer_encoding);    
         web_free(session->transfer_encoding);    
     if(session->content_type)
     if(session->content_type)
@@ -1125,8 +1132,10 @@ int webclient_close(struct webclient_session *session)
     if(session->location)
     if(session->location)
         web_free(session->location);
         web_free(session->location);
     if(session)
     if(session)
+    {
         web_free(session);
         web_free(session);
-
+        session = RT_NULL;
+    }
     return 0;
     return 0;
 }
 }