X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsrwutil.c;h=178d8869af9ba6b0b69995fe72df861cd8bb3a8f;hb=00ec8caa79fb66584067d81d5807d53547ed833b;hp=f7c8a2ff11f1ad824cfe495372e5fbface1fd839;hpb=5242cb5a8634bfa38b9333ff7f903e718ac6e292;p=yaz-moved-to-github.git diff --git a/src/srwutil.c b/src/srwutil.c index f7c8a2f..178d886 100644 --- a/src/srwutil.c +++ b/src/srwutil.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2012 Index Data + * Copyright (C) 1995-2013 Index Data * See the file LICENSE for details. */ /** @@ -466,8 +466,11 @@ int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, (*l)->next = 0; } else - yaz_add_srw_diagnostic(decode, diag, num_diag, - YAZ_SRW_UNSUPP_PARAMETER, n); + { + if (*num_diag < 10) + yaz_add_srw_diagnostic(decode, diag, num_diag, + YAZ_SRW_UNSUPP_PARAMETER, n); + } } } if (!version) @@ -669,8 +672,9 @@ int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, YAZ_SRW_UNSUPP_OPERATION, operation); return 0; } -#endif +#else return 1; +#endif } return 2; } @@ -1097,6 +1101,9 @@ void yaz_encode_sru_extra(Z_SRW_PDU *sr, ODR odr, const char *extra_args) Z_SRW_extra_arg **ea = &sr->extra_args; yaz_uri_to_array(extra_args, odr, &name, &val); + /** append rather than override */ + while (*ea) + ea = &(*ea)->next; while (*name) { *ea = (Z_SRW_extra_arg *) odr_malloc(odr, sizeof(**ea));