anchor.diff:            (sockaddr-storage->sockaddr ss)
           (values buffer bytes-received remote-address remote-port)))))
   
  -(defun %socket-receive (socket buffer start end size flags)
  +(defun %receive-from (socket buffer start end size flags)
     (when (typep socket 'passive-socket)
       (error "You cannot receive data from a passive socket."))
     (unless buffer
  
positive.code:         (incf-pointer buff-sap start-offset)
          (%recvfrom fd buff-sap bufflen flags ss size)))))
  
  (declaim (inline %socket-receive-stream-socket))
  (defun %socket-receive-stream-socket (socket buffer start end flags)
    (with-sockaddr-storage (ss)
      (let ((bytes-received (%socket-receive-bytes (fd-of socket) buffer
                                                   start end flags ss)))
        (values buffer bytes-received))))
  
  (declaim (inline %socket-receive-datagram-socket))
  (defun %socket-receive-datagram-socket (socket buffer start end flags)
    (with-sockaddr-storage (ss)
      (let ((bytes-received (%socket-receive-bytes (fd-of socket) buffer
                                                   start end flags ss)))
  
negative.code:     (setf buffer (make-array size :element-type 'ub8)
            start 0 end size))
    (etypecase socket
      (stream-socket (%receive-from-stream-socket socket buffer start end flags))
      (datagram-socket (%receive-from-datagram-socket socket buffer start end flags))))
  
  (defmethod receive-from ((socket active-socket) &rest args
                           &key buffer size (start 0) end)
    (%receive-from socket buffer start end size
                   (compute-flags *recvfrom-flags* args)))
  
  (define-compiler-macro receive-from (&whole form socket &rest args
                                       &key buffer size (start 0) end)
    (let ((flags (compute-flags *recvfrom-flags* args)))
      (cond (flags `(%receive-from ,socket ,buffer ,start ,end ,size ,flags))
            (t form))))
  
  ;;;; Datagram Sockets
  