projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
partiallay fix bug #405
[yaz-moved-to-github.git]
/
src
/
seshigh.c
diff --git
a/src/seshigh.c
b/src/seshigh.c
index
6b0f80e
..
e1449ec
100644
(file)
--- a/
src/seshigh.c
+++ b/
src/seshigh.c
@@
-2,7
+2,7
@@
* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: seshigh.c,v 1.85 2006-05-31 16:20:41 quinn Exp $
+ * $Id: seshigh.c,v 1.89 2006-07-06 14:16:00 marc Exp $
*/
/**
* \file seshigh.c
*/
/**
* \file seshigh.c
@@
-50,7
+50,7
@@
#include <unistd.h>
#endif
#include <unistd.h>
#endif
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
#include <libxml/parser.h>
#include <libxml/tree.h>
#endif
#include <libxml/parser.h>
#include <libxml/tree.h>
#endif
@@
-577,7
+577,7
@@
static void set_esn(Z_RecordComposition **comp_p, const char *esn, NMEM nmem)
static int retrieve_fetch(association *assoc, bend_fetch_rr *rr)
{
static int retrieve_fetch(association *assoc, bend_fetch_rr *rr)
{
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
yaz_record_conv_t rc = 0;
const char *match_schema = 0;
int *match_syntax = 0;
yaz_record_conv_t rc = 0;
const char *match_schema = 0;
int *match_syntax = 0;
@@
-1119,6
+1119,8
@@
static void srw_bend_search(association *assoc, request *req,
break;
}
wrbuf_printf(wr, "SRWSearch ");
break;
}
wrbuf_printf(wr, "SRWSearch ");
+ wrbuf_printf(wr, srw_req->database);
+ wrbuf_printf(wr, " ");
if (srw_res->num_diagnostics)
wrbuf_printf(wr, "ERROR %s", srw_res->diagnostics[0].uri);
else if (*http_code != 200)
if (srw_res->num_diagnostics)
wrbuf_printf(wr, "ERROR %s", srw_res->diagnostics[0].uri);
else if (*http_code != 200)
@@
-1141,7
+1143,7
@@
static void srw_bend_search(association *assoc, request *req,
static char *srw_bend_explain_default(void *handle, bend_explain_rr *rr)
{
static char *srw_bend_explain_default(void *handle, bend_explain_rr *rr)
{
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
xmlNodePtr ptr = rr->server_node_ptr;
if (!ptr)
return 0;
xmlNodePtr ptr = rr->server_node_ptr;
if (!ptr)
return 0;
@@
-1440,8
+1442,9
@@
static void srw_bend_update(association *assoc, request *req,
rr.response_extra_record = 0;
rr.extra_request_data = 0;
rr.extra_response_data = 0;
rr.response_extra_record = 0;
rr.extra_request_data = 0;
rr.extra_response_data = 0;
- rr.errcode = 0;
- rr.errstring = 0;
+ rr.uri = 0;
+ rr.message = 0;
+ rr.details = 0;
yaz_log(YLOG_DEBUG, "basename = %s", rr.basenames[0] );
yaz_log(YLOG_DEBUG, "Operation = %s", rr.operation );
yaz_log(YLOG_DEBUG, "basename = %s", rr.basenames[0] );
yaz_log(YLOG_DEBUG, "Operation = %s", rr.operation );
@@
-1520,6
+1523,7
@@
static void srw_bend_update(association *assoc, request *req,
}
else if ( !strcmp( rr.operation, "insert" ) )
{
}
else if ( !strcmp( rr.operation, "insert" ) )
{
+ rr.record_id = srw_req->recordId;
if ( srw_req->record.recordSchema == 0 ){
yaz_add_srw_diagnostic(assoc->encode, &srw_res->diagnostics,
&srw_res->num_diagnostics,
if ( srw_req->record.recordSchema == 0 ){
yaz_add_srw_diagnostic(assoc->encode, &srw_res->diagnostics,
&srw_res->num_diagnostics,
@@
-1566,11
+1570,14
@@
static void srw_bend_update(association *assoc, request *req,
return;
}
}
return;
}
}
- if (rr.errcode)
- yaz_add_srw_diagnostic(assoc->encode,
- &srw_res->diagnostics,
- &srw_res->num_diagnostics,
- rr.errcode, rr.errstring);
+
+ if (rr.uri)
+ yaz_add_srw_diagnostic_uri(assoc->encode,
+ &srw_res->diagnostics,
+ &srw_res->num_diagnostics,
+ rr.uri,
+ rr.message,
+ rr.details);
srw_res->recordId = rr.record_id;
srw_res->operationStatus = rr.operation_status;
srw_res->recordVersion = rr.record_version;
srw_res->recordId = rr.record_id;
srw_res->operationStatus = rr.operation_status;
srw_res->recordVersion = rr.record_version;
@@
-1786,7
+1793,7
@@
static void process_http_request(association *assoc, request *req)
if (http_code == 200 || http_code == 500)
{
static Z_SOAP_Handler soap_handlers[4] = {
if (http_code == 200 || http_code == 500)
{
static Z_SOAP_Handler soap_handlers[4] = {
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
{"http://www.loc.gov/zing/srw/", 0,
(Z_SOAP_fun) yaz_srw_codec},
{"http://www.loc.gov/zing/srw/v1.0/", 0,
{"http://www.loc.gov/zing/srw/", 0,
(Z_SOAP_fun) yaz_srw_codec},
{"http://www.loc.gov/zing/srw/v1.0/", 0,
@@
-2244,7
+2251,8
@@
static Z_APDU *process_initRequest(association *assoc, request *reqb)
strcat(options, " negotiation");
}
strcat(options, " negotiation");
}
- ODR_MASK_SET(resp->options, Z_Options_triggerResourceCtrl);
+ if (ODR_MASK_GET(req->options, Z_Options_triggerResourceCtrl))
+ ODR_MASK_SET(resp->options, Z_Options_triggerResourceCtrl);
if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_1))
{
if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_1))
{
@@
-2282,7
+2290,7
@@
static Z_APDU *process_initRequest(association *assoc, request *reqb)
assoc->init->implementation_name,
odr_prepend(assoc->encode, "GFS", resp->implementationName));
assoc->init->implementation_name,
odr_prepend(assoc->encode, "GFS", resp->implementationName));
- version = odr_strdup(assoc->encode, "$Revision: 1.85 $");
+ version = odr_strdup(assoc->encode, "$Revision: 1.89 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
resp->implementationVersion = odr_prepend(assoc->encode,
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
resp->implementationVersion = odr_prepend(assoc->encode,
@@
-2755,7
+2763,17
@@
static Z_APDU *response_searchRequest(association *assoc, request *reqb,
if (log_request)
{
if (log_request)
{
+ int i;
WRBUF wr = wrbuf_alloc();
WRBUF wr = wrbuf_alloc();
+ /* int num_databaseNames;
+ Z_DatabaseName **databaseNames; */
+ for (i = 0 ; i < req->num_databaseNames; i++){
+ if (i)
+ wrbuf_printf(wr, ",");
+ wrbuf_printf(wr, req->databaseNames[i]);
+ }
+ wrbuf_printf(wr, " ");
+
if (bsrt->errcode)
wrbuf_printf(wr, "ERROR %d", bsrt->errcode);
else
if (bsrt->errcode)
wrbuf_printf(wr, "ERROR %d", bsrt->errcode);
else