Annotation of 43BSDReno/contrib/isode-beta/rtsap/rt2psreleas1.c, revision 1.1.1.1

1.1       root        1: /* rt2psreleas1.c - RTPM: initiate release */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/rtsap/RCS/rt2psreleas1.c,v 7.1 90/07/01 21:06:55 mrose Exp $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/rtsap/RCS/rt2psreleas1.c,v 7.1 90/07/01 21:06:55 mrose Exp $
                      9:  *
                     10:  *
                     11:  * $Log:       rt2psreleas1.c,v $
                     12:  * Revision 7.1  90/07/01  21:06:55  mrose
                     13:  * pepsy
                     14:  * 
                     15:  * Revision 6.0  89/03/18  23:43:11  mrose
                     16:  * Release 5.0
                     17:  * 
                     18:  */
                     19: 
                     20: /*
                     21:  *                               NOTICE
                     22:  *
                     23:  *    Acquisition, use, and distribution of this module and related
                     24:  *    materials are subject to the restrictions of a license agreement.
                     25:  *    Consult the Preface in the User's Manual for the full terms of
                     26:  *    this agreement.
                     27:  *
                     28:  */
                     29: 
                     30: 
                     31: /* LINTLIBRARY */
                     32: 
                     33: #include <stdio.h>
                     34: #include <signal.h>
                     35: #include "rtpkt.h"
                     36: 
                     37: /*    RT-CLOSE.REQUEST */
                     38: 
                     39: int    RtCloseRequest (sd, reason, data, acr, rti)
                     40: int    sd,
                     41:        reason;
                     42: PE     data;
                     43: struct AcSAPrelease *acr;
                     44: struct RtSAPindication *rti;
                     45: {
                     46:     SBV            smask;
                     47:     int            result;
                     48:     register struct assocblk *acb;
                     49: 
                     50:     missingP (acr);
                     51:     missingP (rti);
                     52: 
                     53:     smask = sigioblock ();
                     54: 
                     55:     rtsapPsig (acb, sd);
                     56: 
                     57:     result = RtCloseRequestAux (acb, reason, data, acr, rti);
                     58: 
                     59:     (void) sigiomask (smask);
                     60: 
                     61:     return result;
                     62: }
                     63: 
                     64: /*  */
                     65: 
                     66: static int  RtCloseRequestAux (acb, reason, data, acr, rti)
                     67: register struct assocblk *acb;
                     68: int    reason;
                     69: PE     data;
                     70: struct AcSAPrelease *acr;
                     71: register struct RtSAPindication *rti;
                     72: {
                     73:     int            result;
                     74:     struct AcSAPindication acis;
                     75:     register struct AcSAPindication *aci = &acis;
                     76:     register struct AcSAPabort *aca = &aci -> aci_abort;
                     77: 
                     78:     if (!(acb -> acb_flags & ACB_ACS))
                     79:        return rtsaplose (rti, RTS_OPERATION, NULLCP,
                     80:                    "not an association descriptor for RTS");
                     81:     if (!(acb -> acb_flags & ACB_INIT) && (acb -> acb_flags & ACB_TWA))
                     82:        return rtsaplose (rti, RTS_OPERATION, NULLCP, "not initiator");
                     83:     if (!(acb -> acb_flags & ACB_TURN))
                     84:        return rtsaplose (rti, RTS_OPERATION, NULLCP, "turn not owned by you");
                     85:     if (acb -> acb_flags & ACB_ACT)
                     86:        return rtsaplose (rti, RTS_OPERATION, NULLCP, "transfer in progress");
                     87:     if (acb -> acb_flags & ACB_PLEASE)
                     88:        return rtsaplose (rti, RTS_WAITING, NULLCP, NULLCP);
                     89: 
                     90:     if (data)
                     91:        data -> pe_context = acb -> acb_rtsid;
                     92: 
                     93:     acb -> acb_flags &= ~ACB_STICKY;
                     94:     if (AcRelRequest (acb -> acb_fd, reason, &data, data ? 1 : 0, NOTOK, acr, aci)
                     95:            == NOTOK) {
                     96:        if (aca -> aca_source == ACA_USER)
                     97:            result = acs2rtsabort (acb, aca, rti);
                     98:        else
                     99:            result = acs2rtslose (acb, rti, "AcRelRequest", aca);
                    100:     }
                    101:     else
                    102:        if (!acr -> acr_affirmative)
                    103:            result = rtpktlose (acb, rti, RTS_PROTOCOL, NULLCP,
                    104:                            "other side refused to release association");
                    105:        else
                    106:            result = OK;
                    107: 
                    108:     return result;
                    109: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.