Fix accept
							parent
							
								
									a68f50c183
								
							
						
					
					
						commit
						d6fbaf632d
					
				| 
						 | 
				
			
			@ -156,6 +156,11 @@ GENERIC: (get-local-address) ( handle remote -- sockaddr )
 | 
			
		|||
: get-local-address ( handle remote -- local )
 | 
			
		||||
    [ (get-local-address) ] keep parse-sockaddr ;
 | 
			
		||||
 | 
			
		||||
GENERIC: (get-remote-address) ( handle remote -- sockaddr )
 | 
			
		||||
 | 
			
		||||
: get-remote-address ( handle local -- remote )
 | 
			
		||||
    [ (get-remote-address) ] keep parse-sockaddr ;
 | 
			
		||||
 | 
			
		||||
GENERIC: establish-connection ( client-out remote -- )
 | 
			
		||||
 | 
			
		||||
GENERIC: ((client)) ( remote -- handle )
 | 
			
		||||
| 
						 | 
				
			
			@ -204,7 +209,7 @@ GENERIC: (accept) ( server addrspec -- handle )
 | 
			
		|||
    [
 | 
			
		||||
        dup addr>>
 | 
			
		||||
        [ (accept) ] keep
 | 
			
		||||
        [ drop dup <ports> ] [ get-local-address ] 2bi
 | 
			
		||||
        [ drop dup <ports> ] [ get-remote-address ] 2bi
 | 
			
		||||
        -rot
 | 
			
		||||
    ] keep encoding>> <encoder-duplex> swap ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,10 @@ M: object (get-local-address) ( handle remote -- sockaddr )
 | 
			
		|||
    >r handle-fd r> empty-sockaddr/size <int>
 | 
			
		||||
    [ getsockname io-error ] 2keep drop ;
 | 
			
		||||
 | 
			
		||||
M: object (get-remote-address) ( handle local -- sockaddr )
 | 
			
		||||
    >r handle-fd r> empty-sockaddr/size <int>
 | 
			
		||||
    [ getpeername io-error ] 2keep drop ;
 | 
			
		||||
 | 
			
		||||
: init-client-socket ( fd -- )
 | 
			
		||||
    SOL_SOCKET SO_OOBINLINE set-socket-option ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue