(car (host-ent-addresses host-ent)))
(defun make-host-ent (h &optional errno)
- (when (sb-grovel::foreign-nullp h)
+ (when (sb-alien:null-alien h)
(name-service-error "gethostbyname" errno))
(let* ((length (sockint::hostent-length h))
(aliases (loop for i = 0 then (1+ i)
#+sb-bsd-sockets-addrinfo
(defun get-address-info (node)
- (sb-alien:with-alien ((res (* (* sockint::addrinfo)) :local
- (sb-alien:make-alien (* sockint::addrinfo))))
- (let ((err (sockint::getaddrinfo node nil nil res)))
+ (sb-alien:with-alien ((buf (sb-alien:array (* sockint::addrinfo) 1)))
+ (let* ((res (sb-alien:addr (sb-alien:deref buf 0)))
+ (err (sockint::getaddrinfo node nil nil res)))
(if (zerop err)
(let ((host-ent (make-instance 'host-ent
:name node
4)
(host-ent-addresses host-ent)
:test 'equalp)))))
- (sockint::free-addrinfo (sb-alien:deref res))
+ (sockint::freeaddrinfo (sb-alien:deref res))
host-ent)
(addrinfo-error "getaddrinfo" err)))))
sockint::EAI-FAIL
no-recovery-error)
(define-name-service-condition
- sockint::NO-ADDRESS ;; Also defined as NO-DATA, with the same value
- #-freebsd sockint::EAI-NODATA #+freebsd nil
+ ;; Also defined as NO-DATA, with the same value
+ sockint::NO-ADDRESS
+ ;; getaddrinfo() as of RFC 3493 can no longer distinguish between
+ ;; host no found and address not found
+ nil
no-address-error)
(defun condition-for-name-service-errno (err)