From a2c88a372bc24a2f7cb2d37afbd35664290fe479 Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sun, 31 Jul 2011 09:43:35 +0200 Subject: [PATCH] SOCKET-ACCEPT should return the port as a third value (M. Mondor) --- contrib/sockets/sockets.lisp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/contrib/sockets/sockets.lisp b/contrib/sockets/sockets.lisp index 78b0b3b95..56e56efaf 100755 --- a/contrib/sockets/sockets.lisp +++ b/contrib/sockets/sockets.lisp @@ -582,8 +582,8 @@ static void fill_inet_sockaddr(struct sockaddr_in *sockaddr, int port, (defmethod socket-accept ((socket inet-socket)) (let ((sfd (socket-file-descriptor socket))) - (multiple-value-bind (fd vector) - (c-inline (sfd) (:int) (values :int :object) + (multiple-value-bind (fd vector port) + (c-inline (sfd) (:int) (values :int :object :int) "{ struct sockaddr_in sockaddr; socklen_t addr_len = (socklen_t)sizeof(struct sockaddr_in); @@ -595,6 +595,7 @@ static void fill_inet_sockaddr(struct sockaddr_in *sockaddr, int port, @(return 0) = new_fd; @(return 1) = Cnil; + @(return 2) = 0; if (new_fd != -1) { uint32_t ip = ntohl(sockaddr.sin_addr.s_addr); uint16_t port = ntohs(sockaddr.sin_port); @@ -606,6 +607,7 @@ static void fill_inet_sockaddr(struct sockaddr_in *sockaddr, int port, ecl_aset(vector,3, MAKE_FIXNUM( ip & 0xFF )); @(return 1) = vector; + @(return 2) = port; } }") (cond @@ -617,7 +619,8 @@ static void fill_inet_sockaddr(struct sockaddr_in *sockaddr, int port, :type (socket-type socket) :protocol (socket-protocol socket) :descriptor fd) - vector)))))) + vector + port)))))) (defmethod socket-connect ((socket inet-socket) &rest address) (let ((ip (first address))