]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix segfault when trying to stop the bnet_server thread in terminate_stored()
authorEric Bollengier <eric@baculasystems.com>
Fri, 4 Jul 2014 14:26:06 +0000 (16:26 +0200)
committerKern Sibbald <kern@sibbald.com>
Sat, 12 Jul 2014 14:01:24 +0000 (16:01 +0200)
Conflicts:
bacula/src/stored/stored.c

bacula/src/stored/stored.c

index e82f53ffd061f610cdc392639df4e5acb056ab3e..ab548daa629c81b308b450199495a67395af8cf1 100644 (file)
@@ -61,6 +61,7 @@ uint32_t VolSessionTime;
 char *configfile = NULL;
 bool init_done = false;
 static pthread_t server_tid;
+static bool server_tid_valid = false;
 
 /* Global static variables */
 static bool foreground = 0;
@@ -271,6 +272,7 @@ int main (int argc, char *argv[])
 
    /* Single server used for Director and File daemon */
    server_tid = pthread_self();
+   server_tid_valid = true;
    bnet_thread_server(me->sdaddrs, me->max_concurrent_jobs * 2 + 1,
                       &dird_workq, handle_connection_request);
    exit(1);                           /* to keep compiler quiet */
@@ -674,8 +676,9 @@ void terminate_stored(int sig)
          Dmsg1(10, "No dev structure %s\n", device->device_name);
       }
    }
-
-   bnet_stop_thread_server(server_tid);
+   if (server_tid_valid) {
+      bnet_stop_thread_server(server_tid);
+   }
    if (configfile) {
       free(configfile);
       configfile = NULL;