Annotation of 43BSDReno/contrib/isode-beta/doc/manual/ryresp-assoc.tex, revision 1.1

1.1     ! root        1: \File{ryresp\-assoc.c},{22:20},{Jul  8 1989}
        !             2: \L{\LB{\C{}\/* ryresponder.c \- generic idempotent responder *\/\CE{}}}
        !             3: \L{\LB{}}
        !             4: \L{\LB{\K{\#include} \<stdio.h\>}}
        !             5: \L{\LB{\K{\#include} \<setjmp.h\>}}
        !             6: \L{\LB{\K{\#include} \S{}\"ryresponder.h\"\SE{}}}
        !             7: \L{\LB{\K{\#include} \<isode\/tsap.h\>         \C{}\/* for listening *\/\CE{}}}
        !             8: \L{\LB{}}
        !             9: \L{\LB{\C{}\/* DATA *\/\CE{}}}
        !            10: \L{\LB{}}
        !            11: \L{\LB{\K{int}     debug = 0;}}
        !            12: \L{\LB{}}
        !            13: \L{\LB{\K{static} LLog \_pgm\_log = \{}}
        !            14: \L{\LB{    \S{}\"responder.log\"\SE{}, NULLCP, NULLCP,}}
        !            15: \L{\LB{    LLOG\_FATAL \| LLOG\_EXCEPTIONS \| LLOG\_NOTICE, LLOG\_FATAL, \-1,}}
        !            16: \L{\LB{    LLOGCLS \| LLOGCRT \| LLOGZER, NOTOK}}
        !            17: \L{\LB{\};}}
        !            18: \L{\LB{LLog *pgm\_log = \&\_pgm\_log;}}
        !            19: \L{\LB{}}
        !            20: \L{\LB{\K{static} \K{char} *myname = \S{}\"ryresponder\"\SE{};}}
        !            21: \L{\LB{}}
        !            22: \L{\LB{}}
        !            23: \L{\LB{\K{static} jmp\_buf toplevel;}}
        !            24: \L{\LB{}}
        !            25: \L{\LB{}}
        !            26: \L{\LB{\K{static} IFP      startfnx;}}
        !            27: \L{\LB{\K{static} IFP      stopfnx;}}
        !            28: \L{\LB{}}
        !            29: \L{\LB{\K{int}     ros\_init (), ros\_work (), ros\_indication (), ros\_lose ();}}
        !            30: \L{\LB{}}
        !            31: \L{\LB{}}
        !            32: \L{\LB{\K{extern} \K{int}  errno;}}
        !            33: \L{\LB{}}
        !            34: \L{\LB{\C{}\/* RESPONDER *\/\CE{}}}
        !            35: \L{\LB{}}
        !            36: \L{\LB{\K{int}}\Tab{8}{ryresponder (argc, argv, host, myservice, dispatches, ops, start, stop)}}
        !            37: \L{\LB{\K{int}     argc;}}
        !            38: \L{\LB{\K{char}  **argv,}}
        !            39: \L{\LB{       *host,}}
        !            40: \L{\LB{       *myservice;}}
        !            41: \L{\LB{\K{struct} dispatch *dispatches;}}
        !            42: \L{\LB{\K{struct} RyOperation *ops;}}
        !            43: \L{\LB{IFP     start,}}
        !            44: \L{\LB{}\Tab{8}{stop;}}
        !            45: \L{\LB{\{}}
        !            46: \L{\LB{    \K{register} \K{struct} dispatch   *ds;}}
        !            47: \L{\LB{    AEI     aei;}}
        !            48: \L{\LB{    \K{struct} TSAPdisconnect   tds;}}
        !            49: \L{\LB{    \K{struct} TSAPdisconnect  *td = \&tds;}}
        !            50: \L{\LB{    \K{struct} RoSAPindication  rois;}}
        !            51: \L{\LB{    \K{register} \K{struct} RoSAPindication *roi = \&rois;}}
        !            52: \L{\LB{    \K{register} \K{struct} RoSAPpreject   *rop = \&roi \-\> roi\_preject;}}
        !            53: \L{\LB{}}
        !            54: \L{\LB{    \K{if} (myname = rindex (argv[0], \S{}\'\/\'\SE{}))}}
        !            55: \L{\LB{}\Tab{8}{myname++;}}
        !            56: \L{\LB{    \K{if} (myname == NULL \|\| *myname == NULL)}}
        !            57: \L{\LB{}\Tab{8}{myname = argv[0];}}
        !            58: \L{\LB{}}
        !            59: \L{\LB{    isodetailor (myname, 0);}}
        !            60: \L{\LB{    \K{if} (debug = isatty (fileno (stderr)))}}
        !            61: \L{\LB{}\Tab{8}{ll\_dbinit (pgm\_log, myname);}}
        !            62: \L{\LB{    \K{else} \{}}
        !            63: \L{\LB{}\Tab{8}{\K{static} \K{char}  myfile[BUFSIZ];}}
        !            64: \L{\LB{}}
        !            65: \L{\LB{}\Tab{8}{(\K{void}) sprintf (myfile, \S{}\"\%s.log\"\SE{},}}
        !            66: \L{\LB{}\Tab{24}{(strncmp (myname, \S{}\"ros.\"\SE{}, 4)}\Tab{72}{}}
        !            67: \L{\LB{}\Tab{32}{    \&\& strncmp (myname, \S{}\"lpp.\"\SE{}, 4))}}
        !            68: \L{\LB{}\Tab{32}{\|\| myname[4] == NULL}}
        !            69: \L{\LB{}\Tab{24}{    ? myname : myname + 4);}}
        !            70: \L{\LB{}\Tab{8}{pgm\_log \-\> ll\_file = myfile;}}
        !            71: \L{\LB{}\Tab{8}{ll\_hdinit (pgm\_log, myname);}}
        !            72: \L{\LB{    \}}}
        !            73: \L{\LB{}}
        !            74: \L{\LB{    advise (LLOG\_NOTICE, NULLCP, \S{}\"starting\"\SE{});}}
        !            75: \L{\LB{}}
        !            76: \L{\LB{    \K{if} ((aei = str2aei (host, myservice)) == NULLAEI)}}
        !            77: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"\%s\-\%s: unknown application\-entity\"\SE{},}}
        !            78: \L{\LB{}\Tab{16}{host, myservice);}}
        !            79: \L{\LB{}}
        !            80: \L{\LB{    \K{for} (ds = dispatches; ds \-\> ds\_name; ds++)}}
        !            81: \L{\LB{}\Tab{8}{\K{if} (RyDispatch (NOTOK, ops, ds \-\> ds\_operation, ds \-\> ds\_vector, roi)}}
        !            82: \L{\LB{}\Tab{16}{== NOTOK)}}
        !            83: \L{\LB{}\Tab{8}{    ros\_adios (rop, ds \-\> ds\_name);}}
        !            84: \L{\LB{}}
        !            85: \L{\LB{    startfnx = start;}}
        !            86: \L{\LB{    stopfnx = stop;}}
        !            87: \L{\LB{}}
        !            88: \L{\LB{    \K{if} (isodeserver (argc, argv, aei, ros\_init, ros\_work, ros\_lose, td)}}
        !            89: \L{\LB{}\Tab{8}{    == NOTOK) \{}}
        !            90: \L{\LB{}\Tab{8}{\K{if} (td \-\> td\_cc \> 0)}}
        !            91: \L{\LB{}\Tab{8}{    adios (NULLCP, \S{}\"isodeserver: [\%s] \%*.*s\"\SE{},}}
        !            92: \L{\LB{}\Tab{16}{    TErrString (td \-\> td\_reason),}}
        !            93: \L{\LB{}\Tab{16}{    td \-\> td\_cc, td \-\> td\_cc, td \-\> td\_data);}}
        !            94: \L{\LB{}\Tab{8}{\K{else}}}
        !            95: \L{\LB{}\Tab{8}{    adios (NULLCP, \S{}\"isodeserver: [\%s]\"\SE{},}}
        !            96: \L{\LB{}\Tab{16}{    TErrString (td \-\> td\_reason));}}
        !            97: \L{\LB{    \}}}
        !            98: \L{\LB{}}
        !            99: \L{\LB{    \K{return} 0;}}
        !           100: \L{\LB{\}}}
        !           101: \L{\LB{}}
        !           102: \L{\LB{}}
        !           103: \L{\LB{\K{static} \K{int}  ros\_init (vecp, vec)}}
        !           104: \L{\LB{\K{int}}\Tab{8}{vecp;}}
        !           105: \L{\LB{\K{char}  **vec;}}
        !           106: \L{\LB{\{}}
        !           107: \L{\LB{    \K{int}}\Tab{8}{    reply,}}
        !           108: \L{\LB{}\Tab{8}{    result,}}
        !           109: \L{\LB{}\Tab{8}{    sd;}}
        !           110: \L{\LB{    \K{struct} AcSAPstart   acss;}}
        !           111: \L{\LB{    \K{register} \K{struct} AcSAPstart *acs = \&acss;}}
        !           112: \L{\LB{    \K{struct} AcSAPindication  acis;}}
        !           113: \L{\LB{    \K{register} \K{struct} AcSAPindication *aci = \&acis;}}
        !           114: \L{\LB{    \K{register} \K{struct} AcSAPabort   *aca = \&aci \-\> aci\_abort;}}
        !           115: \L{\LB{    \K{register} \K{struct} PSAPstart *ps = \&acs \-\> acs\_start;}}
        !           116: \L{\LB{    \K{struct} RoSAPindication  rois;}}
        !           117: \L{\LB{    \K{register} \K{struct} RoSAPindication *roi = \&rois;}}
        !           118: \L{\LB{    \K{register} \K{struct} RoSAPpreject   *rop = \&roi \-\> roi\_preject;}}
        !           119: \L{\LB{}}
        !           120: \L{\LB{    \K{if} (AcInit (vecp, vec, acs, aci) == NOTOK) \{}}
        !           121: \L{\LB{}\Tab{8}{acs\_advise (aca, \S{}\"initialization fails\"\SE{});}}
        !           122: \L{\LB{}\Tab{8}{\K{return} NOTOK;}}
        !           123: \L{\LB{    \}}}
        !           124: \L{\LB{    advise (LLOG\_NOTICE, NULLCP,}}
        !           125: \L{\LB{}\Tab{16}{\S{}\"A\-ASSOCIATE.INDICATION: \<\%d, \%s, \%s, \%s, \%d\>\"\SE{},}}
        !           126: \L{\LB{}\Tab{16}{acs \-\> acs\_sd, oid2ode (acs \-\> acs\_context),}}
        !           127: \L{\LB{}\Tab{16}{sprintaei (\&acs \-\> acs\_callingtitle),}}
        !           128: \L{\LB{}\Tab{16}{sprintaei (\&acs \-\> acs\_calledtitle), acs \-\> acs\_ninfo);}}
        !           129: \L{\LB{}}
        !           130: \L{\LB{    sd = acs \-\> acs\_sd;}}
        !           131: \L{\LB{}}
        !           132: \L{\LB{    \K{for} (vec++; *vec; vec++)}}
        !           133: \L{\LB{}\Tab{8}{advise (LLOG\_EXCEPTIONS, NULLCP, \S{}\"unknown argument \!\"\%s\!\"\"\SE{}, *vec);}}
        !           134: \L{\LB{}}
        !           135: \L{\LB{    reply = startfnx ? (*startfnx) (sd, acs) : ACS\_ACCEPT;}}
        !           136: \L{\LB{}}
        !           137: \L{\LB{    result = AcAssocResponse (sd, reply, reply != ACS\_ACCEPT}}
        !           138: \L{\LB{}\Tab{24}{      ? ACS\_USER\_NOREASON : ACS\_USER\_NULL,}}
        !           139: \L{\LB{}\Tab{16}{NULLOID, NULLAEI,}}
        !           140: \L{\LB{}\Tab{16}{NULLPA, NULLPC, ps \-\> ps\_defctxresult,}}
        !           141: \L{\LB{}\Tab{16}{ps \-\> ps\_prequirements, ps \-\> ps\_srequirements,}}
        !           142: \L{\LB{}\Tab{16}{SERIAL\_NONE, ps \-\> ps\_settings, \&ps \-\> ps\_connect,}}
        !           143: \L{\LB{}\Tab{16}{NULLPEP, 0, aci);}}
        !           144: \L{\LB{}}
        !           145: \L{\LB{    ACSFREE (acs);}}
        !           146: \L{\LB{}}
        !           147: \L{\LB{    \K{if} (result == NOTOK) \{}}
        !           148: \L{\LB{}\Tab{8}{acs\_advise (aca, \S{}\"A\-ASSOCIATE.RESPONSE\"\SE{});}}
        !           149: \L{\LB{}\Tab{8}{\K{return} NOTOK;}}
        !           150: \L{\LB{    \}}}
        !           151: \L{\LB{    \K{if} (reply != ACS\_ACCEPT)}}
        !           152: \L{\LB{}\Tab{8}{\K{return} NOTOK;}}
        !           153: \L{\LB{}}
        !           154: \L{\LB{    \K{if} (RoSetService (sd, RoPService, roi) == NOTOK)}}
        !           155: \L{\LB{}\Tab{8}{ros\_adios (rop, \S{}\"set RO\/PS fails\"\SE{});}}
        !           156: \L{\LB{}}
        !           157: \L{\LB{    \K{return} sd;}}
        !           158: \L{\LB{\}}}
        !           159: \L{\LB{}}
        !           160: \L{\LB{}}
        !           161: \L{\LB{\K{static} \K{int}  ros\_work (fd)}}
        !           162: \L{\LB{\K{int}}\Tab{8}{fd;}}
        !           163: \L{\LB{\{}}
        !           164: \L{\LB{    \K{int}}\Tab{8}{    result;}}
        !           165: \L{\LB{    caddr\_t out;}}
        !           166: \L{\LB{    \K{struct} AcSAPindication  acis;}}
        !           167: \L{\LB{    \K{struct} RoSAPindication  rois;}}
        !           168: \L{\LB{    \K{register} \K{struct} RoSAPindication *roi = \&rois;}}
        !           169: \L{\LB{    \K{register} \K{struct} RoSAPpreject   *rop = \&roi \-\> roi\_preject;}}
        !           170: \L{\LB{}}
        !           171: \L{\LB{    \K{switch} (setjmp (toplevel)) \{}}
        !           172: \L{\LB{}\Tab{8}{\K{case} OK: }}
        !           173: \L{\LB{}\Tab{8}{    \K{break};}}
        !           174: \L{\LB{}}
        !           175: \L{\LB{}\Tab{8}{\K{default}: }}
        !           176: \L{\LB{}\Tab{8}{    \K{if} (stopfnx)}}
        !           177: \L{\LB{}\Tab{16}{(*stopfnx) (fd, (\K{struct} AcSAPfinish *) 0);}}
        !           178: \L{\LB{}\Tab{8}{\K{case} DONE:}}
        !           179: \L{\LB{}\Tab{8}{    (\K{void}) AcUAbortRequest (fd, NULLPEP, 0, \&acis);}}
        !           180: \L{\LB{}\Tab{8}{    (\K{void}) RyLose (fd, roi);}}
        !           181: \L{\LB{}\Tab{8}{    \K{return} NOTOK;}}
        !           182: \L{\LB{    \}}}
        !           183: \L{\LB{}}
        !           184: \L{\LB{    \K{switch} (result = RyWait (fd, NULLIP, \&out, OK, roi)) \{}}
        !           185: \L{\LB{}\Tab{8}{\K{case} NOTOK: }}
        !           186: \L{\LB{}\Tab{8}{    \K{if} (rop \-\> rop\_reason == ROS\_TIMER)}}
        !           187: \L{\LB{}\Tab{16}{\K{break};}}
        !           188: \L{\LB{}\Tab{8}{\K{case} OK: }}
        !           189: \L{\LB{}\Tab{8}{\K{case} DONE: }}
        !           190: \L{\LB{}\Tab{8}{    ros\_indication (fd, roi);}}
        !           191: \L{\LB{}\Tab{8}{    \K{break};}}
        !           192: \L{\LB{}}
        !           193: \L{\LB{}\Tab{8}{\K{default}: }}
        !           194: \L{\LB{}\Tab{8}{    adios (NULLCP, \S{}\"unknown return from RoWaitRequest=\%d\"\SE{}, result);}}
        !           195: \L{\LB{    \}}}
        !           196: \L{\LB{}}
        !           197: \L{\LB{    \K{return} OK;}}
        !           198: \L{\LB{\}}}
        !           199: \L{\LB{}}
        !           200: \L{\LB{}}
        !           201: \L{\LB{\K{static} \K{int} ros\_indication (sd, roi)}}
        !           202: \L{\LB{\K{int}}\Tab{8}{sd;}}
        !           203: \L{\LB{\K{register} \K{struct} RoSAPindication *roi;}}
        !           204: \L{\LB{\{}}
        !           205: \L{\LB{    \K{int}}\Tab{8}{    reply,}}
        !           206: \L{\LB{}\Tab{8}{    result;}}
        !           207: \L{\LB{}}
        !           208: \L{\LB{    \K{switch} (roi \-\> roi\_type) \{}}
        !           209: \L{\LB{}\Tab{8}{\K{case} ROI\_INVOKE: }}
        !           210: \L{\LB{}\Tab{8}{\K{case} ROI\_RESULT: }}
        !           211: \L{\LB{}\Tab{8}{\K{case} ROI\_ERROR: }}
        !           212: \L{\LB{}\Tab{8}{    adios (NULLCP, \S{}\"unexpected indication type=\%d\"\SE{}, roi \-\> roi\_type);}}
        !           213: \L{\LB{}\Tab{8}{    \K{break};}}
        !           214: \L{\LB{}}
        !           215: \L{\LB{}\Tab{8}{\K{case} ROI\_UREJECT: }}
        !           216: \L{\LB{}\Tab{8}{    \{}}
        !           217: \L{\LB{}\Tab{16}{\K{register} \K{struct} RoSAPureject   *rou = \&roi \-\> roi\_ureject;}}
        !           218: \L{\LB{}}
        !           219: \L{\LB{}\Tab{16}{\K{if} (rou \-\> rou\_noid)}}
        !           220: \L{\LB{}\Tab{16}{    advise (LLOG\_EXCEPTIONS, NULLCP,}}
        !           221: \L{\LB{}\Tab{24}{    \S{}\"RO\-REJECT\-U.INDICATION\/\%d: \%s\"\SE{},}}
        !           222: \L{\LB{}\Tab{24}{    sd, RoErrString (rou \-\> rou\_reason));}}
        !           223: \L{\LB{}\Tab{16}{\K{else}}}
        !           224: \L{\LB{}\Tab{16}{    advise (LLOG\_EXCEPTIONS, NULLCP,}}
        !           225: \L{\LB{}\Tab{24}{    \S{}\"RO\-REJECT\-U.INDICATION\/\%d: \%s (id=\%d)\"\SE{},}}
        !           226: \L{\LB{}\Tab{24}{    sd, RoErrString (rou \-\> rou\_reason),}}
        !           227: \L{\LB{}\Tab{24}{    rou \-\> rou\_id);}}
        !           228: \L{\LB{}\Tab{8}{    \}}}
        !           229: \L{\LB{}\Tab{8}{    \K{break};}}
        !           230: \L{\LB{}}
        !           231: \L{\LB{}\Tab{8}{\K{case} ROI\_PREJECT: }}
        !           232: \L{\LB{}\Tab{8}{    \{}}
        !           233: \L{\LB{}\Tab{16}{\K{register} \K{struct} RoSAPpreject   *rop = \&roi \-\> roi\_preject;}}
        !           234: \L{\LB{}}
        !           235: \L{\LB{}\Tab{16}{\K{if} (ROS\_FATAL (rop \-\> rop\_reason))}}
        !           236: \L{\LB{}\Tab{16}{    ros\_adios (rop, \S{}\"RO\-REJECT\-P.INDICATION\"\SE{});}}
        !           237: \L{\LB{}\Tab{16}{ros\_advise (rop, \S{}\"RO\-REJECT\-P.INDICATION\"\SE{});}}
        !           238: \L{\LB{}\Tab{8}{    \}}}
        !           239: \L{\LB{}\Tab{8}{    \K{break};}}
        !           240: \L{\LB{}}
        !           241: \L{\LB{}\Tab{8}{\K{case} ROI\_FINISH: }}
        !           242: \L{\LB{}\Tab{8}{    \{}}
        !           243: \L{\LB{}\Tab{16}{\K{register} \K{struct} AcSAPfinish *acf = \&roi \-\> roi\_finish;}}
        !           244: \L{\LB{}\Tab{16}{\K{struct} AcSAPindication  acis;}}
        !           245: \L{\LB{}\Tab{16}{\K{register} \K{struct} AcSAPabort *aca = \&acis.aci\_abort;}}
        !           246: \L{\LB{}}
        !           247: \L{\LB{}\Tab{16}{advise (LLOG\_NOTICE, NULLCP, \S{}\"A\-RELEASE.INDICATION\/\%d: \%d\"\SE{},}}
        !           248: \L{\LB{}\Tab{24}{sd, acf \-\> acf\_reason);}}
        !           249: \L{\LB{}}
        !           250: \L{\LB{}\Tab{16}{reply = stopfnx ? (*stopfnx) (sd, acf) : ACS\_ACCEPT;}}
        !           251: \L{\LB{}}
        !           252: \L{\LB{}\Tab{16}{result = AcRelResponse (sd, reply, ACR\_NORMAL, NULLPEP,}}
        !           253: \L{\LB{}\Tab{24}{    0, \&acis);}}
        !           254: \L{\LB{}}
        !           255: \L{\LB{}\Tab{16}{ACFFREE (acf);}}
        !           256: \L{\LB{}}
        !           257: \L{\LB{}\Tab{16}{\K{if} (result == NOTOK)}}
        !           258: \L{\LB{}\Tab{16}{    acs\_advise (aca, \S{}\"A\-RELEASE.RESPONSE\"\SE{});}}
        !           259: \L{\LB{}\Tab{16}{\K{else}}}
        !           260: \L{\LB{}\Tab{16}{    \K{if} (reply != ACS\_ACCEPT)}}
        !           261: \L{\LB{}\Tab{24}{\K{break};}}
        !           262: \L{\LB{}\Tab{16}{longjmp (toplevel, DONE);}}
        !           263: \L{\LB{}\Tab{8}{    \}}}
        !           264: \L{\LB{}\Tab{8}{\C{}\/* NOTREACHED *\/\CE{}}}
        !           265: \L{\LB{}}
        !           266: \L{\LB{}\Tab{8}{\K{default}: }}
        !           267: \L{\LB{}\Tab{8}{    adios (NULLCP, \S{}\"unknown indication type=\%d\"\SE{}, roi \-\> roi\_type);}}
        !           268: \L{\LB{    \}}}
        !           269: \L{\LB{\}}}
        !           270: \L{\LB{}}
        !           271: \L{\LB{}}
        !           272: \L{\LB{\K{static} \K{int}  ros\_lose (td)}}
        !           273: \L{\LB{\K{struct} TSAPdisconnect *td;}}
        !           274: \L{\LB{\{}}
        !           275: \L{\LB{    \K{if} (td \-\> td\_cc \> 0)}}
        !           276: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"TNetAccept: [\%s] \%*.*s\"\SE{},}}
        !           277: \L{\LB{}\Tab{16}{TErrString (td \-\> td\_reason), td \-\> td\_cc, td \-\> td\_cc,}}
        !           278: \L{\LB{}\Tab{16}{td \-\> td\_data);}}
        !           279: \L{\LB{    \K{else}}}
        !           280: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"TNetAccept: [\%s]\"\SE{}, TErrString (td \-\> td\_reason));}}
        !           281: \L{\LB{\}}}
        !           282: \L{\LB{}}
        !           283: \L{\LB{...}}

unix.superglobalmegacorp.com

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