Annotation of 43BSDReno/contrib/isode-beta/doc/manual/ryresp-assoc.tex, revision 1.1.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.