Article delegate-en/2035 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:<_A2034@delegate-en.ML_>]
Newsgroups: mail-lists.delegate-en

[DeleGate-En] SockMux+FCL patch for 8.2.2
19 Dec 2002 21:43:46 GMT feedback@delegate.org (Yutaka Sato)


Just after I released DeleGate/8.2.2, I noticed that SockMux in 8.2.2
does not see FCL filter.  The enclosed patch will fix it.

I noticed it when I was writing about SockMux+FCL in the following page ... ;-)
-------------------------------------------------------------------------------
<URL:http://www.delegate.org/sockmux/>
-------------------------------------------------------------------------------
SockMux -- Socket Multiplexer Protocol 
[last-modified 2002-12-20] [created 2002-12-20] 

SockMux is a newly developed tunneling protocol for inter-DeleGate
communication with the following merits: 

Symmetricity 
      ports are connected and relayed for both direction over the tunnel,
      independently of the direction of tunnel establishment between
      DeleGate servers, This feature is not supported by SOCKS protocol. 
Affinity 
      the entrance and the exit of SockMux tunnel are controllable by usual
      parameters of DeleGate, PORT and (extended) SERVER parameter.
      Also DeleGate can be attached at the exit of a tunnel as a proxy server
      for relayed protocol, enabling arbitrary protocol proxies be tunneled
      via SockMux. 
Applicability 
      not only devices with socket type interface but also FIFO type devices
      can be used as a tunnel. 

Efficiency 
      establishing a long distance TCP connection can take long time.
      Tunneling multiple connections on a persistent connection (as a
      tunnel) reduces the delay. 
Privacy Enhancement 
      the communication on the tunnel can be encrypted by SSL with
      SSLway as a FCL/FSV filter. 

After many years of not so successful experimental tunneling protocols for
DeleGate, including Vehicle/Teleport, VSAP, ThruWay, SockMux is designed
and implemented to be a protocol as simple as possible. The author expects
that SockMux will supersede those unsuccessful protocols. 


  clients -->*                 SockMux tunnel                 *--> servers
             +- DeleGate <========================> DeleGate -+
  servers <--*             a persistent connection            *<-- clients
                             on tcp/ip or fifo
-------------------------------------------------------------------------------
See <URL:http://www.delegate.org/delegate/Manual.htm#serv_SockMux> for usage.

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


*** ../delegate8.2.2/src/sox.c	Fri Dec 20 01:48:13 2002
--- sox.c	Fri Dec 20 06:28:02 2002
***************
*** 546,551 ****
--- 546,552 ----
  	int pid;
  	char fifo[256],infifo[256],outfifo[256];
  	char myname[256];
+ 	int ocommin = -1;
  
  	sockc = getReservedPorts(portv,sockv);
  	isvport = CTX_get_iserver(ctx,&isvproto,&isvhost);
***************
*** 575,580 ****
--- 576,590 ----
  		Trace("commout=%s [%s]",outfifo,fifo);
  	}
  START:
+ 	if( 0 <= ocommin ){
+ 		Trace("Close old comm: %d",ocommin);
+ 		close(ocommin);
+ 		ocommin = -1;
+ 	}
+ 	while( 0 < (pid = NoHangWait()) ){
+ 		Trace("Exit pid=%d",pid);
+ 	}
+ 
  	commin = commout = -1;
  	if( commin < 0 && infifo[0] ){
  		commin = open(infifo,2);
***************
*** 607,621 ****
  	}
  
  	sox_init(ctx,ac,av,&commin,&commout,serverurl,sizeof(serverurl));
- 	Out.b_fd = commout;
- 	Out.b_rem = 0;
  	Trace("SOX reception[%d/%d] reserved(%d) channel[%d,%d]",
  		svport,svsock,sockc,commin,commout);
  
  	if( commin < 0 ){
  		goto EXIT;
  	}
  	comminfp = fdopen(commin,"r");
  
  	/* must do exclusive lock here ... */
  	wcc = send_HELLO(&Out,&pack,0);
--- 617,640 ----
  	}
  
  	sox_init(ctx,ac,av,&commin,&commout,serverurl,sizeof(serverurl));
  	Trace("SOX reception[%d/%d] reserved(%d) channel[%d,%d]",
  		svport,svsock,sockc,commin,commout);
  
  	if( commin < 0 ){
  		goto EXIT;
  	}
+ 	if( file_issock(commin) ){
+ 		int fcl;
+ 		fcl = insertFCL(ctx,commin);
+ 		if( 0 <= fcl ){
+ 			Trace("Filter inserted: %d -> %d\n",fcl,commin);
+ 			ocommin = commin;
+ 			commin = commout = fcl;
+ 		}
+ 	}
  	comminfp = fdopen(commin,"r");
+ 	Out.b_fd = commout;
+ 	Out.b_rem = 0;
  
  	/* must do exclusive lock here ... */
  	wcc = send_HELLO(&Out,&pack,0);

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