From d6fbaf632de3596aac0d7b27b8acf22786f1d86a Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 15 May 2008 19:05:07 -0500 Subject: [PATCH] Fix accept --- extra/io/sockets/sockets.factor | 7 ++++++- extra/io/unix/sockets/sockets.factor | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/extra/io/sockets/sockets.factor b/extra/io/sockets/sockets.factor index 36a0559bdb..da10354261 100755 --- a/extra/io/sockets/sockets.factor +++ b/extra/io/sockets/sockets.factor @@ -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 ] [ get-local-address ] 2bi + [ drop dup ] [ get-remote-address ] 2bi -rot ] keep encoding>> swap ; diff --git a/extra/io/unix/sockets/sockets.factor b/extra/io/unix/sockets/sockets.factor index fbeb25800c..9e7676a509 100755 --- a/extra/io/unix/sockets/sockets.factor +++ b/extra/io/unix/sockets/sockets.factor @@ -26,6 +26,10 @@ M: object (get-local-address) ( handle remote -- sockaddr ) >r handle-fd r> empty-sockaddr/size [ getsockname io-error ] 2keep drop ; +M: object (get-remote-address) ( handle local -- sockaddr ) + >r handle-fd r> empty-sockaddr/size + [ getpeername io-error ] 2keep drop ; + : init-client-socket ( fd -- ) SOL_SOCKET SO_OOBINLINE set-socket-option ;