win32: call olsr_exit() instead of exit()
authorFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 5 Nov 2015 22:44:22 +0000 (23:44 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 6 Nov 2015 15:26:22 +0000 (16:26 +0100)
olsr_exit tries to do proper shutdown that cleans up data structures
by raise()ing the SIGTERM signal. This signal then causes olsr_shutdown
to be invoked (only when the signal handler is setup), which will do
the cleanup of the data structures.

According to the man page of raise():
  If the signal causes a handler to be called, raise() will return
  only after the signal handler has returned.

And since olsr_exit() invokes exit() after raise()ing the signal, there
is no harm in calling it.

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/win32/ifnet.c
src/win32/net.c

index a4e2060..9f6fd94 100644 (file)
@@ -546,8 +546,7 @@ add_hemu_if(struct olsr_if *iface)
     ifp->olsr_socket = gethemusocket(&sin);
 
     if (ifp->olsr_socket < 0) {
     ifp->olsr_socket = gethemusocket(&sin);
 
     if (ifp->olsr_socket < 0) {
-      fprintf(stderr, "Could not initialize socket... exiting!\n\n");
-      exit(1);
+      olsr_exit("Could not initialize socket", 1);
     }
 
   } else {
     }
 
   } else {
@@ -842,8 +841,7 @@ chk_if_up(struct olsr_if *iface, int debuglvl __attribute__ ((unused)))
   New->send_socket = getsocket(0, New);
 
   if (New->olsr_socket < 0) {
   New->send_socket = getsocket(0, New);
 
   if (New->olsr_socket < 0) {
-    fprintf(stderr, "Could not initialize socket... exiting!\n\n");
-    exit(1);
+    olsr_exit("Could not initialize socket", 1);
   }
 
   add_olsr_socket(New->olsr_socket, &olsr_input, NULL, NULL, SP_PR_READ);
   }
 
   add_olsr_socket(New->olsr_socket, &olsr_input, NULL, NULL, SP_PR_READ);
index b012191..012fa4f 100644 (file)
@@ -58,6 +58,7 @@
 #include "net_os.h"
 #include "net_olsr.h"
 #include "ipcalc.h"
 #include "net_os.h"
 #include "net_olsr.h"
 #include "ipcalc.h"
+#include "olsr.h"
 
 #if defined WINCE
 #define WIDE_STRING(s) L##s
 
 #if defined WINCE
 #define WIDE_STRING(s) L##s
@@ -324,7 +325,7 @@ DisableIcmpRedirects(void)
   fprintf(stderr, "I have disabled ICMP redirect processing in the registry for you.\n");
   fprintf(stderr, "REBOOT NOW, so that these changes take effect. Exiting...\n\n");
 
   fprintf(stderr, "I have disabled ICMP redirect processing in the registry for you.\n");
   fprintf(stderr, "REBOOT NOW, so that these changes take effect. Exiting...\n\n");
 
-  exit(0);
+  olsr_exit(NULL, 0);
 }
 
 int
 }
 
 int