# HG changeset patch # User David Scott # Date 1261169317 0 # Node ID bd8e01f7ec1b2bea5216a9da0361d194795926c2 # Parent c6eff72def0786b1989ada4ca79d2617c45d15b3 CA-33440: when starting an stunnel process, careful to handle the case where we still do fork the binary directly i.e. that used by quicktest and the CLI. Signed-off-by: David Scott diff -r c6eff72def07 -r bd8e01f7ec1b stunnel/stunnel.ml --- a/stunnel/stunnel.ml Fri Dec 18 20:48:36 2009 +0000 +++ b/stunnel/stunnel.ml Fri Dec 18 20:48:37 2009 +0000 @@ -150,19 +150,20 @@ Forkhelpers.Dup2(data_in, Unix.stdout); Forkhelpers.Dup2(logfd, Unix.stderr) ] in let fds_needed = [ Unix.stdin; Unix.stdout; Unix.stderr; config_out ] in - let args = [ "-fd"; config_out_uuid ] in + let args_external = [ "-fd"; config_out_uuid ] in + let args_internal = [ "-fd"; string_of_int (Unixext.int_of_file_descr config_out) ] in if use_external_fd_wrapper then begin - let cmdline = Printf.sprintf "Using commandline: %s\n" (String.concat " " (path::args)) in + let cmdline = Printf.sprintf "Using commandline: %s\n" (String.concat " " (path::args_external)) in write_to_log cmdline; end; t.pid <- if use_external_fd_wrapper - then Forkhelpers.safe_close_and_exec (Some data_in) (Some data_in) (Some logfd) [(config_out_uuid, config_out)] path args + then Forkhelpers.safe_close_and_exec (Some data_in) (Some data_in) (Some logfd) [(config_out_uuid, config_out)] path args_external else Forkhelpers.fork_and_exec ~pre_exec: (fun _ -> List.iter Forkhelpers.do_fd_operation fdops; Unixext.close_all_fds_except fds_needed) - (path::args); + (path::args_internal); List.iter close [ data_in; config_out; ]; (* Make sure we close config_in eventually *) finally