ctdb-common: Improve error handling
authorMartin Schwenke <mschwenke@ddn.com>
Tue, 15 Aug 2023 00:43:57 +0000 (10:43 +1000)
committerAmitay Isaacs <amitay@samba.org>
Tue, 15 Aug 2023 09:49:38 +0000 (09:49 +0000)
Factor out a failure label, which will get more use in subsequent
commits, and only set private_data when success is certain.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15451

Signed-off-by: Martin Schwenke <mschwenke@ddn.com>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/common/system_socket.c

index 06dc558eb224b9e556297d9bfac7af827effb189..3a7b6eb41de6057383a73796070981ba87989f17 100644 (file)
@@ -988,7 +988,6 @@ int ctdb_sys_open_capture_socket(const char *iface, void **private_data)
                        errbuf);
                return -1;
        }
-       *((pcap_t **)private_data) = pt;
 
        pcap_packet_type = pcap_datalink(pt);
        switch (pcap_packet_type) {
@@ -1005,8 +1004,7 @@ int ctdb_sys_open_capture_socket(const char *iface, void **private_data)
 #endif /* DLT_LINUX_SLL2 */
        default:
                DBG_ERR("Unknown pcap packet type %d\n", pcap_packet_type);
-               pcap_close(pt);
-               return -1;
+               goto fail;
        }
 
        fd = pcap_get_selectable_fd(pt);
@@ -1014,7 +1012,12 @@ int ctdb_sys_open_capture_socket(const char *iface, void **private_data)
                  t,
                  fd);
 
+       *((pcap_t **)private_data) = pt;
        return fd;
+
+fail:
+       pcap_close(pt);
+       return -1;
 }
 
 int ctdb_sys_close_capture_socket(void *private_data)