YAZ 5.37.0
seshigh.c File Reference

Implements GFS session logic. More...

#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <yaz/facet.h>
#include <yaz/xmalloc.h>
#include <yaz/comstack.h>
#include "eventl.h"
#include "session.h"
#include "mime.h"
#include <yaz/proto.h>
#include <yaz/oid_db.h>
#include <yaz/log.h>
#include <yaz/logrpn.h>
#include <yaz/querytowrbuf.h>
#include <yaz/statserv.h>
#include <yaz/diagbib1.h>
#include <yaz/charneg.h>
#include <yaz/otherinfo.h>
#include <yaz/yaz-util.h>
#include <yaz/pquery.h>
#include <yaz/query-charset.h>
#include <yaz/srw.h>
#include <yaz/backend.h>
#include <yaz/yaz-ccl.h>
#include <yaz/snprintf.h>

Go to the source code of this file.

Functions

static void process_gdu_request (association *assoc, request *req)
static int process_z_request (association *assoc, request *req, char **msg)
static int process_gdu_response (association *assoc, request *req, Z_GDU *res)
static int process_z_response (association *assoc, request *req, Z_APDU *res)
static Z_APDUprocess_initRequest (association *assoc, request *reqb)
static Z_Externalinit_diagnostics (ODR odr, int errcode, const char *errstring)
static Z_APDUprocess_searchRequest (association *assoc, request *reqb)
static Z_APDUresponse_searchRequest (association *assoc, request *reqb, bend_search_rr *bsrr)
static Z_APDUprocess_presentRequest (association *assoc, request *reqb)
static Z_APDUprocess_scanRequest (association *assoc, request *reqb)
static Z_APDUprocess_sortRequest (association *assoc, request *reqb)
static void process_close (association *assoc, request *reqb)
static Z_APDUprocess_deleteRequest (association *assoc, request *reqb)
static Z_APDUprocess_segmentRequest (association *assoc, request *reqb)
static Z_APDUprocess_ESRequest (association *assoc, request *reqb)
static void get_logbits (void)
static void wr_diag (WRBUF w, int error, const char *addinfo)
static int odr_int_to_int (Odr_int v)
associationcreate_association (IOCHAN channel, COMSTACK link, const char *apdufile)
void destroy_association (association *h)
static void do_close_req (association *a, int reason, char *message, request *req)
static void do_close (association *a, int reason, char *message)
int ir_read (IOCHAN h, int event)
void ir_session (IOCHAN h, int event)
static void assoc_init_reset (association *assoc, const char *peer_name1)
static int srw_bend_init (association *assoc, Z_HTTP_Header *headers, Z_SRW_diagnostic **d, int *num, Z_SRW_PDU *sr)
static int retrieve_fetch (association *assoc, bend_fetch_rr *rr)
static int srw_bend_fetch (association *assoc, int pos, Z_SRW_searchRetrieveRequest *srw_req, Z_SRW_record *record, const char **addinfo, int *last_in_set)
static int cql2pqf (ODR odr, const char *cql, cql_transform_t ct, Z_Query *query_result, char **sortkeys_p)
static int cql2pqf_scan (ODR odr, const char *cql, cql_transform_t ct, Z_AttributesPlusTerm *result)
static int ccl2pqf (ODR odr, const Odr_oct *ccl, CCL_bibset bibset, bend_search_rr *bsrr)
static void srw_bend_search (association *assoc, Z_HTTP_Header *headers, Z_SRW_PDU *sr, Z_SRW_PDU *res, int *http_code)
static char * srw_bend_explain_default (bend_explain_rr *rr)
static void srw_bend_explain (association *assoc, Z_HTTP_Header *headers, Z_SRW_PDU *sr, Z_SRW_explainResponse *srw_res, int *http_code)
static void srw_bend_scan (association *assoc, Z_HTTP_Header *headers, Z_SRW_PDU *sr, Z_SRW_PDU *res, int *http_code)
static void srw_bend_update (association *assoc, Z_HTTP_Header *headers, Z_SRW_PDU *sr, Z_SRW_updateResponse *srw_res, int *http_code)
static int check_path (const char *path)
static char * read_file (const char *fname, ODR o, long *sz)
static void process_http_request (association *assoc, request *req)
static char * get_vhost (Z_OtherInformation *otherInfo)
static Z_Recordsdiagrec (association *assoc, int error, char *addinfo)
static Z_NamePlusRecordsurrogatediagrec (association *assoc, const char *dbname, int error, const char *addinfo)
static Z_Recordspack_records (association *a, char *setname, Odr_int start, Odr_int *num, Z_RecordComposition *comp, Odr_int *next, Odr_int *pres, Z_ReferenceId *referenceId, Odr_oid *oid, int *errcode)
int bend_assoc_is_alive (bend_association assoc)

Variables

static int logbits_set = 0
static int log_session = 0
static int log_sessiondetail = 0
static int log_request = 0
static int log_requestdetail = 0

Detailed Description

Implements GFS session logic.

Frontend server logic.

This code receives incoming APDUs, and handles client requests by means of the backend API.

Some of the code is getting quite involved, compared to simpler servers - primarily because it is asynchronous both in the communication with the user and the backend. We think the complexity will pay off in the form of greater flexibility when more asynchronous facilities are implemented.

Memory management has become somewhat involved. In the simple case, where only one PDU is pending at a time, it will simply reuse the same memory, once it has found its working size. When we enable multiple concurrent operations, perhaps even with multiple parallel calls to the backend, it will maintain a pool of buffers for encoding and decoding, trying to minimize memory allocation/deallocation during normal operation.

Definition in file seshigh.c.

Function Documentation

◆ assoc_init_reset()

◆ bend_assoc_is_alive()

int bend_assoc_is_alive ( bend_association assoc)

Definition at line 3552 of file seshigh.c.

References ASSOC_DEAD, association::client_chan, iochan_is_alive(), and association::state.

Referenced by check_slow().

◆ ccl2pqf()

◆ check_path()

int check_path ( const char * path)
static

Definition at line 1748 of file seshigh.c.

Referenced by process_http_request().

◆ cql2pqf()

◆ cql2pqf_scan()

◆ create_association()

◆ destroy_association()

◆ diagrec()

◆ do_close()

void do_close ( association * a,
int reason,
char * message )
static

Definition at line 261 of file seshigh.c.

References do_close_req(), association::outgoing, and request_get().

Referenced by ir_read(), and ir_session().

◆ do_close_req()

◆ get_logbits()

void get_logbits ( void )
static

get_logbits sets global loglevel bits

Definition at line 109 of file seshigh.c.

References log_request, log_requestdetail, log_session, log_sessiondetail, logbits_set, and yaz_log_module_level().

Referenced by check_options(), and create_association().

◆ get_vhost()

char * get_vhost ( Z_OtherInformation * otherInfo)
static

Definition at line 2201 of file seshigh.c.

References yaz_oi_get_string_oid(), and yaz_oid_userinfo_proxy.

Referenced by process_initRequest().

◆ init_diagnostics()

Z_External * init_diagnostics ( ODR odr,
int errcode,
const char * errstring )
static

Definition at line 2487 of file seshigh.c.

References diagbib1_str(), log_requestdetail, yaz_log(), and zget_init_diagnostics().

Referenced by process_initRequest().

◆ ir_read()

◆ ir_session()

◆ odr_int_to_int()

◆ pack_records()

Z_Records * pack_records ( association * a,
char * setname,
Odr_int start,
Odr_int * num,
Z_RecordComposition * comp,
Odr_int * next,
Odr_int * pres,
Z_ReferenceId * referenceId,
Odr_oid * oid,
int * errcode )
static

◆ process_close()

◆ process_deleteRequest()

◆ process_ESRequest()

◆ process_gdu_request()

◆ process_gdu_response()

◆ process_http_request()

void process_http_request ( association * assoc,
request * req )
static

Definition at line 1794 of file seshigh.c.

References ASSOC_DEAD, check_path(), association::client_chan, Z_HTTP_Response::code, Z_HTTP_Response::content_buf, Z_HTTP_Response::content_len, control_association(), association::cs_get_mask, association::decode, Z_SRW_explainResponse::diagnostics, Z_SRW_scanResponse::diagnostics, Z_SRW_searchRetrieveResponse::diagnostics, Z_SRW_updateResponse::diagnostics, gfs_server::docpath, association::encode, Z_SRW_PDU::explain_request, Z_SRW_PDU::explain_response, request::gdu_request, Z_SOAP::generic, Z_HTTP_Request::headers, Z_HTTP_Response::headers, Z_GDU::HTTP_Request, Z_GDU::HTTP_Response, iochan_settimeout, statserv_options_block::keepalive, association::last_control, log_request, Z_HTTP_Request::method, Z_SRW_explainResponse::num_diagnostics, Z_SRW_scanResponse::num_diagnostics, Z_SRW_searchRetrieveResponse::num_diagnostics, Z_SRW_updateResponse::num_diagnostics, Z_SOAP_Generic::p, Z_HTTP_Request::path, process_gdu_response(), read_file(), Z_SRW_PDU::request, Z_SRW_PDU::response, Z_SRW_PDU::scan_request, Z_SRW_PDU::scan_response, association::server, srw_bend_explain(), srw_bend_scan(), srw_bend_search(), srw_bend_update(), Z_SRW_PDU::srw_version, association::state, gfs_server::stylesheet, Z_SRW_explainRequest::stylesheet, Z_SRW_scanRequest::stylesheet, Z_SRW_searchRetrieveRequest::stylesheet, Z_GDU::u, Z_SOAP::u, Z_SRW_PDU::u, Z_SRW_PDU::update_response, Z_HTTP_Request::version, Z_HTTP_Response::version, Z_SRW_PDU::which, yaz_isdigit, yaz_log(), yaz_mime_lookup_fname(), yaz_mime_types_add(), yaz_mime_types_create(), yaz_mime_types_destroy(), yaz_sru_decode(), yaz_srw_codec(), yaz_srw_decode(), yaz_srw_get_pdu(), yaz_srw_get_pdu_e(), yaz_ucp_codec(), YAZ_XMLNS_SRU_v1_0, YAZ_XMLNS_SRU_v1_1, YAZ_XMLNS_UPDATE_v0_9, YLOG_DEBUG, YLOG_LOG, z_get_HTTP_Response(), z_HTTP_header_add(), z_HTTP_header_lookup(), z_soap_codec_enc_xsl(), z_soap_error(), Z_SRW_explain_request, Z_SRW_explain_response, Z_SRW_scan_request, Z_SRW_scan_response, Z_SRW_searchRetrieve_request, Z_SRW_searchRetrieve_response, Z_SRW_update_request, and Z_SRW_update_response.

Referenced by process_gdu_request().

◆ process_initRequest()

Z_APDU * process_initRequest ( association * assoc,
request * reqb )
static

Definition at line 2213 of file seshigh.c.

References request::apdu_request, ASSOC_DEAD, assoc_init_reset(), ASSOC_UP, bend_initrequest::auth, association::backend, statserv_options_block::bend_close, bend_initrequest::bend_delete, bend_initrequest::bend_esrequest, statserv_options_block::bend_init, bend_initrequest::bend_present, bend_initrequest::bend_scan, bend_initrequest::bend_search, bend_initrequest::bend_segment, bend_initrequest::bend_sort, bend_initrequest::charneg_request, bend_initrequest::charneg_response, association::client_chan, statserv_options_block::configname, control_association(), association::encode, bend_initresult::errcode, bend_initresult::errstring, Z_OtherInformationUnit::externallyDefinedInfo, get_vhost(), Z_IdPass::groupId, bend_initresult::handle, Z_InitRequest::idAuthentication, statserv_options_block::idle_timeout, Z_IdAuthentication::idPass, bend_initrequest::implementation_id, bend_initrequest::implementation_name, bend_initrequest::implementation_version, Z_InitRequest::implementationId, Z_InitResponse::implementationId, Z_InitRequest::implementationName, Z_InitResponse::implementationName, Z_InitRequest::implementationVersion, Z_InitResponse::implementationVersion, Z_OtherInformationUnit::information, association::init, init_diagnostics(), Z_APDU::initRequest, Z_APDU::initResponse, iochan_settimeout, log_request, log_requestdetail, association::maximumRecordSize, Z_InitRequest::maximumRecordSize, Z_InitResponse::maximumRecordSize, bend_initrequest::named_result_sets, odr_int_to_int(), odr_intdup(), odr_malloc(), ODR_MASK_GET, ODR_MASK_SET, odr_prepend(), Z_IdAuthentication::open, options(), Z_InitRequest::options, Z_InitResponse::options, Z_InitRequest::otherInfo, Z_InitResponse::otherInfo, association::preferredMessageSize, Z_InitRequest::preferredMessageSize, Z_InitResponse::preferredMessageSize, Z_InitRequest::protocolVersion, Z_InitResponse::protocolVersion, bend_initrequest::query_charset, bend_initrequest::records_in_same_charset, bend_initrequest::referenceId, Z_InitRequest::referenceId, Z_InitResponse::referenceId, Z_InitResponse::result, association::state, statserv_getcontrol(), Z_APDU::u, Z_IdAuthentication::u, Z_IdPass::userId, Z_InitResponse::userInformationField, association::version, Z_CharSetandLanguageNegotiation::which, Z_IdAuthentication::which, Z_OtherInformationUnit::which, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_printf(), YAZ_BIB1_PERMANENT_SYSTEM_ERROR, yaz_get_charneg_record(), yaz_log(), yaz_oi_get_string_oid(), yaz_oi_update(), yaz_oid_userinfo_client_ip, yaz_set_response_charneg(), YLOG_DEBUG, YLOG_WARN, Z_APDU_initResponse, Z_CharSetandLanguageNegotiation_proposal, Z_IdAuthentication_anonymous, Z_IdAuthentication_idPass, Z_IdAuthentication_open, Z_Options_concurrentOperations, Z_Options_delSet, Z_Options_extendedServices, Z_Options_namedResultSets, Z_Options_negotiationModel, Z_Options_present, Z_Options_scan, Z_Options_search, Z_Options_sort, Z_Options_triggerResourceCtrl, Z_OtherInfo_externallyDefinedInfo, Z_ProtocolVersion_1, Z_ProtocolVersion_2, Z_ProtocolVersion_3, and zget_APDU().

Referenced by process_z_request().

◆ process_presentRequest()

◆ process_scanRequest()

Z_APDU * process_scanRequest ( association * assoc,
request * reqb )
static

Definition at line 3049 of file seshigh.c.

References Z_TermInfo::alternativeTerm, request::apdu_request, Z_ScanRequest::attributeSet, Z_ScanResponse::attributeSet, bend_scan_rr::attributeset, association::backend, bend_scan_rr::basenames, bend_initrequest::bend_scan, BEND_SCAN_PARTIAL, Z_TermInfo::byAttributes, Z_ScanRequest::databaseNames, association::decode, Z_DiagRecs::diagRecs, scan_entry::display_term, Z_TermInfo::displayTerm, association::encode, bend_scan_rr::entries, Z_ListEntries::entries, Z_ScanResponse::entries, bend_scan_rr::errcode, scan_entry::errcode, bend_scan_rr::errstring, scan_entry::errstring, bend_scan_rr::extra_args, bend_scan_rr::extra_response_data, Z_Term::general, Z_TermInfo::globalOccurrences, association::init, log_request, log_requestdetail, log_scan_term_level(), Z_ListEntries::nonsurrogateDiagnostics, bend_scan_rr::num_bases, Z_ScanRequest::num_databaseNames, Z_DiagRecs::num_diagRecs, bend_scan_rr::num_entries, Z_ListEntries::num_entries, Z_ListEntries::num_nonsurrogateDiagnostics, Z_ScanResponse::numberOfEntriesReturned, Z_ScanRequest::numberOfTermsRequested, scan_entry::occurrences, odr_create_Odr_oct(), ODR_INT_PRINTF, odr_int_to_int(), odr_intdup(), odr_malloc(), odr_strdup(), Z_ScanRequest::otherInfo, Z_ScanResponse::otherInfo, Z_TermInfo::otherTermInfo, Z_ScanResponse::positionOfTerm, Z_ScanRequest::preferredPositionInResponse, association::print, bend_scan_rr::print, bend_scan_rr::referenceId, Z_ScanRequest::referenceId, Z_ScanResponse::referenceId, bend_scan_rr::scanClause, Z_APDU::scanRequest, Z_APDU::scanResponse, Z_ScanResponse::scanStatus, bend_scan_rr::setname, bend_scan_rr::status, bend_scan_rr::step_size, Z_ScanRequest::stepSize, Z_ScanResponse::stepSize, bend_scan_rr::stream, Z_TermInfo::suggestedAttributes, Z_Entry::surrogateDiagnostic, bend_scan_rr::term, scan_entry::term, Z_TermInfo::term, bend_scan_rr::term_position, Z_Entry::termInfo, Z_ScanRequest::termListAndStartPoint, Z_APDU::u, Z_Entry::u, Z_Term::u, Z_APDU::which, Z_Entry::which, Z_Term::which, wr_diag(), wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_printf(), wrbuf_puts(), yaz_log(), yaz_oi_get_string_oid(), yaz_oid_userinfo_scan_set, yaz_scan_to_wrbuf(), YLOG_DEBUG, Z_APDU_scanResponse, Z_Entry_surrogateDiagnostic, Z_Entry_termInfo, Z_Scan_failure, Z_Scan_partial_5, Z_Scan_success, Z_Term_general, and zget_DiagRecs().

Referenced by process_z_request().

◆ process_searchRequest()

Z_APDU * process_searchRequest ( association * assoc,
request * reqb )
static

Definition at line 2691 of file seshigh.c.

References Z_SearchRequest::additionalSearchInfo, request::apdu_request, bend_search_rr::association, association::backend, bend_search_rr::basenames, bend_initrequest::bend_search, ccl2pqf(), gfs_server::ccl_transform, gfs_server::client_query_charset, Z_External::cql, cql2pqf(), gfs_server::cql_transform, Z_SearchRequest::databaseNames, association::decode, bend_search_rr::decode, association::encode, bend_search_rr::errcode, bend_search_rr::errstring, bend_search_rr::estimated_hit_count, bend_search_rr::extra_args, bend_search_rr::extra_response_data, bend_search_rr::hits, association::init, log_requestdetail, Z_SearchRequest::mediumSetPresentNumber, nmem_malloc(), nmem_transfer(), bend_search_rr::num_bases, Z_SearchRequest::num_databaseNames, odr_getmem, Z_SearchRequest::otherInfo, bend_search_rr::partial_resultset, bend_search_rr::present_number, association::print, bend_search_rr::print, bend_search_rr::query, Z_SearchRequest::query, bend_search_rr::referenceId, Z_SearchRequest::referenceId, bend_search_rr::replace_set, Z_SearchRequest::replaceIndicator, request::request_mem, response_searchRequest(), Z_SearchRequest::resultSetName, bend_search_rr::search_info, bend_search_rr::search_input, Z_APDU::searchRequest, association::server, bend_search_rr::setname, bend_search_rr::srw_setname, bend_search_rr::srw_setnameIdleTime, bend_search_rr::srw_sortKeys, bend_search_rr::stream, Z_Query::type_1, Z_Query::type_104, Z_Query::type_2, Z_APDU::u, Z_External::u, Z_Query::u, Z_External::which, Z_Query::which, yaz_diag_srw_to_bib1(), yaz_iconv_close(), yaz_iconv_open(), yaz_log(), yaz_log_zquery_level(), yaz_query_charset_convert_rpnquery(), YLOG_WARN, Z_External_CQL, Z_Query_type_1, Z_Query_type_104, and Z_Query_type_2.

Referenced by process_z_request().

◆ process_segmentRequest()

◆ process_sortRequest()

◆ process_z_request()

◆ process_z_response()

int process_z_response ( association * assoc,
request * req,
Z_APDU * res )
static

◆ read_file()

char * read_file ( const char * fname,
ODR o,
long * sz )
static

Definition at line 1757 of file seshigh.c.

References odr_malloc(), yaz_log(), YLOG_ERRNO, YLOG_LOG, and YLOG_WARN.

Referenced by process_http_request().

◆ response_searchRequest()

Z_APDU * response_searchRequest ( association * assoc,
request * reqb,
bend_search_rr * bsrr )
static

Definition at line 2793 of file seshigh.c.

References Z_SearchResponse::additionalSearchInfo, request::apdu_request, bend_present_rr::association, association::backend, bend_initrequest::bend_present, bool_t, bend_present_rr::comp, Z_SearchRequest::databaseNames, diagrec(), association::encode, bend_present_rr::errcode, bend_search_rr::errcode, bend_present_rr::errstring, bend_search_rr::errstring, bend_search_rr::estimated_hit_count, bend_present_rr::format, bend_search_rr::hits, association::init, Z_SearchRequest::largeSetLowerBound, log_request, log_requestdetail, Z_SearchRequest::mediumSetElementSetNames, Z_SearchRequest::mediumSetPresentNumber, Z_SearchResponse::nextResultSetPosition, nmem_malloc(), Z_SearchRequest::num_databaseNames, bend_present_rr::number, Z_SearchResponse::numberOfRecordsReturned, odr_booldup(), ODR_INT_PRINTF, odr_int_to_int(), odr_intdup(), odr_malloc(), Z_SearchResponse::otherInfo, pack_records(), bend_search_rr::partial_resultset, Z_SearchRequest::preferredRecordSyntax, Z_SearchResponse::presentStatus, association::print, bend_present_rr::print, Z_SearchRequest::query, Z_SearchResponse::records, bend_present_rr::referenceId, Z_SearchRequest::referenceId, Z_SearchResponse::referenceId, request::request_mem, Z_SearchResponse::resultCount, Z_SearchRequest::resultSetName, Z_SearchResponse::resultSetStatus, bend_search_rr::search_info, Z_APDU::searchRequest, Z_APDU::searchResponse, Z_SearchResponse::searchStatus, bend_present_rr::setname, Z_RecordComposition::simple, Z_SearchRequest::smallSetElementSetNames, Z_SearchRequest::smallSetUpperBound, bend_present_rr::start, bend_present_rr::stream, Z_APDU::u, Z_RecordComposition::u, Z_APDU::which, Z_RecordComposition::which, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_printf(), wrbuf_puts(), yaz_log(), yaz_query_to_wrbuf(), YLOG_FATAL, Z_APDU_searchResponse, Z_PresentStatus_failure, Z_RecordComp_simple, Z_SearchResponse_estimate, Z_SearchResponse_none, and Z_SearchResponse_subset.

Referenced by process_searchRequest().

◆ retrieve_fetch()

◆ srw_bend_explain()

◆ srw_bend_explain_default()

char * srw_bend_explain_default ( bend_explain_rr * rr)
static

◆ srw_bend_fetch()

int srw_bend_fetch ( association * assoc,
int pos,
Z_SRW_searchRetrieveRequest * srw_req,
Z_SRW_record * record,
const char ** addinfo,
int * last_in_set )
static

◆ srw_bend_init()

◆ srw_bend_scan()

void srw_bend_scan ( association * assoc,
Z_HTTP_Header * headers,
Z_SRW_PDU * sr,
Z_SRW_PDU * res,
int * http_code )
static

Definition at line 1331 of file seshigh.c.

References bend_scan_rr::attributeset, association::backend, bend_scan_rr::basenames, bend_initrequest::bend_scan, bend_initrequest::bend_srw_scan, cql2pqf_scan(), gfs_server::cql_transform, Z_SRW_scanRequest::database, association::decode, Z_SRW_scanResponse::diagnostics, scan_entry::display_term, Z_SRW_scanTerm::displayTerm, association::encode, bend_scan_rr::entries, bend_scan_rr::errcode, scan_entry::errcode, bend_scan_rr::errstring, scan_entry::errstring, bend_scan_rr::extra_args, Z_SRW_PDU::extra_args, bend_scan_rr::extra_response_data, Z_SRW_PDU::extraResponseData_buf, Z_SRW_PDU::extraResponseData_len, association::init, log_request, log_requestdetail, Z_SRW_scanRequest::maximumTerms, bend_scan_rr::num_bases, Z_SRW_scanResponse::num_diagnostics, bend_scan_rr::num_entries, Z_SRW_scanResponse::num_terms, Z_SRW_scanTerm::numberOfRecords, scan_entry::occurrences, ODR_INT_PRINTF, odr_int_to_int(), odr_intdup(), odr_malloc(), odr_strdup(), association::print, bend_scan_rr::print, Z_SRW_scanRequest::queryType, bend_scan_rr::referenceId, Z_SRW_scanRequest::responsePosition, Z_SRW_PDU::scan_request, Z_SRW_PDU::scan_response, bend_scan_rr::scanClause, Z_SRW_scanRequest::scanClause, association::server, bend_scan_rr::setname, srw_bend_init(), bend_scan_rr::step_size, bend_scan_rr::stream, bend_scan_rr::term, scan_entry::term, bend_scan_rr::term_position, Z_SRW_scanResponse::terms, Z_SRW_PDU::u, Z_SRW_diagnostic::uri, Z_SRW_scanTerm::value, Z_SRW_scanTerm::whereInList, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_printf(), yaz_add_srw_diagnostic(), YAZ_BIB1_DATABASE_UNAVAILABLE, yaz_diag_bib1_to_srw(), yaz_log(), yaz_pqf_create(), yaz_pqf_destroy(), yaz_pqf_scan(), and YAZ_SRW_UNSUPP_OPERATION.

Referenced by process_http_request().

◆ srw_bend_search()

void srw_bend_search ( association * assoc,
Z_HTTP_Header * headers,
Z_SRW_PDU * sr,
Z_SRW_PDU * res,
int * http_code )
static

Definition at line 926 of file seshigh.c.

References bend_present_rr::association, bend_search_rr::association, association::backend, bend_search_rr::basenames, bend_initrequest::bend_present, bend_initrequest::bend_search, bend_present_rr::comp, Z_External::cql, cql2pqf(), gfs_server::cql_transform, Z_SRW_searchRetrieveRequest::database, association::decode, bend_search_rr::decode, Z_External::descriptor, Z_SRW_searchRetrieveResponse::diagnostics, Z_External::direct_reference, association::encode, bend_present_rr::errcode, bend_search_rr::errcode, bend_present_rr::errstring, bend_search_rr::errstring, bend_search_rr::estimated_hit_count, bend_search_rr::extra_args, Z_SRW_PDU::extra_args, Z_SRW_searchRetrieveResponse::extra_records, bend_search_rr::extra_response_data, Z_SRW_PDU::extraResponseData_buf, Z_SRW_PDU::extraResponseData_len, Z_SRW_searchRetrieveRequest::facetList, Z_SRW_searchRetrieveResponse::facetList, Z_ElementSetNames::generic, bend_search_rr::hits, Z_External::indirect_reference, association::init, log_request, log_requestdetail, Z_SRW_searchRetrieveRequest::maximumRecords, bend_search_rr::num_bases, Z_SRW_searchRetrieveResponse::num_diagnostics, Z_SRW_searchRetrieveResponse::num_records, bend_present_rr::number, Z_SRW_searchRetrieveResponse::numberOfRecords, odr_getoidbystr(), ODR_INT_PRINTF, odr_int_to_int(), odr_intdup(), odr_malloc(), odr_strdup(), bend_search_rr::partial_resultset, bend_search_rr::present_number, association::print, bend_present_rr::print, bend_search_rr::print, bend_search_rr::query, Z_SRW_searchRetrieveRequest::query, Z_SRW_searchRetrieveRequest::queryType, Z_SRW_record::recordData_buf, Z_SRW_record::recordPacking, Z_SRW_searchRetrieveRequest::recordPacking, Z_SRW_searchRetrieveResponse::records, Z_SRW_searchRetrieveRequest::recordSchema, bend_present_rr::referenceId, bend_search_rr::referenceId, bend_search_rr::replace_set, Z_SRW_PDU::request, Z_SRW_PDU::response, Z_SRW_searchRetrieveResponse::resultCountPrecision, Z_SRW_searchRetrieveResponse::resultSetId, Z_SRW_searchRetrieveResponse::resultSetIdleTime, bend_search_rr::search_info, bend_search_rr::search_input, association::server, bend_present_rr::setname, bend_search_rr::setname, Z_RecordComposition::simple, Z_SRW_searchRetrieveRequest::sort, Z_SRW_searchRetrieveRequest::sortKeys, srw_bend_fetch(), srw_bend_init(), bend_search_rr::srw_setname, bend_search_rr::srw_setnameIdleTime, bend_search_rr::srw_sortKeys, Z_SRW_PDU::srw_version, bend_present_rr::start, Z_SRW_searchRetrieveRequest::startRecord, bend_present_rr::stream, bend_search_rr::stream, Z_Query::type_1, Z_Query::type_104, Z_ElementSetNames::u, Z_External::u, Z_Query::u, Z_RecordComposition::u, Z_SRW_PDU::u, Z_SRW_diagnostic::uri, Z_ElementSetNames::which, Z_External::which, Z_Query::which, Z_RecordComposition::which, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_printf(), yaz_add_srw_diagnostic(), YAZ_BIB1_DATABASE_UNAVAILABLE, yaz_diag_bib1_to_srw(), yaz_log(), yaz_log_zquery_level(), yaz_oi_get_facetlist(), yaz_oi_set_facetlist(), yaz_pqf_create(), yaz_pqf_destroy(), yaz_pqf_error(), yaz_pqf_parse(), YAZ_SRW_FIRST_RECORD_POSITION_OUT_OF_RANGE, YAZ_SRW_QUERY_SYNTAX_ERROR, YAZ_SRW_RESULT_SET_CREATED_WITH_VALID_PARTIAL_RESULTS_AVAILABLE, yaz_srw_str_to_pack(), YAZ_SRW_UNSUPP_QUERY_TYPE, YLOG_DEBUG, Z_ElementSetNames_generic, Z_External_CQL, Z_Query_type_1, Z_Query_type_104, Z_RecordComp_simple, and Z_SRW_recordPacking_string.

Referenced by process_http_request().

◆ srw_bend_update()

void srw_bend_update ( association * assoc,
Z_HTTP_Header * headers,
Z_SRW_PDU * sr,
Z_SRW_updateResponse * srw_res,
int * http_code )
static

Definition at line 1511 of file seshigh.c.

References association::backend, bend_update_rr::basenames, bend_initrequest::bend_srw_update, Z_SRW_updateRequest::database, bend_update_rr::details, Z_SRW_updateResponse::diagnostics, association::encode, Z_SRW_updateRequest::extra_record, Z_SRW_updateResponse::extra_record, bend_update_rr::extra_record_data, bend_update_rr::extra_request_data, bend_update_rr::extra_response_data, Z_SRW_extra_record::extraRecordData_buf, Z_SRW_extra_record::extraRecordData_len, Z_SRW_updateRequest::extraRequestData_buf, Z_SRW_updateRequest::extraRequestData_len, Z_SRW_updateResponse::extraResponseData_buf, Z_SRW_updateResponse::extraResponseData_len, association::init, log_session, bend_update_rr::message, bend_update_rr::num_bases, Z_SRW_updateResponse::num_diagnostics, Z_SRW_updateRequest::num_recordVersions, Z_SRW_updateResponse::num_recordVersions, bend_update_rr::num_versions, odr_strdup(), odr_strdupn(), bend_update_rr::operation, Z_SRW_updateRequest::operation, bend_update_rr::operation_status, Z_SRW_updateResponse::operationStatus, association::print, bend_update_rr::print, Z_SRW_updateRequest::record, Z_SRW_updateResponse::record, bend_update_rr::record_data, bend_update_rr::record_id, bend_update_rr::record_packing, bend_update_rr::record_schema, bend_update_rr::record_versions, Z_SRW_record::recordData_buf, Z_SRW_record::recordData_len, Z_SRW_updateRequest::recordId, Z_SRW_updateResponse::recordId, Z_SRW_extra_record::recordIdentifier, Z_SRW_record::recordPacking, Z_SRW_record::recordSchema, Z_SRW_updateRequest::recordVersions, Z_SRW_updateResponse::recordVersions, srw_bend_init(), bend_update_rr::stream, Z_SRW_PDU::u, Z_SRW_PDU::update_request, bend_update_rr::uri, yaz_add_sru_update_diagnostic(), yaz_add_srw_diagnostic_uri(), yaz_log(), YAZ_SRU_UPDATE_INVALID_ACTION, YAZ_SRU_UPDATE_MISSING_MANDATORY_ELEMENT_RECORD_REJECTED, YAZ_SRU_UPDATE_UNSPECIFIED_DATABASE_ERROR, yaz_srw_get_extra_record(), yaz_srw_get_record(), yaz_srw_pack_to_str(), yaz_srw_str_to_pack(), YLOG_DEBUG, YLOG_WARN, and Z_SRW_recordPacking_string.

Referenced by process_http_request().

◆ surrogatediagrec()

Z_NamePlusRecord * surrogatediagrec ( association * assoc,
const char * dbname,
int error,
const char * addinfo )
static

◆ wr_diag()

void wr_diag ( WRBUF w,
int error,
const char * addinfo )
static

Definition at line 121 of file seshigh.c.

References diagbib1_str(), wrbuf_printf(), wrbuf_puts(), and wrbuf_puts_replace_char().

Referenced by process_scanRequest().

Variable Documentation

◆ log_request

◆ log_requestdetail

◆ log_session

int log_session = 0
static

Definition at line 103 of file seshigh.c.

Referenced by get_logbits(), get_logbits(), ir_read(), ir_session(), new_session(), and srw_bend_update().

◆ log_sessiondetail

int log_sessiondetail = 0
static

Definition at line 104 of file seshigh.c.

Referenced by get_logbits(), get_logbits(), inetd_connection(), ir_session(), and listener().

◆ logbits_set

int logbits_set = 0
static

Definition at line 102 of file seshigh.c.

Referenced by create_association(), get_logbits(), and get_logbits().