X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=client%2Fclient.c;h=cacc274162d5bea10913edd4a88dc2f9affe0b9c;hp=bf3ee37b817b7fa4ac66c69080ff9a895bd8349a;hb=8dc67a9430644549801c18ec7e3a725e5a4ef782;hpb=94d2f62cf9d0185e933e238ae36081b00e43d1a0 diff --git a/client/client.c b/client/client.c index bf3ee37..cacc274 100644 --- a/client/client.c +++ b/client/client.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2004, Index Data * See the file LICENSE for details. * - * $Id: client.c,v 1.234 2004-03-01 17:33:02 adam Exp $ + * $Id: client.c,v 1.239 2004-04-28 12:10:51 adam Exp $ */ #include @@ -16,6 +16,14 @@ #include #endif +#if HAVE_OPENSSL_SSL_H +#include +#include +#include +#include +#include +#endif + #include #include @@ -308,15 +316,15 @@ static void send_initRequest(const char* type_and_host) yaz_oi_APDU(apdu, &p); if ((p0=yaz_oi_update(p, out, NULL, 0, 0))) { - ODR_MASK_SET(req->options, Z_Options_negotiationModel); - - p0->which = Z_OtherInfo_externallyDefinedInfo; - p0->information.externallyDefinedInfo = - yaz_set_proposal_charneg( - out, - (const char**)&negotiationCharset, - negotiationCharset ? 1 : 0, - (const char**)&yazLang, yazLang ? 1 : 0, 1); + ODR_MASK_SET(req->options, Z_Options_negotiationModel); + + p0->which = Z_OtherInfo_externallyDefinedInfo; + p0->information.externallyDefinedInfo = + yaz_set_proposal_charneg( + out, + (const char**)&negotiationCharset, + negotiationCharset ? 1 : 0, + (const char**)&yazLang, yazLang ? 1 : 0, 1); } } @@ -529,6 +537,9 @@ int session_connect(const char *arg) void *add; char type_and_host[101]; const char *basep = 0; +#if HAVE_OPENSSL_SSL_H + SSL *ssl; +#endif if (conn) { cs_close (conn); @@ -586,6 +597,31 @@ int session_connect(const char *arg) return 0; } printf("OK.\n"); +#if HAVE_OPENSSL_SSL_H + if ((ssl = (SSL *) cs_get_ssl(conn))) + { + X509 *server_cert = SSL_get_peer_certificate (ssl); + char *str; + if (server_cert) + { + printf ("Server certificate:\n"); + + str = X509_NAME_oneline (X509_get_subject_name (server_cert),0,0); + if (str) + { + printf ("\t subject: %s\n", str); + free (str); + } + str = X509_NAME_oneline (X509_get_issuer_name (server_cert),0,0); + if (str) + { + printf ("\t issuer: %s\n", str); + free (str); + } + X509_free (server_cert); + } + } +#endif if (basep && *basep) set_base (basep); if (protocol == PROTO_Z3950) @@ -741,16 +777,16 @@ static void display_record(Z_External *r) } } } - if (ent && ent->oclass != CLASS_RECSYN) - return; if (ent && ent->value == VAL_SOIF) print_record((const unsigned char *) r->u.octet_aligned->buf, r->u.octet_aligned->len); else if (r->which == Z_External_octet) { const char *octet_buf = (char*)r->u.octet_aligned->buf; - if (ent->value == VAL_TEXT_XML || ent->value == VAL_APPLICATION_XML || - ent->value == VAL_HTML) + if (ent->oclass == CLASS_RECSYN && + (ent->value == VAL_TEXT_XML || + ent->value == VAL_APPLICATION_XML || + ent->value == VAL_HTML)) { print_record((const unsigned char *) octet_buf, r->u.octet_aligned->len); @@ -916,6 +952,8 @@ static void display_record(Z_External *r) printf ("shelvingLocation: %s\n", data->shelvingLocation); if (data->callNumber) printf ("callNumber: %s\n", data->callNumber); + if (data->shelvingData) + printf ("shelvingData: %s\n", data->shelvingData); if (data->copyNumber) printf ("copyNumber: %s\n", data->copyNumber); if (data->publicNote)