if (ret < 0)
goto get_next_dst;
sockfd = ret;
+ flowopt_setopts(sockfd, fo);
/*
* Reuse the address on passive sockets to avoid failure on
* restart (protocols using listen()) and when creating
para_strerror(-ret));
break;
}
- flowopt_setopts(sockfd, fo);
- if (src) {
+ if (passive) {
if (bind(sockfd, src->ai_addr, src->ai_addrlen) < 0) {
close(sockfd);
goto get_next_src;
}
- if (!dst) /* bind-only completed successfully */
- break;
+ /* bind completed successfully */
+ break;
+ } else {
+ if (connect(sockfd, dst->ai_addr, dst->ai_addrlen) == 0)
+ break; /* connection completed successfully */
}
-
- if (dst && connect(sockfd, dst->ai_addr, dst->ai_addrlen) == 0)
- break; /* connection completed successfully */
close(sockfd);
get_next_dst:
if (dst && (dst = dst->ai_next))