]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/ua_server.c
Ensure that StorageId is updated after write
[bacula/bacula] / bacula / src / dird / ua_server.c
index 3a6076b44952d67e240ecf8bf5dfe717e7fd2901..b602e0a1e0e7e63989e8cfcaedc9c3462fcc067a 100644 (file)
@@ -6,7 +6,7 @@
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
    This program is Free Software; you can redistribute it and/or
-   modify it under the terms of version two of the GNU General Public
+   modify it under the terms of version three of the GNU Affero General Public
    License as published by the Free Software Foundation and included
    in the file LICENSE.
 
@@ -15,7 +15,7 @@
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
+   You should have received a copy of the GNU Affero General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
@@ -76,9 +76,10 @@ extern "C"
 void *connect_thread(void *arg)
 {
    pthread_detach(pthread_self());
+   set_jcr_in_tsd(INVALID_JCR);
 
-   /* Permit 20 console connections */
-   bnet_thread_server((dlist*)arg, 20, &ua_workq, handle_UA_client_request);
+   /* Permit MaxConsoleConnect console connections */
+   bnet_thread_server((dlist*)arg, director->MaxConsoleConnect, &ua_workq, handle_UA_client_request);
    return NULL;
 }
 
@@ -102,9 +103,9 @@ JCR *new_control_jcr(const char *base_name, int job_type)
    jcr->sd_auth_key = bstrdup("dummy"); /* dummy Storage daemon key */
    create_unique_job_name(jcr, base_name);
    jcr->sched_time = jcr->start_time;
-   jcr->set_JobType(job_type);
-   jcr->set_JobLevel(L_NONE);
-   set_jcr_job_status(jcr, JS_Running);
+   jcr->setJobType(job_type);
+   jcr->setJobLevel(L_NONE);
+   jcr->setJobStatus(JS_Running);
    jcr->JobId = 0;
    return jcr;
 }
@@ -126,7 +127,7 @@ static void *handle_UA_client_request(void *arg)
 
    ua = new_ua_context(jcr);
    ua->UA_sock = user;
-   set_jcr_in_tsd(jcr);
+   set_jcr_in_tsd(INVALID_JCR);
 
    user->recv();             /* Get first message */
    if (!authenticate_user_agent(ua)) {
@@ -194,6 +195,7 @@ UAContext *new_ua_context(JCR *jcr)
    ua->db = jcr->db;
    ua->cmd = get_pool_memory(PM_FNAME);
    ua->args = get_pool_memory(PM_FNAME);
+   ua->errmsg = get_pool_memory(PM_FNAME);
    ua->verbose = true;
    ua->automount = true;
    return ua;
@@ -207,10 +209,12 @@ void free_ua_context(UAContext *ua)
    if (ua->args) {
       free_pool_memory(ua->args);
    }
+   if (ua->errmsg) {
+      free_pool_memory(ua->errmsg);
+   }
    if (ua->prompt) {
       free(ua->prompt);
    }
-
    if (ua->UA_sock) {
       bnet_close(ua->UA_sock);
       ua->UA_sock = NULL;