if (getpeername(fd, (struct sockaddr *)buf, &sinsz) < 0) {
int err;
int errsz = sizeof(err);
if (getsockopt(fd, SOL_SOCKET, SO_ERROR, &err, &errsz) == 0)
errno = err;
if (getpeername(fd, (struct sockaddr *)buf, &sinsz) < 0) {
int err;
int errsz = sizeof(err);
if (getsockopt(fd, SOL_SOCKET, SO_ERROR, &err, &errsz) == 0)
errno = err;