From dd6bad19d7fc47cb07a3d4609a3e9d1645b82e44 Mon Sep 17 00:00:00 2001
From: phil <me@filou.se>
Date: Sat, 10 Apr 2021 11:17:54 +0200
Subject: [PATCH] faulty deinit fix

---
 src/utils/sapd/sapd.c | 11 +++++++----
 src/utils/sapsrv.c    |  3 +++
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/utils/sapd/sapd.c b/src/utils/sapd/sapd.c
index 4e4fffe..a845283 100644
--- a/src/utils/sapd/sapd.c
+++ b/src/utils/sapd/sapd.c
@@ -465,7 +465,7 @@ static int sapsrv_setup()
 
 static void sapsrv_teardown()
 {
-    if (sapsrv == NULL){
+    if (sapsrv){
         aes67_sapsrv_stop(sapsrv);
         sapsrv = NULL;
     }
@@ -663,7 +663,9 @@ static void rav_session_delete(struct rav_session_st * session)
 
     // if registered with sapsrv, remove
     if (session->state == rav_state_sdp_updated || session->state == rav_state_sdp_published){
+        fprintf(stderr, "asdf\n");
         aes67_sapsrv_session_t sapsrvSession = aes67_sapsrv_session_by_origin(sapsrv, &session->origin);
+        fprintf(stderr, "asdf2\n");
         if (sapsrvSession != NULL){
             aes67_sapsrv_session_delete(sapsrv, sapsrvSession, true);
         } else {
@@ -1168,10 +1170,11 @@ static int local_setup(const char * fname)
 
 static void local_teardown()
 {
-    if (local.sockfd != -1){
-        close(local.sockfd);
-        local.sockfd = -1;
+    if (local.sockfd == -1) {
+        return;
     }
+    close(local.sockfd);
+    local.sockfd = -1;
 
     if( access(AES67_SAPD_LOCAL_SOCK, F_OK ) == 0 ){
         //TODO is this generally safe??
diff --git a/src/utils/sapsrv.c b/src/utils/sapsrv.c
index 43b838d..1a9e155 100644
--- a/src/utils/sapsrv.c
+++ b/src/utils/sapsrv.c
@@ -269,6 +269,7 @@ static int join_mcast_groups(sapsrv_t * server, u32_t scopes)
 
 int aes67_sapsrv_leave_mcast_group(int sockfd, u32_t scope, unsigned int ipv6_if)
 {
+    assert(sockfd>0);
     // only
     assert( ((scope & AES67_SAPSRV_SCOPE_IPv4) == AES67_SAPSRV_SCOPE_IPv4) + ((scope & AES67_SAPSRV_SCOPE_IPv6) == AES67_SAPSRV_SCOPE_IPv6) == 1);
 
@@ -320,6 +321,8 @@ int aes67_sapsrv_leave_mcast_group(int sockfd, u32_t scope, unsigned int ipv6_if
 
 static int leave_mcast_groups(sapsrv_t * server, u32_t scopes)
 {
+    assert(server);
+
     if ( (scopes & AES67_SAPSRV_SCOPE_IPv4_GLOBAL) && aes67_sapsrv_leave_mcast_group(server->sockfd4, AES67_SAPSRV_SCOPE_IPv4_GLOBAL, server->ipv6_if)){
         return EXIT_FAILURE;
     }
-- 
GitLab