API refactoring : vxlan-gpe
[vpp.git] / vlib-api / vlibsocket / socksvr_vlib.c
index e70124d..dc8c63e 100644 (file)
@@ -575,12 +575,14 @@ socksvr_api_init (vlib_main_t * vm)
   rv = ioctl (sockfd, FIONBIO, &one);
   if (rv < 0)
     {
+      close (sockfd);
       return clib_error_return_unix (0, "FIONBIO");
     }
 
   rv = setsockopt (sockfd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof (one));
   if (rv < 0)
     {
+      close (sockfd);
       return clib_error_return_unix (0, "SO_REUSEADDR");
     }
 
@@ -602,12 +604,14 @@ socksvr_api_init (vlib_main_t * vm)
 
   if (bind (sockfd, (struct sockaddr *) &serv_addr, sizeof (serv_addr)) < 0)
     {
+      close (sockfd);
       return clib_error_return_unix (0, "bind");
     }
 
   rv = listen (sockfd, 5);
   if (rv < 0)
     {
+      close (sockfd);
       return clib_error_return_unix (0, "listen");
     }