X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-sru.c;h=f9baf44d6e00722a0cea7366c146867f09fdf981;hb=65fc6d0e2ca1ebe2d5a949f382a70b93f02ba88f;hp=557e812254f1385a04a15e19619190c9ebb42fd6;hpb=4849119cd60244ee5ed16958e885bc97315d23ad;p=yaz-moved-to-github.git diff --git a/src/zoom-sru.c b/src/zoom-sru.c index 557e812..f9baf44 100644 --- a/src/zoom-sru.c +++ b/src/zoom-sru.c @@ -36,12 +36,10 @@ static zoom_ret send_srw(ZOOM_connection c, Z_SRW_PDU *sr) Z_GDU *gdu; ZOOM_Event event; const char *database = ZOOM_options_get(c->options, "databaseName"); - char *fdatabase = 0; - - if (database) - fdatabase = yaz_encode_sru_dbpath_odr(c->odr_out, database); - gdu = z_get_HTTP_Request_host_path(c->odr_out, c->host_port, - fdatabase ? fdatabase : c->path); + + gdu = z_get_HTTP_Request_uri(c->odr_out, c->host_port, + database, + c->proxy ? 1 : 0); if (c->sru_mode == zoom_sru_get) { @@ -328,6 +326,7 @@ static zoom_ret handle_srw_response(ZOOM_connection c, npr->u.databaseRecord->descriptor = 0; npr->u.databaseRecord->direct_reference = odr_oiddup(c->odr_in, yaz_oid_recsyn_xml); + npr->u.databaseRecord->indirect_reference = 0; npr->u.databaseRecord->which = Z_External_octet; npr->u.databaseRecord->u.octet_aligned = (Odr_oct *) @@ -392,16 +391,15 @@ static void handle_srw_scan_response(ZOOM_connection c, #endif int ZOOM_handle_sru(ZOOM_connection c, Z_HTTP_Response *hres, - zoom_ret *cret) + zoom_ret *cret, char **addinfo) { #if YAZ_HAVE_XML2 int ret = 0; - const char *addinfo = 0; /* not redirect (normal response) */ if (!yaz_srw_check_content_type(hres)) { - addinfo = "content-type"; + *addinfo = "content-type"; ret = -1; } else if (c->sru_mode == zoom_sru_solr) @@ -446,7 +444,19 @@ int ZOOM_handle_sru(ZOOM_connection c, Z_HTTP_Response *hres, soap_package->u.fault->fault_string); } else + { + size_t max_chars = 1000; + size_t sz = hres->content_len; + if (sz > max_chars - 1) + sz = max_chars; + *addinfo = odr_malloc(c->odr_in, sz + 4); + memcpy(*addinfo, hres->content_buf, sz); + if (sz == max_chars) + strcpy(*addinfo + sz, "..."); + else + strcpy(*addinfo + sz, ""); ret = -1; + } } return ret; #else