uwp build fix + more ivp6 support
This commit is contained in:
		@@ -276,6 +276,7 @@ namespace ix
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Accept a connection.
 | 
					            // Accept a connection.
 | 
				
			||||||
 | 
					            // FIXME: Is this working for ipv6 ?
 | 
				
			||||||
            struct sockaddr_in client; // client address information
 | 
					            struct sockaddr_in client; // client address information
 | 
				
			||||||
            int clientFd;              // socket connected to client
 | 
					            int clientFd;              // socket connected to client
 | 
				
			||||||
            socklen_t addressLen = sizeof(client);
 | 
					            socklen_t addressLen = sizeof(client);
 | 
				
			||||||
@@ -307,9 +308,44 @@ namespace ix
 | 
				
			|||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // FIXME error handling
 | 
					            std::unique_ptr<ConnectionInfo> connectionInfo;
 | 
				
			||||||
            char *remoteIp = inet_ntoa(client.sin_addr);
 | 
					
 | 
				
			||||||
            auto connectionInfo = std::make_unique<ConnectionInfo>(remoteIp, client.sin_port);
 | 
					            if (_addressFamily == AF_INET)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                char remoteIp[INET_ADDRSTRLEN];
 | 
				
			||||||
 | 
					                if (inet_ntop(AF_INET, &client.sin_addr, remoteIp, INET_ADDRSTRLEN) == nullptr)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    int err = Socket::getErrno();
 | 
				
			||||||
 | 
					                    std::stringstream ss;
 | 
				
			||||||
 | 
					                    ss << "SocketServer::run() error calling inet_ntop (ipv4): " << err << ", "
 | 
				
			||||||
 | 
					                       << strerror(err);
 | 
				
			||||||
 | 
					                    logError(ss.str());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    Socket::closeSocket(clientFd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    continue;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                connectionInfo = std::make_unique<ConnectionInfo>(remoteIp, client.sin_port);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else // AF_INET6
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                char remoteIp[INET6_ADDRSTRLEN];
 | 
				
			||||||
 | 
					                if (inet_ntop(AF_INET6, &client.sin_addr, remoteIp, INET6_ADDRSTRLEN) == nullptr)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    int err = Socket::getErrno();
 | 
				
			||||||
 | 
					                    std::stringstream ss;
 | 
				
			||||||
 | 
					                    ss << "SocketServer::run() error calling inet_ntop (ipv6): " << err << ", "
 | 
				
			||||||
 | 
					                       << strerror(err);
 | 
				
			||||||
 | 
					                    logError(ss.str());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    Socket::closeSocket(clientFd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    continue;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                connectionInfo = std::make_unique<ConnectionInfo>(remoteIp, client.sin_port);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            std::shared_ptr<ConnectionState> connectionState;
 | 
					            std::shared_ptr<ConnectionState> connectionState;
 | 
				
			||||||
            if (_connectionStateFactory)
 | 
					            if (_connectionStateFactory)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user