- if (!lookup_name(fd, &ss, ss_len, name_buf, sizeof name_buf, port_buf, sizeof port_buf))
- check_name(fd, &ss, ss_len, name_buf, port_buf);
+ if (!lookup_name(fd, (struct sockaddr_storage *)&sin, sin_len,
+ name_buf, sizeof name_buf, port_buf, sizeof port_buf))
+ check_name(fd, (struct sockaddr_storage *)&sin, name_buf);
+ } else {
+ struct sockaddr_storage ss;
+ socklen_t ss_len = sizeof ss;
+
+ client_sockaddr(fd, &ss, &ss_len);
+
+ if (!lookup_name(fd, &ss, ss_len, name_buf, sizeof name_buf,
+ port_buf, sizeof port_buf))
+ check_name(fd, &ss, name_buf);
+ }