]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/ua_server.c
Fix conio.h problem on Solaris
[bacula/bacula] / bacula / src / dird / ua_server.c
index 415a60e1a63ce44714c93888bf34f66ba6ca7263..bfdc5ec88580526c4a79f7886ae589a36f9fd9fb 100644 (file)
@@ -59,23 +59,23 @@ static workq_t ua_workq;
 
 struct s_addr_port {
    char *addr;
-   int port;
+   char *port;
 };
 
 /* Called here by Director daemon to start UA (user agent)
  * command thread. This routine creates the thread and then
  * returns.
  */
-void start_UA_server(char *UA_addr, int UA_port)
+void start_UA_server(dlist *addrs)
 {
    pthread_t thid;
    int status;
-   static struct s_addr_port arg;
+   static dlist *myaddrs = addrs;
 
-   arg.port = UA_port;
-   arg.addr = UA_addr;
-   if ((status=pthread_create(&thid, NULL, connect_thread, (void *)&arg)) != 0) {
-      Emsg1(M_ABORT, 0, _("Cannot create UA thread: %s\n"), strerror(status));
+   if ((status=pthread_create(&thid, NULL, connect_thread, (void *)myaddrs)) != 0) {
+      berrno be;
+      be.set_errno(status);
+      Emsg1(M_ABORT, 0, _("Cannot create UA thread: %s\n"), be.strerror());
    }
    started = TRUE;
    return;
@@ -84,12 +84,10 @@ void start_UA_server(char *UA_addr, int UA_port)
 extern "C" 
 void *connect_thread(void *arg)
 {
-   struct s_addr_port *UA = (struct s_addr_port *)arg;
-
    pthread_detach(pthread_self());
 
-   /*  ****FIXME**** put # 10 on config parameter */
-   bnet_thread_server(UA->addr, UA->port, 10, &ua_workq, handle_UA_client_request);
+   /*  ****FIXME**** put # 10 (timeout) on config parameter */
+   bnet_thread_server((dlist*)arg, 10, &ua_workq, handle_UA_client_request);
    return NULL;
 }
 
@@ -151,7 +149,7 @@ static void *handle_UA_client_request(void *arg)
    while (!ua->quit) {
       stat = bnet_recv(ua->UA_sock);
       if (stat >= 0) {
-        pm_strcpy(&ua->cmd, ua->UA_sock->msg);
+        pm_strcpy(ua->cmd, ua->UA_sock->msg);
         parse_ua_args(ua);
          if (ua->argc > 0 && ua->argk[0][0] == '.') {
            do_a_dot_command(ua, ua->cmd);