Article delegate-en/3065 of [1-5169] on the server localhost:119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A3063@delegate-en.ML_>]
Newsgroups: mail-lists.delegate-en

[DeleGate-En] Re: delegate master with ssl encryption
11 Oct 2005 10:11:31 GMT feedback@delegate.org (Yutaka Sato)
The DeleGate Project


Hi,

On 10/06/05(05:44) you Martin Papadopoulos <payeabdyi-4qjvf2mkmc3r.ml@ml.delegate.org> wrote
in <_A3063@delegate-en.ML_>
 |since delegate version 9.0.5 using delegate as master with sslway for
 |encryption , the client side cannot establish
 |a connection. the master delegate says ssl_acc() failed. Befor Version
 |9.0 sslway encryption to a master delegate just worked fine.
 |i have replicated this problem on linux as well as on windows.

I see.  The problem was introduced at 9.0.1 where SSLway became a built-in
filter program with dynamic-loading/linking.
You can escape the problem by specifying the external SSLway prgram as
FCL="/path/of/sslway ...", or applying the enclosed patch to perform the
same treatment for MASTER/SSL in built-in filters as well as in external
filters.

Cheers,
Yutaka
--
  D G   Yutaka Sato <y.sato@delegate.org> http://delegate.org/y.sato/
 ( - )  National Institute of Advanced Industrial Science and Technology
_<   >_ 1-1-4 Umezono, Tsukuba, Ibaraki, 305-8568 Japan
Do the more with the less -- B. Fuller


*** ../delegate9.0.5-pre7/src/filter.c	Sun Aug 28 16:27:52 2005
--- src/filter.c	Tue Oct 11 19:00:42 2005
***************
*** 1334,1390 ****
  	in1 = out1 = NULL;
  	bi = streq(what,"FCL")||streq(what,"FSV")||streq(what,"FMD");
  	if( bi && *filter == '-' ){
  		in1 = fdopen(ofd,"r");
  		out1 = fdopen(ifd,"w");
  	}
  	if( env = getenv("CFI_SYNC") ){
  		sscanf(env,"%d/%d",&CFI_SYNC[1],&CFI_SYNC[0]);
  	}
  	if( 0 < CFI_SYNC[0] || 0 < CFI_SYNC[1] ){
  		close(CFI_SYNC[0]);
  		write(CFI_SYNC[1],"S",1);
  	}
- 	if( 0 <= builtin_filter(what,filter,in,out,in1,out1) ){
- 		fflush(out);
- 		if( out1 ) fflush(out1);
- 		Finish(0);
- 	}
  
  	/* DeleGate's "MASTER" protocol header must not be passed to the
  	 * FCL or FFROMCL filter of this delegated if the client delegated have
  	 * FTOMD or FMD filter which is not passed such header also.
  	 * That is, a pair of FCL/FFROMCL and FMD/FTOMD must communicate
  	 * transparently.
  	 */
  	if( DFLT_PROTO[0] == 0 && ready_cc(in) <= 0 )
  	if( streq(what,"FCL") || streq(what,"FFROMCL") ){
  		int li,rcc;
  		CStr(line,1024);
  
  		rcc = recvPeek1(ifd,line,32);
  		if( isHelloRequest(line) ){
  			sv1log("#%s: don't pass DeleGate-HELLO to the filter\n",
  				what);
  			for( li = 0; ; li++ ){
  				rcc = RecvLine(ifd,line,sizeof(line));
  				if( rcc <= 0 )
  					break;
  				Verbose("#%s: %s",what,line);
  				write(ofd,line,rcc);
  				if( line[0] == '\r' || line[0] == '\n' )
  					break;
  			}
  		}
  	}
  
  	if( isCFI(filter) ){
  		CStr(conninfo,2048);
  
  		sv1log("#### execFilter[%s] CFI\n",what);
  		make_conninfo(Conn,AVStr(conninfo));
  
  		addConnEnviron(Conn);
  		close_all(ifd,ofd,curLogFd());
  		dup2(curLogFd(),2);
  		cfi(isresp,in,out,conninfo,filter);
  		Finish(0);
--- 1334,1390 ----
  	in1 = out1 = NULL;
  	bi = streq(what,"FCL")||streq(what,"FSV")||streq(what,"FMD");
  	if( bi && *filter == '-' ){
  		in1 = fdopen(ofd,"r");
  		out1 = fdopen(ifd,"w");
  	}
  	if( env = getenv("CFI_SYNC") ){
  		sscanf(env,"%d/%d",&CFI_SYNC[1],&CFI_SYNC[0]);
  	}
  	if( 0 < CFI_SYNC[0] || 0 < CFI_SYNC[1] ){
  		close(CFI_SYNC[0]);
  		write(CFI_SYNC[1],"S",1);
  	}
  
  	/* DeleGate's "MASTER" protocol header must not be passed to the
  	 * FCL or FFROMCL filter of this delegated if the client delegated have
  	 * FTOMD or FMD filter which is not passed such header also.
  	 * That is, a pair of FCL/FFROMCL and FMD/FTOMD must communicate
  	 * transparently.
  	 */
  	if( DFLT_PROTO[0] == 0 && ready_cc(in) <= 0 )
  	if( streq(what,"FCL") || streq(what,"FFROMCL") ){
  		int li,rcc;
  		CStr(line,1024);
  
  		rcc = recvPeek1(ifd,line,32);
  		if( isHelloRequest(line) ){
  			sv1log("#%s: don't pass DeleGate-HELLO to the filter\n",
  				what);
  			for( li = 0; ; li++ ){
  				rcc = RecvLine(ifd,line,sizeof(line));
  				if( rcc <= 0 )
  					break;
  				Verbose("#%s: %s",what,line);
  				write(ofd,line,rcc);
  				if( line[0] == '\r' || line[0] == '\n' )
  					break;
  			}
  		}
+ 	}
+ 	if( 0 <= builtin_filter(what,filter,in,out,in1,out1) ){
+ 		fflush(out);
+ 		if( out1 ) fflush(out1);
+ 		Finish(0);
  	}
  
  	if( isCFI(filter) ){
  		CStr(conninfo,2048);
  
  		sv1log("#### execFilter[%s] CFI\n",what);
  		make_conninfo(Conn,AVStr(conninfo));
  
  		addConnEnviron(Conn);
  		close_all(ifd,ofd,curLogFd());
  		dup2(curLogFd(),2);
  		cfi(isresp,in,out,conninfo,filter);
  		Finish(0);

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V