(self)
| 152 | # Caller must add procedure-specific part of call |
| 153 | |
| 154 | def unpack_replyheader(self): |
| 155 | xid = self.unpack_uint() |
| 156 | mtype = self.unpack_enum() |
| 157 | if mtype != msg_type.REPLY: |
| 158 | raise RPCUnpackError('no REPLY but %r' % (mtype,)) |
| 159 | stat = self.unpack_enum() |
| 160 | if stat == reply_stat.MSG_DENIED: |
| 161 | stat = self.unpack_enum() |
| 162 | if stat == reject_stat.RPC_MISMATCH: |
| 163 | low = self.unpack_uint() |
| 164 | high = self.unpack_uint() |
| 165 | raise RPCUnpackError('MSG_DENIED: RPC_MISMATCH: %r' % ((low, high),)) |
| 166 | if stat == reject_stat.AUTH_ERROR: |
| 167 | stat = self.unpack_uint() |
| 168 | raise RPCUnpackError('MSG_DENIED: AUTH_ERROR: %r' % (stat,)) |
| 169 | raise RPCUnpackError('MSG_DENIED: %r' % (stat,)) |
| 170 | if stat != reply_stat.MSG_ACCEPTED: |
| 171 | raise RPCUnpackError('Neither MSG_DENIED nor MSG_ACCEPTED: %r' % (stat,)) |
| 172 | verf = self.unpack_auth() |
| 173 | stat = self.unpack_enum() |
| 174 | if stat == accept_stat.PROG_UNAVAIL: |
| 175 | raise RPCUnpackError('call failed: PROG_UNAVAIL') |
| 176 | if stat == accept_stat.PROG_MISMATCH: |
| 177 | low = self.unpack_uint() |
| 178 | high = self.unpack_uint() |
| 179 | raise RPCUnpackError('call failed: PROG_MISMATCH: %r' % ((low, high),)) |
| 180 | if stat == accept_stat.PROC_UNAVAIL: |
| 181 | raise RPCUnpackError('call failed: PROC_UNAVAIL') |
| 182 | if stat == accept_stat.GARBAGE_ARGS: |
| 183 | raise RPCGarbageArgs |
| 184 | if stat != accept_stat.SUCCESS: |
| 185 | raise RPCUnpackError('call failed: %r' % (stat,)) |
| 186 | return xid, verf |
| 187 | # Caller must get procedure-specific part of reply |
| 188 | |
| 189 | |
| 190 | class Client: |
no test coverage detected