Merge branch 'master' of /home/quinn/proj/pazpar2
[pazpar2-moved-to-github.git] / src / connection.c
index 197dbcb..08d80e6 100644 (file)
@@ -189,7 +189,7 @@ struct connection *connection_create(struct client *cl)
     client_set_connection(cl, new);
     new->link = 0;
     new->resultset = 0;
-    new->state = Conn_Connecting;
+    new->state = Conn_Resolving;
     if (host->ipport)
         connection_connect(new);
     return new;
@@ -309,6 +309,7 @@ void connect_resolver_host(struct host *host)
             else
             {
                 connection_connect(con);
+                client_start_search(con->client);
             }
         }
         else
@@ -352,6 +353,8 @@ int connection_connect(struct connection *con)
     struct host *host = connection_get_host(con);
     ZOOM_options zoptions = ZOOM_options_create();
     char *auth;
+    char *sru;
+    char ipport[512] = "";
 
     struct session_database *sdb = client_get_database(con->client);
     const char *zproxy = session_setting_oneval(sdb, PZ_ZPROXY);
@@ -375,6 +378,8 @@ int connection_connect(struct connection *con)
 
     if ((auth = (char*) session_setting_oneval(sdb, PZ_AUTHENTICATION)))
         ZOOM_options_set(zoptions, "user", auth);
+    if ((sru = (char*) session_setting_oneval(sdb, PZ_SRU)) && *sru)
+        ZOOM_options_set(zoptions, "sru", sru);
 
     if (!(link = ZOOM_connection_create(zoptions)))
     {
@@ -382,7 +387,12 @@ int connection_connect(struct connection *con)
         ZOOM_options_destroy(zoptions);
         return -1;
     }
-    ZOOM_connection_connect(link, host->ipport, 0);
+
+    if (sru && *sru)
+        strcpy(ipport, "http://");
+    strcat(ipport, host->ipport);
+
+    ZOOM_connection_connect(link, ipport, 0);
     
     con->link = link;
     con->iochan = iochan_create(0, connection_handler, 0);
@@ -453,7 +463,7 @@ int client_prep_connection(struct client *cl)
             co = connection_create(cl);
     }
 
-    if (co)
+    if (co && co->link)
         return 1;
     else
         return 0;