X-Git-Url: http://git.indexdata.com/?p=simpleserver-moved-to-github.git;a=blobdiff_plain;f=SimpleServer.xs;h=230cd26bc7223d089de27c3584faa02a64120fcf;hp=e3e08be4020d33aae9bb8ca751f906f64d0be9fa;hb=159d2f7d178c6870b07bb10fc8bcea009ad3e786;hpb=547a71c5acc223963abc973d8b5045469378a14c diff --git a/SimpleServer.xs b/SimpleServer.xs index e3e08be..230cd26 100644 --- a/SimpleServer.xs +++ b/SimpleServer.xs @@ -25,7 +25,13 @@ */ /*$Log: SimpleServer.xs,v $ -/*Revision 1.18 2003-01-03 09:05:41 sondberg +/*Revision 1.20 2003-09-09 20:12:38 mike +/*Return diagnostics on Init failure +/* +/*Revision 1.19 2003/09/09 11:40:10 mike +/*(Finally!) support implementation-ID +/* +/*Revision 1.18 2003/01/03 09:05:41 sondberg /*Applied Dave's GRS-1 patch - actually this was already done in revision 1.17. /* /*Revision 1.16 2002/11/26 17:09:18 mike @@ -1151,6 +1157,7 @@ bend_initresult *bend_init(bend_initrequest *q) hv_store(href, "IMP_NAME", 8, newSVpv("", 0), 0); hv_store(href, "IMP_VER", 7, newSVpv("", 0), 0); hv_store(href, "ERR_CODE", 8, newSViv(0), 0); + hv_store(href, "ERR_STR", 7, newSViv(0), 0); hv_store(href, "PEER_NAME", 9, newSVpv(q->peer_name, 0), 0); hv_store(href, "HANDLE", 6, newSVsv(&sv_undef), 0); hv_store(href, "PID", 3, newSViv(getpid()), 0); @@ -1198,6 +1205,9 @@ bend_initresult *bend_init(bend_initrequest *q) temp = hv_fetch(href, "ERR_CODE", 8, 1); status = newSVsv(*temp); + temp = hv_fetch(href, "ERR_STR", 7, 1); + err_str = newSVsv(*temp); + temp = hv_fetch(href, "HANDLE", 6, 1); handle= newSVsv(*temp); @@ -1207,12 +1217,14 @@ bend_initresult *bend_init(bend_initrequest *q) LEAVE; zhandle->handle = handle; r->errcode = SvIV(status); + ptr = SvPV(err_str, len); + r->errstring = (char *)odr_malloc(q->stream, len + 1); + strcpy(r->errstring, ptr); + sv_free(err_str); r->handle = zhandle; -#if 0 /* implementation_id support is not yet in mainstream Yaz */ ptr = SvPV(id, len); q->implementation_id = (char *)xmalloc(len + 1); strcpy(q->implementation_id, ptr); -#endif ptr = SvPV(name, len); q->implementation_name = (char *)xmalloc(len + 1); strcpy(q->implementation_name, ptr);