From db240c7479f613c714d0029a03d434327a7d1404 Mon Sep 17 00:00:00 2001
From: Gerardo Ganis <gerardo.ganis@cern.ch>
Date: Wed, 22 Jan 2014 15:22:50 +0100
Subject: [PATCH] Fix resource leaks (Coverity)

---
 main/src/xpdtest.cxx | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/main/src/xpdtest.cxx b/main/src/xpdtest.cxx
index 565853226b1..2374710b99f 100644
--- a/main/src/xpdtest.cxx
+++ b/main/src/xpdtest.cxx
@@ -501,6 +501,7 @@ int xpd_ping(const char *host, int port)
    initHS.third  = (int)htonl((int)1);
    if (sendn(sd, &initHS, len) != len) {
       fprintf(stderr,"xpd_ping: problems sending first set of handshake bytes\n");
+      close(sd);
       return 1;
    }
    
@@ -510,6 +511,7 @@ int xpd_ping(const char *host, int port)
    dum[1] = (int)htonl((int)2012);
    if (sendn(sd, &dum[0], sizeof(dum)) != sizeof(dum)) {
       fprintf(stderr,"xpd_ping: problems sending second set of handshake bytes\n");
+      close(sd);
       return 1;
    }
    
@@ -520,6 +522,7 @@ int xpd_ping(const char *host, int port)
    if ((nr = recvn(sd, &type, len)) != len) { // 4 bytes
       fprintf(stderr, "xpd_ping: 1st: wrong number of bytes read: %d (expected: %d)\n",
                       nr, len);
+      close(sd);
       return 1;
    }
    
@@ -532,6 +535,7 @@ int xpd_ping(const char *host, int port)
       if ((nr = recvn(sd, &xbody, len)) != len) { // 12(4+4+4) bytes
          fprintf(stderr, "xpd_ping: 2nd: wrong number of bytes read: %d (expected: %d)\n",
                          nr, len);
+         close(sd);
          return 1;
       }
       xbody.protover = ntohl(xbody.protover);
@@ -541,10 +545,12 @@ int xpd_ping(const char *host, int port)
    } else if (type == 8) {
       // Standard proofd
       fprintf(stderr, "xpd_ping: server is PROOFD\n");
+      close(sd);
       return 1;
    } else {
       // We don't know the server type
       fprintf(stderr, "xpd_ping: unknown server type: %d\n", type);
+      close(sd);
       return 1;
    }
    // Cleanup
-- 
GitLab