|
|
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 r
Length: 3520 (0xdc0)
Types: TextFile
Names: »ryunbind.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/dsap/net/ryunbind.c«
/* ryunbind.c - ROSY: unbind */
#ifndef lint
static char *rcsid = "$Header: /f/osi/dsap/net/RCS/ryunbind.c,v 7.0 89/11/23 21:48:29 mrose Rel $";
#endif
/*
* $Header: /f/osi/dsap/net/RCS/ryunbind.c,v 7.0 89/11/23 21:48:29 mrose Rel $
*
*
* $Log: ryunbind.c,v $
* Revision 7.0 89/11/23 21:48:29 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 <stdio.h>
#include "rosy.h"
#include <varargs.h>
/* \f
BIND */
/* ARGSUSED */
int RyUnBind (sd, reason, data, acr, aci)
int sd;
int reason;
PE data;
struct AcSAPrelease *acr;
struct AcSAPindication *aci;
{
return (RyUnBindAux (sd, reason, data, acr, aci, NOTOK));
}
int RyUnBindAux (sd, reason, data, acr, aci, secs)
int sd;
int reason;
PE data;
struct AcSAPrelease *acr;
struct AcSAPindication *aci;
int secs;
{
int result;
PE user_data,
pe;
PE *user_datap = &(user_data);
int ndata;
/* Wrap the user data with the remote operations UNBIND tag */
if (data != NULLPE) {
if (build_Remote__Operations__Notation_UnBindArgumentValue (user_datap,
1, 0, NULLCP, data) == NOTOK) {
return NOTOK;
}
(*user_datap) -> pe_context = data->pe_context;
ndata = 1;
} else {
ndata = 0;
}
/*
The result of this procedure should be based upon parsing the result in
the case of an A-RELEASE.CONFIRMATION and the presence of this data
*/
if ((result = AcRelRequest (sd, reason, user_datap, ndata, secs, acr,
aci)) != NOTOK) {
if (acr->acr_info[0] != NULLPE) {
pe = pe_cpy (acr->acr_info[0]);
pe_free (acr->acr_info[0]);
if (acr -> acr_affirmative == ACS_ACCEPT) {
if (parse_Remote__Operations__Notation_UnBindResultValue (pe,
1, NULLIP, NULLVP, &acr->acr_info[0]) != OK) {
/* should reject */
acr->acr_info[0] = pe_cpy(pe);
}
/*
ACRFREE (acr);
*/
} else {
if (parse_Remote__Operations__Notation_UnBindErrorValue (pe,
1, NULLIP, NULLVP, &acr->acr_info[0]) != OK) {
/* should reject */
acr->acr_info[0] = pe_cpy(pe);
}
/* Consider AcUAbortRequest here */
}
pe_free (pe);
}
} else {
if ( aci->aci_abort.aca_reason == ACS_TIMER)
return DONE; /* more work needed !!! */
}
return result;
}
#include "logger.h"
int RyUnBindRetry (sd, acr, aci)
int sd;
struct AcSAPrelease *acr;
struct AcSAPindication *aci;
{
int result;
PE pe;
extern LLog * log_dsap;
if ((result = AcRelRetryRequest (sd, OK, acr, aci)) != NOTOK) {
if (acr->acr_info[0] != NULLPE) {
pe = pe_cpy (acr->acr_info[0]);
pe_free (acr->acr_info[0]);
if (acr -> acr_affirmative == ACS_ACCEPT) {
if (parse_Remote__Operations__Notation_UnBindResultValue (pe,
1, NULLIP, NULLVP, &acr->acr_info[0]) != OK) {
/* should reject */
acr->acr_info[0] = pe_cpy(pe);
}
/*
ACRFREE (acr);
*/
} else {
if (parse_Remote__Operations__Notation_UnBindErrorValue (pe,
1, NULLIP, NULLVP, &acr->acr_info[0]) != OK) {
/* should reject */
acr->acr_info[0] = pe_cpy(pe);
}
/* Consider AcUAbortRequest here */
}
pe_free (pe);
}
} else {
DLOG (log_dsap,LLOG_EXCEPTIONS,("NOTOK AcRelRetryRequest()"));
if ( aci->aci_abort.aca_reason == ACS_TIMER)
return DONE; /* more work needed !!! */
}
return result;
}