(let ((sockaddr (apply #'make-sockaddr-for socket nil address)))
(if (= (sb-sys:with-pinned-objects (sockaddr)
(sockint::bind (socket-file-descriptor socket)
(let ((sockaddr (apply #'make-sockaddr-for socket nil address)))
(if (= (sb-sys:with-pinned-objects (sockaddr)
(sockint::bind (socket-file-descriptor socket)
(let ((sockaddr (make-sockaddr-for socket)))
(sb-sys:with-pinned-objects (sockaddr)
(let ((fd (sockint::accept (socket-file-descriptor socket)
(let ((sockaddr (make-sockaddr-for socket)))
(sb-sys:with-pinned-objects (sockaddr)
(let ((fd (sockint::accept (socket-file-descriptor socket)
(let* ((sockaddr (apply #'make-sockaddr-for socket nil peer)))
(if (= (sb-sys:with-pinned-objects (sockaddr)
(sockint::connect (socket-file-descriptor socket)
(let* ((sockaddr (apply #'make-sockaddr-for socket nil peer)))
(if (= (sb-sys:with-pinned-objects (sockaddr)
(sockint::connect (socket-file-descriptor socket)
(let* ((sockaddr (make-sockaddr-for socket)))
(when (= (sb-sys:with-pinned-objects (sockaddr)
(sockint::getpeername (socket-file-descriptor socket)
(let* ((sockaddr (make-sockaddr-for socket)))
(when (= (sb-sys:with-pinned-objects (sockaddr)
(sockint::getpeername (socket-file-descriptor socket)
(let* ((sockaddr (make-sockaddr-for socket)))
(when (= (sb-sys:with-pinned-objects (sockaddr)
(sockint::getsockname (socket-file-descriptor socket)
(let* ((sockaddr (make-sockaddr-for socket)))
(when (= (sb-sys:with-pinned-objects (sockaddr)
(sockint::getsockname (socket-file-descriptor socket)
(sb-alien:cast sa-len (* integer)))))
(when (= len -1) (socket-error "recvfrom"))
(apply #'values buffer len (multiple-value-list
(sb-alien:cast sa-len (* integer)))))
(when (= len -1) (socket-error "recvfrom"))
(apply #'values buffer len (multiple-value-list