|
|
1.1 ! root 1: /* ! 2: * Server for PasswordLookup. ! 3: */ ! 4: #include "PasswordLookup_support.c" ! 5: #include <except.h> ! 6: ! 7: extern CourierConnection *_serverConnection; ! 8: ! 9: extern LookupUidResults LookupUid(); ! 10: ! 11: server_LookupUid(_buf) ! 12: register Unspecified *_buf; ! 13: { ! 14: register Unspecified *_bp = _buf; ! 15: register LongCardinal _n; ! 16: Cardinal uid; ! 17: LookupUidResults _Results; ! 18: ! 19: _bp += internalize_Cardinal(&uid, _bp); ! 20: _Results = LookupUid(_serverConnection, 0, uid); ! 21: _n = sizeof_LookupUidResults(&_Results); ! 22: _bp = Allocate(_n); ! 23: externalize_LookupUidResults(&_Results, _bp); ! 24: SendReturnMessage(_n, _bp); ! 25: Deallocate(_bp); ! 26: } ! 27: ! 28: extern LookupUserResults LookupUser(); ! 29: ! 30: server_LookupUser(_buf) ! 31: register Unspecified *_buf; ! 32: { ! 33: register Unspecified *_bp = _buf; ! 34: register LongCardinal _n; ! 35: String user; ! 36: LookupUserResults _Results; ! 37: ! 38: _bp += internalize_String(&user, _bp); ! 39: _Results = LookupUser(_serverConnection, 0, user); ! 40: _n = sizeof_LookupUserResults(&_Results); ! 41: _bp = Allocate(_n); ! 42: externalize_LookupUserResults(&_Results, _bp); ! 43: SendReturnMessage(_n, _bp); ! 44: Deallocate(_bp); ! 45: } ! 46: ! 47: Server() ! 48: { ! 49: Cardinal _procedure; ! 50: register Unspecified *_buf; ! 51: Cardinal _n; ! 52: ! 53: for (;;) { ! 54: if (LookAheadCallMessage(PasswordLookup_NUMBER, PasswordLookup_VERSION)) ! 55: break; ! 56: _buf = ReceiveCallMessage(&_procedure); ! 57: DURING switch (_procedure) { ! 58: case 1: ! 59: server_LookupUser(_buf); ! 60: break; ! 61: case 0: ! 62: server_LookupUid(_buf); ! 63: break; ! 64: default: ! 65: NoSuchProcedureValue("PasswordLookup", _procedure); ! 66: break; ! 67: } HANDLER { ! 68: Deallocate(_buf); ! 69: switch (&Exception.Code) { ! 70: case OtherError: ! 71: _n = sizeof_T_cn754_2((T_cn754_2 *)Exception.Message); ! 72: _buf = Allocate(_n); ! 73: (void) externalize_T_cn754_2((T_cn754_2*)Exception.Message, _buf); ! 74: SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf); ! 75: break; ! 76: case NoSuchUser: ! 77: _buf = Allocate(0); ! 78: SendAbortMessage(Exception.Code-ERROR_OFFSET, 0, _buf); ! 79: break; ! 80: default: ! 81: _buf = Allocate(0); ! 82: SendRejectMessage(unspecifiedError, 0, _buf); ! 83: break; ! 84: } ! 85: } END_HANDLER; ! 86: Deallocate(_buf); ! 87: } ! 88: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.