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