From dcc88cce363ec5df092769a2e203484e6b59512b Mon Sep 17 00:00:00 2001 From: mainzelm Date: Wed, 20 Jun 2001 16:12:40 +0000 Subject: [PATCH] Renamed fd->socket to port->socket and added better checking for being a socket. --- scsh/network.scm | 21 ++++++++++++++------- scsh/scsh-interfaces.scm | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/scsh/network.scm b/scsh/network.scm index bd883a7..f499372 100644 --- a/scsh/network.scm +++ b/scsh/network.scm @@ -169,14 +169,21 @@ ;;; Turn a file descriptor into a socket. -;;; Useful if running as inetd-child -(define (fd->socket fd pf) - (let* ((in (make-input-fdport fd 0)) - (out (dup->outport in))) - (set-fdes-status fd open/non-blocking) ; this raises an error if fd was not - ; a socket - (set-fdes-status out open/non-blocking) +(define (port->socket port pf) + ;;; ensure underlying fd is a socket by a random getsockopt call + (if (not (port? port)) + (error "first argument to port->socket is not a port" port)) + (sleazy-call/fdes + port + (lambda (fd) + (%getsockopt fd level/socket socket/debug))) + (let ((in (if (input-port? port) + port + (dup->inport port))) + (out (if (output-port? port) + port + (dup->outport port)))) (make-socket pf in out))) (define-foreign %socket/errno diff --git a/scsh/scsh-interfaces.scm b/scsh/scsh-interfaces.scm index bd87b75..8a706b2 100644 --- a/scsh/scsh-interfaces.scm +++ b/scsh/scsh-interfaces.scm @@ -648,7 +648,7 @@ unix-address->socket-address socket-address->unix-address create-socket - fd->socket + port->socket close-socket bind-socket connect-socket