X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsession.c;h=14b9a2caba8937a36bdf1cba09307d47638f6341;hb=88f96194d5a63278eb57b32c814019dab51da9ff;hp=3034f7e7988c546e86e98459b63a74d417197f7d;hpb=368388b5574c07d70a5fd38ee52f5fa61e469d02;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index 3034f7e..14b9a2c 100644 --- a/src/session.c +++ b/src/session.c @@ -25,6 +25,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #endif +#include #include #include #include @@ -359,7 +360,7 @@ static int prepare_map(struct session *se, struct session_database *sdb) } } sdb->map = normalize_cache_get(se->normalize_cache, - se->service, s); + se->service->server->config, s); if (!sdb->map) return -1; } @@ -513,6 +514,8 @@ enum pazpar2_error_code search(struct session *se, int no_working = 0; int no_failed = 0; struct client_list *l; + struct timespec abstime; + struct timeval tval; yaz_log(YLOG_DEBUG, "Search"); @@ -523,8 +526,8 @@ enum pazpar2_error_code search(struct session *se, session_enter(se); reclist_destroy(se->reclist); se->reclist = 0; - nmem_reset(se->nmem); relevance_destroy(&se->relevance); + nmem_reset(se->nmem); se->total_records = se->total_hits = se->total_merged = 0; se->num_termlists = 0; live_channels = select_targets(se, filter); @@ -535,6 +538,11 @@ enum pazpar2_error_code search(struct session *se, } se->reclist = reclist_create(se->nmem); + gettimeofday(&tval, 0); + + abstime.tv_sec = tval.tv_sec + 5; + abstime.tv_nsec = tval.tv_usec * 1000; + for (l = se->clients; l; l = l->next) { struct client *cl = l->client; @@ -552,7 +560,8 @@ enum pazpar2_error_code search(struct session *se, no_working++; if (client_prep_connection(cl, se->service->z3950_operation_timeout, se->service->z3950_session_timeout, - se->service->server->iochan_man)) + se->service->server->iochan_man, + &abstime)) client_start_search(cl); } }