Forgot to terminate library when listener fails.
authorScott Cantor <cantor.2@osu.edu>
Wed, 3 Jun 2009 19:00:56 +0000 (19:00 +0000)
committerScott Cantor <cantor.2@osu.edu>
Wed, 3 Jun 2009 19:00:56 +0000 (19:00 +0000)
shibd/shibd.cpp

index 5def132..036cd21 100644 (file)
@@ -146,11 +146,13 @@ int real_main(int preinit)
             ListenerService* listener = conf.getServiceProvider()->getListenerService();\r
             if (!listener->init(unlink_socket)) {\r
                 fprintf(stderr, "listener failed to initialize\n");\r
+                conf.term();\r
                 return -3;\r
             }\r
             else if (!listener->run(&shibd_shutdown)) {\r
-                listener->term();\r
                 fprintf(stderr, "listener failed to begin service\n");\r
+                listener->term();\r
+                conf.term();\r
                 return -3;\r
             }\r
             listener->term();\r
@@ -380,6 +382,7 @@ int main(int argc, char *argv[])
         ListenerService* listener = conf.getServiceProvider()->getListenerService();\r
         if (!listener->init(unlink_socket)) {\r
             fprintf(stderr, "listener failed to initialize\n");\r
+            conf.term();\r
             return -3;\r
         }\r
 \r
@@ -391,8 +394,11 @@ int main(int argc, char *argv[])
 \r
         // Run the listener.\r
         if (!listener->run(&shibd_shutdown)) {\r
-            listener->term();\r
             fprintf(stderr, "listener failed to begin service\n");\r
+            listener->term();\r
+            conf.term();\r
+            if (pidfile)\r
+                unlink(pidfile);\r
             return -3;\r
         }\r
         listener->term();\r