int rsGenQuery (rsComm_t *rsComm, genQueryInp_t *genQueryInp, genQueryOut_t **genQueryOut) { rodsServerHost_t *rodsServerHost; int status; char *zoneHint; zoneHint = getZoneHintForGenQuery (genQueryInp); status = getAndConnRcatHost(rsComm, SLAVE_RCAT, zoneHint, &rodsServerHost); if (status < 0) { return(status); } if (rodsServerHost->localFlag == LOCAL_HOST) { #ifdef RODS_CAT status = _rsGenQuery (rsComm, genQueryInp, genQueryOut); #else rodsLog(LOG_NOTICE, "rsGenQuery error. RCAT is not configured on this host"); return (SYS_NO_RCAT_SERVER_ERR); #endif } else { status = rcGenQuery(rodsServerHost->conn, genQueryInp, genQueryOut); } if (status < 0 && status != CAT_NO_ROWS_FOUND) { rodsLog (LOG_NOTICE, "rsGenQuery: rcGenQuery failed, status = %d", status); } return (status); }
int rsGenQuery( rsComm_t *rsComm, genQueryInp_t *genQueryInp, genQueryOut_t **genQueryOut ) { rodsServerHost_t *rodsServerHost; int status; char *zoneHint; zoneHint = getZoneHintForGenQuery( genQueryInp ); std::string zone_hint_str; if ( zoneHint ) { zone_hint_str = zoneHint; } status = getAndConnRcatHost( rsComm, SLAVE_RCAT, zoneHint, &rodsServerHost ); if ( status < 0 ) { return( status ); } // =-=-=-=-=-=-=- // handle non-irods connections if ( !zone_hint_str.empty() ) { irods::error ret = proc_query_terms_for_non_irods_server( zone_hint_str, genQueryInp ); if ( !ret.ok() ) { irods::log( PASS( ret ) ); } } if ( rodsServerHost->localFlag == LOCAL_HOST ) { #ifdef RODS_CAT status = _rsGenQuery( rsComm, genQueryInp, genQueryOut ); #else rodsLog( LOG_NOTICE, "rsGenQuery error. RCAT is not configured on this host" ); return ( SYS_NO_RCAT_SERVER_ERR ); #endif } else { status = rcGenQuery( rodsServerHost->conn, genQueryInp, genQueryOut ); } if ( status < 0 && status != CAT_NO_ROWS_FOUND ) { rodsLog( LOG_NOTICE, "rsGenQuery: rcGenQuery failed, status = %d", status ); } return ( status ); }
int rsGenQuery( rsComm_t *rsComm, genQueryInp_t *genQueryInp, genQueryOut_t **genQueryOut ) { rodsServerHost_t *rodsServerHost; int status; char *zoneHint; zoneHint = getZoneHintForGenQuery( genQueryInp ); std::string zone_hint_str; if ( zoneHint ) { zone_hint_str = zoneHint; } status = getAndConnRcatHost( rsComm, SLAVE_RCAT, zoneHint, &rodsServerHost ); if ( status < 0 ) { return status; } // =-=-=-=-=-=-=- // handle non-irods connections if ( !zone_hint_str.empty() ) { irods::error ret = proc_query_terms_for_non_irods_server( zone_hint_str, genQueryInp ); if ( !ret.ok() ) { irods::log( PASS( ret ) ); } } if ( rodsServerHost->localFlag == LOCAL_HOST ) { #ifdef RODS_CAT status = _rsGenQuery( rsComm, genQueryInp, genQueryOut ); #else rodsLog( LOG_NOTICE, "rsGenQuery error. RCAT is not configured on this host" ); return SYS_NO_RCAT_SERVER_ERR; #endif } else { // =-=-=-=-=-=-=- // strip disable strict acl flag if the agent conn flag is missing char* dis_kw = getValByKey( &genQueryInp->condInput, DISABLE_STRICT_ACL_KW ); if ( dis_kw ) { irods::server_properties& props = irods::server_properties::getInstance(); props.capture_if_needed(); std::string svr_sid; irods::error err = props.get_property< std::string >( irods::AGENT_CONN_KW, svr_sid ); if ( !err.ok() ) { rmKeyVal( &genQueryInp->condInput, DISABLE_STRICT_ACL_KW ); } } // if dis_kw status = rcGenQuery( rodsServerHost->conn, genQueryInp, genQueryOut ); } if ( status < 0 && status != CAT_NO_ROWS_FOUND ) { rodsLog( LOG_NOTICE, "rsGenQuery: rcGenQuery failed, status = %d", status ); } return status; }