@@ -17,91 +17,57 @@ export class RpcMessageDecoder {
1717 if ( reader . size ( ) < 8 ) return undefined ;
1818 const xid = reader . u32 ( ) ;
1919 const msgType = reader . u32 ( ) ;
20- let message : RpcMessage | undefined ;
2120 if ( msgType === RpcMsgType . CALL ) {
22- if ( reader . size ( ) < 20 ) {
23- reader . x = startPos ;
24- return undefined ;
25- }
21+ if ( reader . size ( ) < 20 ) return ( reader . x = startPos ) , undefined ;
2622 const rpcvers = reader . u32 ( ) ;
27- if ( rpcvers !== RPC_VERSION ) {
28- throw new RpcDecodingError ( `Unsupported RPC version: ${ rpcvers } ` ) ;
29- }
23+ // if (rpcvers !== RPC_VERSION) throw new RpcDecodingError(`Unsupported RPC version: ${rpcvers}`);
3024 const prog = reader . u32 ( ) ;
3125 const vers = reader . u32 ( ) ;
3226 const proc = reader . u32 ( ) ;
3327 const cred = this . readOpaqueAuth ( reader ) ;
34- if ( ! cred ) {
35- reader . x = startPos ;
36- return undefined ;
37- }
28+ if ( ! cred ) return ( reader . x = startPos , undefined ) ;
3829 const verf = this . readOpaqueAuth ( reader ) ;
39- if ( ! verf ) {
40- reader . x = startPos ;
41- return undefined ;
42- }
30+ if ( ! verf ) return ( reader . x = startPos ) , undefined ;
4331 const params = reader . size ( ) > 0 ? reader . cut ( reader . size ( ) ) : undefined ;
44- message = new RpcCallMessage ( xid , rpcvers , prog , vers , proc , cred , verf , params ) ;
32+ return new RpcCallMessage ( xid , rpcvers , prog , vers , proc , cred , verf , params ) ;
4533 } else if ( msgType === RpcMsgType . REPLY ) {
46- if ( reader . size ( ) < 4 ) {
47- reader . x = startPos ;
48- return undefined ;
49- }
34+ if ( reader . size ( ) < 4 ) return ( reader . x = startPos ) , undefined ;
5035 const replyStat = reader . u32 ( ) ;
5136 if ( replyStat === RpcReplyStat . MSG_ACCEPTED ) {
5237 const verf = this . readOpaqueAuth ( reader ) ;
53- if ( ! verf ) {
54- reader . x = startPos ;
55- return undefined ;
56- }
57- if ( reader . size ( ) < 4 ) {
58- reader . x = startPos ;
59- return undefined ;
60- }
38+ if ( ! verf || reader . size ( ) < 4 ) return ( reader . x = startPos ) , undefined ;
6139 const acceptStat = reader . u32 ( ) ;
6240 let mismatchInfo : RpcMismatchInfo | undefined ;
6341 if ( acceptStat === RpcAcceptStat . PROG_MISMATCH ) {
64- if ( reader . size ( ) < 8 ) {
65- reader . x = startPos ;
66- return undefined ;
67- }
42+ if ( reader . size ( ) < 8 ) return ( reader . x = startPos ) , undefined ;
6843 const low = reader . u32 ( ) ;
6944 const high = reader . u32 ( ) ;
7045 mismatchInfo = new RpcMismatchInfo ( low , high ) ;
7146 }
7247 const results = reader . size ( ) > 0 ? reader . cut ( reader . size ( ) ) : undefined ;
73- message = new RpcAcceptedReplyMessage ( xid , verf , acceptStat , mismatchInfo , results ) ;
48+ return new RpcAcceptedReplyMessage ( xid , verf , acceptStat , mismatchInfo , results ) ;
7449 } else if ( replyStat === RpcReplyStat . MSG_DENIED ) {
75- if ( reader . size ( ) < 4 ) {
76- reader . x = startPos ;
77- return undefined ;
78- }
50+ if ( reader . size ( ) < 4 ) return ( reader . x = startPos ) , undefined ;
7951 const rejectStat = reader . u32 ( ) ;
8052 let mismatchInfo : RpcMismatchInfo | undefined ;
8153 let authStat : number | undefined ;
8254 if ( rejectStat === RpcRejectStat . RPC_MISMATCH ) {
83- if ( reader . size ( ) < 8 ) {
84- reader . x = startPos ;
85- return undefined ;
86- }
55+ if ( reader . size ( ) < 8 ) return ( reader . x = startPos ) , undefined ;
8756 const low = reader . u32 ( ) ;
8857 const high = reader . u32 ( ) ;
8958 mismatchInfo = new RpcMismatchInfo ( low , high ) ;
59+ if ( ! mismatchInfo ) return ( reader . x = startPos ) , undefined ;
9060 } else if ( rejectStat === RpcRejectStat . AUTH_ERROR ) {
91- if ( reader . size ( ) < 4 ) {
92- reader . x = startPos ;
93- return undefined ;
94- }
61+ if ( reader . size ( ) < 4 ) return ( reader . x = startPos ) , undefined ;
9562 authStat = reader . u32 ( ) ;
9663 }
97- message = new RpcRejectedReplyMessage ( xid , rejectStat , mismatchInfo , authStat ) ;
64+ return new RpcRejectedReplyMessage ( xid , rejectStat , mismatchInfo , authStat ) ;
9865 } else {
9966 throw new RpcDecodingError ( 'Invalid reply_stat' ) ;
10067 }
10168 } else {
10269 throw new RpcDecodingError ( 'Invalid msg_type' ) ;
10370 }
104- return message ;
10571 } catch ( err ) {
10672 if ( err instanceof RangeError ) {
10773 reader . x = startPos ;
0 commit comments