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