+ if (passive) {
+ /*
+ * Reuse the address on passive sockets to avoid
+ * failure on restart (protocols using listen()) and
+ * when creating multiple listener instances (UDP
+ * multicast).
+ */
+ if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on,
+ sizeof(on)) == -1) {
+ ret = -ERRNO_TO_PARA_ERROR(errno);
+ close(sockfd);
+ PARA_ERROR_LOG("can not set SO_REUSEADDR: %s\n",
+ para_strerror(-ret));
+ break;
+ }
+ if (bind(sockfd, ai->ai_addr, ai->ai_addrlen) < 0) {