- if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR)
+ /* Theres no address here, default to ipv6 bind to all */
+ ((sockaddr_in6*)servaddr)->sin6_family = AF_INET6;
+ memset(&(((sockaddr_in6*)servaddr)->sin6_addr), 0, sizeof(in6_addr));
+ ((sockaddr_in6*)servaddr)->sin6_port = htons(port);
+ size = sizeof(sockaddr_in6);
+ }
+ }
+#else
+ /* If we aren't built with ipv6, the choice becomes simple */
+ ((sockaddr_in*)servaddr)->sin_family = AF_INET;
+ if (*addr)
+ {
+ /* There is an address here. */
+ in_addr addy;
+ if (inet_pton(AF_INET, addr, &addy) < 1)
+ {
+ delete[] servaddr;
+ return false;
+ }
+ ((sockaddr_in*)servaddr)->sin_addr = addy;
+ }
+ else
+ {
+ /* Bind ipv4 to all */
+ ((sockaddr_in*)servaddr)->sin_addr.s_addr = htonl(INADDR_ANY);
+ }
+ /* Bind ipv4 port number */
+ ((sockaddr_in*)servaddr)->sin_port = htons(port);
+ size = sizeof(sockaddr_in);
+#endif
+ ret = SE->Bind(sockfd, servaddr, size);
+ delete[] servaddr;
+
+ if (ret < 0)
+ {
+ return false;
+ }
+ else
+ {
+ if (dolisten)
+ {
+ if (SE->Listen(sockfd, Config->MaxConn) == -1)