|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T o
Length: 2553 (0x9f9) Types: TextFile Names: »oper_error.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/quipu/oper_error.c«
/* oper_error.c - deal with return of error to an operation */ #ifndef lint static char *rcsid = "$Header: /f/osi/quipu/RCS/oper_error.c,v 7.0 89/11/23 22:17:51 mrose Rel $"; #endif /* * $Header: /f/osi/quipu/RCS/oper_error.c,v 7.0 89/11/23 22:17:51 mrose Rel $ * * * $Log: oper_error.c,v $ * Revision 7.0 89/11/23 22:17:51 mrose * Release 6.0 * */ /* * NOTICE * * Acquisition, use, and distribution of this module and related * materials are subject to the restrictions of a license agreement. * Consult the Preface in the User's Manual for the full terms of * this agreement. * */ /* LINTLIBRARY */ #include "rosap.h" #include "quipu/util.h" #include "quipu/connection.h" #include "quipu/ds_error.h" extern LLog * log_dsap; oper_error(conn, roe) Conn conn; struct RoSAPerror *roe; { struct oper_act * oper; DLOG(log_dsap, LLOG_TRACE, ("net_wait_ro_error")); for(oper=conn->cn_operlist; oper != NULLOPER; oper=oper->on_next_conn) if(oper->on_id == roe->roe_id) break; if(oper == NULLOPER) { LLOG(log_dsap, LLOG_FATAL, ("Task memerr 6")); send_ro_ureject(conn->cn_ad, &(roe->roe_id), ROS_REP_UNRECOG); return; } if(oper->on_state == ON_ABANDONED) { LLOG(log_dsap, LLOG_NOTICE, ("oper_result - operation had been abandoned")); oper_extract(oper); return; } if(ds_recog_err(roe->roe_error)) { if((decode_OPError(roe->roe_param, roe->roe_error, &(oper->on_resp.resp_err))) == OK) { oper->on_resp.resp_type = RESP_TYPE_RET; oper->on_resp.ret_type = RET_TYPE_ERR; /* Need to check type of operation here! */ switch(oper->on_type) { case ON_TYPE_X500: task_error_wakeup(oper); break; case ON_TYPE_SUBTASK: subtask_error_wakeup(oper); break; case ON_TYPE_BIND_COMPARE: bind_compare_error_wakeup(oper); break; case ON_TYPE_GET_DSA_INFO: dsa_info_error_wakeup(oper); break; case ON_TYPE_NAMESERVICE: nameservice_error_wakeup(oper); break; case ON_TYPE_GET_EDB: get_edb_fail_wakeup(oper); break; default: LLOG(log_dsap, LLOG_EXCEPTIONS, ("oper_error - on_type invalid")); break; } } else { LLOG(log_dsap, LLOG_EXCEPTIONS, ("oper_error - Undecodable error")); oper_fail_wakeup(oper); } } else { LLOG(log_dsap, LLOG_EXCEPTIONS, ("oper_error - Unrecognised error")); send_ro_ureject(conn->cn_ad, &(roe->roe_id), ROS_REP_RECERR); oper_fail_wakeup(oper); } }