diff --git a/openair2/UTIL/ASYNC_IF/socket_link.c b/openair2/UTIL/ASYNC_IF/socket_link.c
index 571762493014b8ca8a19b9de2288f574f155b3e7..51c55116752ca0ae52e465bd4f77e3de7c86165f 100644
--- a/openair2/UTIL/ASYNC_IF/socket_link.c
+++ b/openair2/UTIL/ASYNC_IF/socket_link.c
@@ -218,6 +218,7 @@ error:
 
 socket_link_t *new_link_udp_client(const char *server, int port){
 
+  int s = -1;
   socket_link_t      *ret = NULL;
   ret = calloc(1, sizeof(socket_link_t));
   if (ret == NULL) {
@@ -227,7 +228,6 @@ socket_link_t *new_link_udp_client(const char *server, int port){
   ret->socket_fd = -1;
 
   struct sockaddr_in si_other;
-  int s;
   socklen_t slen = sizeof(si_other);
  
   if ( (s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1){
@@ -254,8 +254,12 @@ socket_link_t *new_link_udp_client(const char *server, int port){
   return ret;
 error:
   if (ret != NULL) {
-    close(ret->socket_fd);
     free(ret);
+    ret = NULL;
+  }
+  if (s != -1) {
+    close(s);
+    s = -1;
   }
   LOG_E(MAC, "ERROR in new_link_udp_client (see above), returning NULL\n");
   return NULL;