diff options
Diffstat (limited to 'tcpd/starttls.c')
| -rw-r--r-- | tcpd/starttls.c | 17 | 
1 files changed, 12 insertions, 5 deletions
| diff --git a/tcpd/starttls.c b/tcpd/starttls.c index 23c4a69..cb3bd2c 100644 --- a/tcpd/starttls.c +++ b/tcpd/starttls.c @@ -10,6 +10,8 @@  #include	"tlscache.h"  #include	"rfc1035/rfc1035.h"  #include	"soxwrap/soxwrap.h" +#include	"numlib/numlib.h" +  #ifdef  getc  #undef  getc  #endif @@ -74,6 +76,7 @@ const char *statusfd=0;  const char *tcpd=0;  const char *peer_verify_domain=0;  const char *fdprotocol=0; +const char *username=0;  static FILE *errfp;  static FILE *statusfp; @@ -536,6 +539,14 @@ static int dossl(int fd, int argn, int argc, char **argv)  	info.connect_callback= &verify_connection;  	info.app_data=NULL; +	stdin_fd=0; +	stdout_fd=1; + +	startclient(argn, argc, argv, fd, &stdin_fd, &stdout_fd); + +	if (username) +		libmail_changeusername(username, 0); +  	ctx=tls_create(server ? 1:0, &info);  	if (ctx == 0)	return (1); @@ -555,11 +566,6 @@ static int dossl(int fd, int argn, int argc, char **argv)  		return 1;  	} -	stdin_fd=0; -	stdout_fd=1; - -	startclient(argn, argc, argv, fd, &stdin_fd, &stdout_fd); -  	docopy(ssl, fd, stdin_fd, stdout_fd);  	tls_disconnect(ssl, fd); @@ -778,6 +784,7 @@ static struct args arginfo[] = {  	{ "verify", &peer_verify_domain},  	{ "statusfd", &statusfd},  	{ "protocol", &fdprotocol}, +	{ "user", &username},  	{0}};  void (*protocol_func)(int)=0; | 
