X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-c.c;h=7e71b26b1171a44116a14505af7b5dd827375400;hb=9bf84c30a3d0e3e1d4b9136aee9c0a4b8ae769d2;hp=0d9137f43e7c25cc3bc613843a15d3035f7694c6;hpb=bc4b50939a936dbb214c783c18a44039ea048fdd;p=yaz-moved-to-github.git diff --git a/src/zoom-c.c b/src/zoom-c.c index 0d9137f..7e71b26 100644 --- a/src/zoom-c.c +++ b/src/zoom-c.c @@ -479,6 +479,14 @@ ZOOM_API(void) set_ZOOM_error(c, ZOOM_ERROR_NONE, 0); ZOOM_connection_remove_tasks(c); + if (ZOOM_options_get_bool(c->options, "apdulog", 0)) + { + c->odr_print = odr_createmem(ODR_PRINT); + odr_setprint(c->odr_print, yaz_log_file()); + } + else + c->odr_print = 0; + if (c->cs) { yaz_log(log_details, "%p ZOOM_connection_connect reconnect ok", c); @@ -613,13 +621,6 @@ ZOOM_API(void) ZOOM_options_get_int(c->options, "preferredMessageSize", 1024*1024); c->async = ZOOM_options_get_bool(c->options, "async", 0); - if (ZOOM_options_get_bool(c->options, "apdulog", 0)) - { - c->odr_print = odr_createmem(ODR_PRINT); - odr_setprint(c->odr_print, yaz_log_file()); - } - else - c->odr_print = 0; yaz_log(log_details, "%p ZOOM_connection_connect async=%d", c, c->async); task = ZOOM_connection_add_task(c, ZOOM_TASK_CONNECT); @@ -929,6 +930,7 @@ ZOOM_API(ZOOM_resultset) task->u.search.resultset = r; task->u.search.start = start; task->u.search.count = count; + task->u.search.recv_search_fired = 0; syntax = ZOOM_options_get(r->options, "preferredRecordSyntax"); task->u.search.syntax = syntax ? xstrdup(syntax) : 0; @@ -1443,8 +1445,17 @@ static zoom_ret send_srw(ZOOM_connection c, Z_SRW_PDU *sr) { Z_GDU *gdu; ZOOM_Event event; - - gdu = z_get_HTTP_Request_host_path(c->odr_out, c->host_port, c->path); + const char *database = ZOOM_options_get(c->options, "databaseName"); + char *fdatabase = 0; + + if (database) + { + fdatabase = (char *) odr_malloc(c->odr_out, strlen(database)+2); + strcpy(fdatabase, "/"); + strcat(fdatabase, database); + } + gdu = z_get_HTTP_Request_host_path(c->odr_out, c->host_port, + fdatabase ? fdatabase : c->path); if (c->sru_mode == zoom_sru_get) { @@ -3985,9 +3996,12 @@ static zoom_ret handle_srw_response(ZOOM_connection c, syntax = c->tasks->u.search.syntax; elementSetName = c->tasks->u.search.elementSetName; - event = ZOOM_Event_create(ZOOM_EVENT_RECV_SEARCH); - ZOOM_connection_put_event(c, event); - + if (!c->tasks->u.search.recv_search_fired) + { + event = ZOOM_Event_create(ZOOM_EVENT_RECV_SEARCH); + ZOOM_connection_put_event(c, event); + c->tasks->u.search.recv_search_fired = 1; + } break; case ZOOM_TASK_RETRIEVE: resultset = c->tasks->u.retrieve.resultset;