(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CTL) op: Equal rhs: {(/tmp/openssh.regress.ctl-sock.) ($ VSub_Dollar '$$')} spids: [7] ) ] spids: [7] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {(DQ ('connection multiplexing'))} spids: [12] ) ] spids: [12] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NC) op: Equal rhs: {($ VSub_Name '$OBJ') (/netcat)} spids: [18] ) ] spids: [18] ) (C {(trace)} {(DQ ('will use ProxyCommand ') ($ VSub_Name '$proxycmd'))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(config_defined)} {(DISABLE_FD_PASSING)}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ('skipped (not supported on this platform)'))}) (C {(exit)} {(0)})] spids: [-1 38] ) ] spids: [-1 52] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:P) op:Equal rhs:{(3301)} spids:[55])] spids: [55] ) (FuncDef name: wait_for_mux_master_ready body: (BraceGroup children: [ (ForEach iter_name: i iter_words: [{(1)} {(2)} {(3)} {(4)} {(5)}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Ocheck)} {(otherhost)} ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [108] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [111] ) ] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] op_id: Op_DAmp ) (C {(sleep)} {($ VSub_Name '$i')}) ] spids: [86 126] ) spids: [74 84] ) (C {(fatal)} {(DQ ('mux master never becomes ready'))}) ] spids: [66] ) spids: [62 65] ) (C {(start_sshd)}) (FuncDef name: start_mux_master body: (BraceGroup children: [ (C {(trace)} {(DQ ('start master, fork to background'))}) (Sentence child: (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-Nn2)} {(-MS) ($ VSub_Name '$CTL')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-oSendEnv) (Lit_Other '=') (DQ (_XXX_TEST))} {(somehost)} {(-E)} {($ VSub_Name '$TEST_REGRESS_LOGFILE')} ] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[183])] ) terminator: <Op_Amp '&'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SSH_PID) op: Equal rhs: {($ VSub_Bang '$!')} spids: [193] ) ] spids: [193] ) (C {(wait_for_mux_master_ready)}) ] spids: [145] ) spids: [141 144] ) (C {(start_mux_master)}) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': envpass'))}) (C {(trace)} {(DQ ('env passing over multiplexed connection'))}) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-oSendEnv) (Lit_Other '=') (DQ (_XXX_TEST))} {(-S) ($ VSub_Name '$CTL')} {(otherhost)} {(sh)} ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {('\ttest X"$_XXX_TEST" = X"blah"\n')} do_expansion: False here_end: EOF was_filled: True spids: [244] ) ] more_env: [(env_pair name:_XXX_TEST val:{(blah)} spids:[219])] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(fail)} {(DQ ('environment not found'))})] spids: [-1 263] ) ] spids: [-1 272] ) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': transfer'))}) (C {(rm)} {(-f)} {(${ VSub_Name COPY)}) (C {(trace)} {(DQ ('ssh transfer over multiplexed connection and check result'))}) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S) ($ VSub_Name '$CTL')} {(otherhost)} {(cat)} {(${ VSub_Name DATA)} ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name COPY)} spids:[317])] ) (AndOr children: [ (C {(test)} {(-f)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('ssh -Sctl: failed copy ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('ssh -Sctl: corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (C {(rm)} {(-f)} {(${ VSub_Name COPY)}) (C {(trace)} {(DQ ('ssh transfer over multiplexed connection and check result'))}) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(otherhost)} {(cat)} {(${ VSub_Name DATA)} ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name COPY)} spids:[400])] ) (AndOr children: [ (C {(test)} {(-f)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('ssh -S ctl: failed copy ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('ssh -S ctl: corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (C {(rm)} {(-f)} {(${ VSub_Name COPY)}) (C {(trace)} {(DQ ('sftp transfer over multiplexed connection and check result'))}) (Pipeline children: [ (C {(echo)} {(DQ ('get ') (${ VSub_Name DATA) (' ') (${ VSub_Name COPY))}) (SimpleCommand words: [ {(${ VSub_Name SFTP)} {(-S)} {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-oControlPath) (Lit_Other '=') ($ VSub_Name '$CTL')} {(otherhost)} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [500] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[503]) ] ) ] negated: False ) (AndOr children: [ (C {(test)} {(-f)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('sftp: failed copy ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('sftp: corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (C {(rm)} {(-f)} {(${ VSub_Name COPY)}) (C {(trace)} {(DQ ('scp transfer over multiplexed connection and check result'))}) (SimpleCommand words: [ {(${ VSub_Name SCP)} {(-S)} {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-oControlPath) (Lit_Other '=') ($ VSub_Name '$CTL')} {(otherhost) (Lit_Other ':') (${ VSub_Name DATA)} {(${ VSub_Name COPY)} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [591] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[594]) ] ) (AndOr children: [ (C {(test)} {(-f)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('scp: failed copy ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('scp: corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (C {(rm)} {(-f)} {(${ VSub_Name COPY)}) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': forward'))}) (C {(trace)} {(DQ ('forward over TCP/IP and check result'))}) (Sentence child: (SimpleCommand words: [ {($ VSub_Name '$NC')} {(-N)} {(-l)} {(127.0.0.1)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name PORT)}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [669 678] ) } ] redirects: [ (Redir op_id:Redir_Less fd:-1 arg_word:{(${ VSub_Name DATA)} spids:[680]) (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[686]) ] ) terminator: <Op_Amp '&'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:netcat_pid) op: Equal rhs: {($ VSub_Bang '$!')} spids: [692] ) ] spids: [692] ) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Oforward)} {(-L127.0.0.1) (Lit_Other ':') (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name PORT)}) right: (ArithWord w:{(Lit_Digits 2)}) ) spids: [712 721] ) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name PORT)}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [725 734] ) } {(otherhost)} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_SSH_LOGFILE')} spids: [738] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[741]) ] ) (SimpleCommand words: [ {($ VSub_Name '$NC')} {(127.0.0.1)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name PORT)}) right: (ArithWord w:{(Lit_Digits 2)}) ) spids: [748 757] ) } ] redirects: [ (Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[759]) (Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name COPY)} spids:[763]) ] ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('ssh: corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (SimpleCommand words: [{(kill)} {($ VSub_Name '$netcat_pid')}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[794])] ) (C {(rm)} {(-f)} {(${ VSub_Name COPY)} {($ VSub_Name '$OBJ') (/unix-) (Lit_Other '[') (123) (Lit_Other ']') (.fwd)} ) (C {(trace)} {(DQ ('forward over UNIX and check result'))}) (Sentence child: (SimpleCommand words: [{($ VSub_Name '$NC')} {(-N)} {(-Ul)} {($ VSub_Name '$OBJ') (/unix-1.fwd)}] redirects: [ (Redir op_id:Redir_Less fd:-1 arg_word:{(${ VSub_Name DATA)} spids:[828]) (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[834]) ] ) terminator: <Op_Amp '&'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:netcat_pid) op: Equal rhs: {($ VSub_Bang '$!')} spids: [840] ) ] spids: [840] ) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Oforward)} {(-L) ($ VSub_Name '$OBJ') (/unix-2.fwd) (Lit_Other ':') ($ VSub_Name '$OBJ') (/unix-1.fwd)} {(otherhost)} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_SSH_LOGFILE')} spids: [867] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[870]) ] ) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Oforward)} {(-R) ($ VSub_Name '$OBJ') (/unix-3.fwd) (Lit_Other ':') ($ VSub_Name '$OBJ') (/unix-2.fwd)} {(otherhost)} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_SSH_LOGFILE')} spids: [897] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[900]) ] ) (SimpleCommand words: [{($ VSub_Name '$NC')} {(-U)} {($ VSub_Name '$OBJ') (/unix-3.fwd)}] redirects: [ (Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[910]) (Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name COPY)} spids:[914]) (Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[920]) ] ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('ssh: corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (SimpleCommand words: [{(kill)} {($ VSub_Name '$netcat_pid')}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[948])] ) (C {(rm)} {(-f)} {(${ VSub_Name COPY)} {($ VSub_Name '$OBJ') (/unix-) (Lit_Other '[') (123) (Lit_Other ']') (.fwd)} ) (ForEach iter_name: s iter_words: [{(0)} {(1)} {(4)} {(5)} {(44)}] do_arg_iter: False body: (DoGroup children: [ (C {(trace)} {(DQ ('exit status ') ($ VSub_Name '$s') (' over multiplexed connection'))}) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': status ') ($ VSub_Name '$s'))}) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(otherhost)} {(exit)} {($ VSub_Name '$s')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1026] ) ] spids: [1026] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$r')} {(-ne)} {($ VSub_Name '$s')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(fail)} { (DQ ('exit code mismatch for protocol ') ($ VSub_Name '$p') (': ') ($ VSub_Name '$r') (' != ') ($ VSub_Name '$s') ) } ) ] spids: [-1 1043] ) ] spids: [-1 1058] ) (C {(trace)} { (DQ ('exit status ') ($ VSub_Name '$s') (' with early close over multiplexed connection') ) } ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-n)} {(otherhost)} {(exec)} {(sh)} {(-c)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (DQ ('sleep 2; exec > /dev/null 2>&1; sleep 3; exit ') ($ VSub_Name '$s')) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1108] ) ] spids: [1108] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$r')} {(-ne)} {($ VSub_Name '$s')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(fail)} { (DQ ('exit code (with sleep) mismatch for protocol ') ($ VSub_Name '$p') (': ') ($ VSub_Name '$r') (' != ') ($ VSub_Name '$s') ) } ) ] spids: [-1 1125] ) ] spids: [-1 1140] ) ] spids: [984 1142] ) spids: [972 982] ) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': cmd check'))}) (AndOr children: [ (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Ocheck)} {(otherhost)} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [1170] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1173]) ] ) (C {(fail)} {(DQ ('check command failed'))}) ] op_id: Op_DPipe ) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': cmd forward local (TCP)'))}) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Oforward)} {(-L)} {($ VSub_Name '$P') (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT')} {(otherhost)} ) (C {(fail)} {(DQ ('request local forward failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p) ($ VSub_Name '$P')} {(otherhost)} {(true)} ) (C {(fail)} {(DQ ('connect to local forward port failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Ocancel)} {(-L)} {($ VSub_Name '$P') (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT')} {(otherhost)} ) (C {(fail)} {(DQ ('cancel local forward failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p) ($ VSub_Name '$P')} {(otherhost)} {(true)} ) (C {(fail)} {(DQ ('local forward port still listening'))}) ] op_id: Op_DAmp ) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': cmd forward remote (TCP)'))}) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Oforward)} {(-R)} {($ VSub_Name '$P') (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT')} {(otherhost)} ) (C {(fail)} {(DQ ('request remote forward failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p) ($ VSub_Name '$P')} {(otherhost)} {(true)} ) (C {(fail)} {(DQ ('connect to remote forwarded port failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Ocancel)} {(-R)} {($ VSub_Name '$P') (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT')} {(otherhost)} ) (C {(fail)} {(DQ ('cancel remote forward failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p) ($ VSub_Name '$P')} {(otherhost)} {(true)} ) (C {(fail)} {(DQ ('remote forward port still listening'))}) ] op_id: Op_DAmp ) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': cmd forward local (UNIX)'))}) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Oforward)} {(-L)} {($ VSub_Name '$OBJ') (/unix-1.fwd) (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT') } {(otherhost)} ) (C {(fail)} {(DQ ('request local forward failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (Pipeline children: [ (C {(echo)} {(DQ )}) (C {($ VSub_Name '$NC')} {(-U)} {($ VSub_Name '$OBJ') (/unix-1.fwd)}) (SimpleCommand words: [{(grep)} {(DQ ('Protocol mismatch'))}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1516]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1519]) ] ) ] negated: False ) (C {(fail)} {(DQ ('connect to local forward path failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Ocancel)} {(-L)} {($ VSub_Name '$OBJ') (/unix-1.fwd) (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT') } {(otherhost)} ) (C {(fail)} {(DQ ('cancel local forward failed'))}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:N) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ (xyzzy))}) (SimpleCommand words: [{($ VSub_Name '$NC')} {(-U)} {($ VSub_Name '$OBJ') (/unix-1.fwd)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1585])] ) (C {(grep)} {(DQ (xyzzy))}) (C {(wc)} {(-l)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [1569 1601] ) } spids: [1568] ) ] spids: [1568] ) (AndOr children: [ (C {(test)} {(${ VSub_Name N)} {(-eq)} {(0)}) (C {(fail)} {(DQ ('local forward path still listening'))}) ] op_id: Op_DPipe ) (C {(rm)} {(-f)} {($ VSub_Name '$OBJ') (/unix-1.fwd)}) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': cmd forward remote (UNIX)'))}) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Oforward)} {(-R)} {($ VSub_Name '$OBJ') (/unix-1.fwd) (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT') } {(otherhost)} ) (C {(fail)} {(DQ ('request remote forward failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (Pipeline children: [ (C {(echo)} {(DQ )}) (C {($ VSub_Name '$NC')} {(-U)} {($ VSub_Name '$OBJ') (/unix-1.fwd)}) (SimpleCommand words: [{(grep)} {(DQ ('Protocol mismatch'))}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1695]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1698]) ] ) ] negated: False ) (C {(fail)} {(DQ ('connect to remote forwarded path failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Ocancel)} {(-R)} {($ VSub_Name '$OBJ') (/unix-1.fwd) (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT') } {(otherhost)} ) (C {(fail)} {(DQ ('cancel remote forward failed'))}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:N) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ (xyzzy))}) (SimpleCommand words: [{($ VSub_Name '$NC')} {(-U)} {($ VSub_Name '$OBJ') (/unix-1.fwd)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1764])] ) (C {(grep)} {(DQ (xyzzy))}) (C {(wc)} {(-l)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [1748 1780] ) } spids: [1747] ) ] spids: [1747] ) (AndOr children: [ (C {(test)} {(${ VSub_Name N)} {(-eq)} {(0)}) (C {(fail)} {(DQ ('remote forward path still listening'))}) ] op_id: Op_DPipe ) (C {(rm)} {(-f)} {($ VSub_Name '$OBJ') (/unix-1.fwd)}) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': cmd exit'))}) (AndOr children: [ (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Oexit)} {(otherhost)} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [1833] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1836]) ] ) (C {(fail)} {(DQ ('send exit command failed'))}) ] op_id: Op_DPipe ) (C {(wait)} {($ VSub_Name '$SSH_PID')}) (AndOr children: [ (SimpleCommand words: [{(kill)} {(-0)} {($ VSub_Name '$SSH_PID')}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1864]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1867]) ] ) (C {(fail)} {(DQ ('exit command failed'))}) ] op_id: Op_DAmp ) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': cmd stop'))}) (C {(trace)} {(DQ ('restart master, fork to background'))}) (C {(start_mux_master)}) (Sentence child: (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(otherhost)} {(DQ ('sleep 10; exit 0'))} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [1923] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1926]) ] ) terminator: <Op_Amp '&'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SLEEP_PID) op: Equal rhs: {($ VSub_Bang '$!')} spids: [1931] ) ] spids: [1931] ) (AndOr children: [ (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-Ostop)} {(otherhost)} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [1951] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1954]) ] ) (C {(fail)} {(DQ ('send stop command failed'))}) ] op_id: Op_DPipe ) (C {(wait)} {($ VSub_Name '$SLEEP_PID')}) (AndOr children: [ (C {(Lit_Other '[')} {($ VSub_Bang '$!')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')}) (C {(fail)} {(DQ ('waiting for concurrent command'))}) ] op_id: Op_DPipe ) (C {(wait)} {($ VSub_Name '$SSH_PID')}) (AndOr children: [ (C {(Lit_Other '[')} {($ VSub_Bang '$!')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')}) (C {(fail)} {(DQ ('waiting for master stop'))}) ] op_id: Op_DPipe ) (AndOr children: [ (SimpleCommand words: [{(kill)} {(-0)} {($ VSub_Name '$SSH_PID')}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2023]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2026]) ] ) (C {(fatal)} {(DQ ('stop command failed'))}) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:SSH_PID) op:Equal rhs:{(DQ )} spids:[2037])] spids: [2037] ) ] )