]> granicus.if.org Git - curl/commitdiff
examples/externalsocket: add missing close socket calls
authorAndre Guibert de Bruet <andygui@gmail.com>
Mon, 11 Mar 2019 03:15:15 +0000 (23:15 -0400)
committerJay Satiro <raysatiro@yahoo.com>
Tue, 12 Mar 2019 03:02:54 +0000 (23:02 -0400)
.. and for Windows also call WSACleanup since we call WSAStartup.

The example is to demonstrate handling the socket independently of
libcurl. In this case libcurl is not responsible for creating, opening
or closing the socket, it is handled by the application (our example).

Fixes https://github.com/curl/curl/pull/3663

docs/examples/externalsocket.c

index 0ac113db31f011d21cfde26ada3d3308f05b831a..d89b041b47c3eec1d75e8856605681f946e7a794 100644 (file)
@@ -124,8 +124,10 @@ int main(void)
     servaddr.sin_port   = htons(PORTNUM);
 
     servaddr.sin_addr.s_addr = inet_addr(IPADDR);
-    if(INADDR_NONE == servaddr.sin_addr.s_addr)
+    if(INADDR_NONE == servaddr.sin_addr.s_addr) {
+      close(sockfd);
       return 2;
+    }
 
     if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) ==
        -1) {
@@ -157,10 +159,16 @@ int main(void)
 
     curl_easy_cleanup(curl);
 
+    close(sockfd);
+
     if(res) {
       printf("libcurl error: %d\n", res);
       return 4;
     }
   }
+
+#ifdef WIN32
+  WSACleanup();
+#endif
   return 0;
 }