| @@ -196,7 +196,7 @@ namespace SocketHelpers | |||||
| bool connectSocket (int volatile& handle, | bool connectSocket (int volatile& handle, | ||||
| const bool isDatagram, | const bool isDatagram, | ||||
| void** serverAddress, | |||||
| struct addrinfo** const serverAddress, | |||||
| const String& hostName, | const String& hostName, | ||||
| const int portNumber, | const int portNumber, | ||||
| const int timeOutMillisecs) noexcept | const int timeOutMillisecs) noexcept | ||||
| @@ -207,7 +207,8 @@ namespace SocketHelpers | |||||
| hints.ai_flags = AI_NUMERICSERV; | hints.ai_flags = AI_NUMERICSERV; | ||||
| struct addrinfo* info = nullptr; | struct addrinfo* info = nullptr; | ||||
| if (getaddrinfo (hostName.toUTF8(), String (portNumber).toUTF8(), &hints, &info) != 0 || info == 0) | |||||
| if (getaddrinfo (hostName.toUTF8(), String (portNumber).toUTF8(), &hints, &info) != 0 | |||||
| || info == nullptr) | |||||
| return false; | return false; | ||||
| if (handle < 0) | if (handle < 0) | ||||
| @@ -221,11 +222,10 @@ namespace SocketHelpers | |||||
| if (isDatagram) | if (isDatagram) | ||||
| { | { | ||||
| struct sockaddr* s = new struct sockaddr(); | |||||
| *s = *(info->ai_addr); | |||||
| *serverAddress = s; | |||||
| if (*serverAddress != nullptr) | |||||
| freeaddrinfo (*serverAddress); | |||||
| freeaddrinfo (info); | |||||
| *serverAddress = info; | |||||
| return true; | return true; | ||||
| } | } | ||||
| @@ -341,7 +341,7 @@ bool StreamingSocket::connect (const String& remoteHostName, | |||||
| portNumber = remotePortNumber; | portNumber = remotePortNumber; | ||||
| isListener = false; | isListener = false; | ||||
| connected = SocketHelpers::connectSocket (handle, false, 0, remoteHostName, | |||||
| connected = SocketHelpers::connectSocket (handle, false, nullptr, remoteHostName, | |||||
| remotePortNumber, timeOutMillisecs); | remotePortNumber, timeOutMillisecs); | ||||
| if (! (connected && SocketHelpers::resetSocketOptions (handle, false, false))) | if (! (connected && SocketHelpers::resetSocketOptions (handle, false, false))) | ||||
| @@ -428,9 +428,9 @@ StreamingSocket* StreamingSocket::waitForNextConnection() const | |||||
| if (connected && isListener) | if (connected && isListener) | ||||
| { | { | ||||
| struct sockaddr address; | |||||
| juce_socklen_t len = sizeof (sockaddr); | |||||
| const int newSocket = (int) accept (handle, &address, &len); | |||||
| struct sockaddr_storage address; | |||||
| juce_socklen_t len = sizeof (address); | |||||
| const int newSocket = (int) accept (handle, (struct sockaddr*) &address, &len); | |||||
| if (newSocket >= 0 && connected) | if (newSocket >= 0 && connected) | ||||
| return new StreamingSocket (inet_ntoa (((struct sockaddr_in*) &address)->sin_addr), | return new StreamingSocket (inet_ntoa (((struct sockaddr_in*) &address)->sin_addr), | ||||
| @@ -453,7 +453,7 @@ DatagramSocket::DatagramSocket (const int localPortNumber, const bool allowBroad | |||||
| handle (-1), | handle (-1), | ||||
| connected (true), | connected (true), | ||||
| allowBroadcast (allowBroadcast_), | allowBroadcast (allowBroadcast_), | ||||
| serverAddress (0) | |||||
| serverAddress (nullptr) | |||||
| { | { | ||||
| SocketHelpers::initSockets(); | SocketHelpers::initSockets(); | ||||
| @@ -468,7 +468,7 @@ DatagramSocket::DatagramSocket (const String& hostName_, const int portNumber_, | |||||
| handle (handle_), | handle (handle_), | ||||
| connected (true), | connected (true), | ||||
| allowBroadcast (false), | allowBroadcast (false), | ||||
| serverAddress (0) | |||||
| serverAddress (nullptr) | |||||
| { | { | ||||
| SocketHelpers::initSockets(); | SocketHelpers::initSockets(); | ||||
| @@ -480,8 +480,8 @@ DatagramSocket::~DatagramSocket() | |||||
| { | { | ||||
| close(); | close(); | ||||
| delete static_cast <struct sockaddr*> (serverAddress); | |||||
| serverAddress = 0; | |||||
| if (serverAddress != nullptr) | |||||
| freeaddrinfo (static_cast <struct addrinfo*> (serverAddress)); | |||||
| } | } | ||||
| void DatagramSocket::close() | void DatagramSocket::close() | ||||
| @@ -514,7 +514,7 @@ bool DatagramSocket::connect (const String& remoteHostName, | |||||
| hostName = remoteHostName; | hostName = remoteHostName; | ||||
| portNumber = remotePortNumber; | portNumber = remotePortNumber; | ||||
| connected = SocketHelpers::connectSocket (handle, true, &serverAddress, | |||||
| connected = SocketHelpers::connectSocket (handle, true, (struct addrinfo**) &serverAddress, | |||||
| remoteHostName, remotePortNumber, | remoteHostName, remotePortNumber, | ||||
| timeOutMillisecs); | timeOutMillisecs); | ||||
| @@ -529,19 +529,16 @@ bool DatagramSocket::connect (const String& remoteHostName, | |||||
| DatagramSocket* DatagramSocket::waitForNextConnection() const | DatagramSocket* DatagramSocket::waitForNextConnection() const | ||||
| { | { | ||||
| struct sockaddr address; | |||||
| juce_socklen_t len = sizeof (sockaddr); | |||||
| while (waitUntilReady (true, -1) == 1) | while (waitUntilReady (true, -1) == 1) | ||||
| { | { | ||||
| struct sockaddr_storage address; | |||||
| juce_socklen_t len = sizeof (address); | |||||
| char buf[1]; | char buf[1]; | ||||
| if (recvfrom (handle, buf, 0, 0, &address, &len) > 0) | |||||
| { | |||||
| if (recvfrom (handle, buf, 0, 0, (struct sockaddr*) &address, &len) > 0) | |||||
| return new DatagramSocket (inet_ntoa (((struct sockaddr_in*) &address)->sin_addr), | return new DatagramSocket (inet_ntoa (((struct sockaddr_in*) &address)->sin_addr), | ||||
| ntohs (((struct sockaddr_in*) &address)->sin_port), | ntohs (((struct sockaddr_in*) &address)->sin_port), | ||||
| -1, -1); | -1, -1); | ||||
| } | |||||
| } | } | ||||
| return nullptr; | return nullptr; | ||||
| @@ -564,12 +561,12 @@ int DatagramSocket::read (void* destBuffer, const int maxBytesToRead, const bool | |||||
| int DatagramSocket::write (const void* sourceBuffer, const int numBytesToWrite) | int DatagramSocket::write (const void* sourceBuffer, const int numBytesToWrite) | ||||
| { | { | ||||
| // You need to call connect() first to set the server address.. | // You need to call connect() first to set the server address.. | ||||
| jassert (serverAddress != 0 && connected); | |||||
| jassert (serverAddress != nullptr && connected); | |||||
| return connected ? (int) sendto (handle, (const char*) sourceBuffer, | return connected ? (int) sendto (handle, (const char*) sourceBuffer, | ||||
| numBytesToWrite, 0, | numBytesToWrite, 0, | ||||
| (const struct sockaddr*) serverAddress, | |||||
| sizeof (struct sockaddr_in)) | |||||
| static_cast <const struct addrinfo*> (serverAddress)->ai_addr, | |||||
| static_cast <const struct addrinfo*> (serverAddress)->ai_addrlen) | |||||
| : -1; | : -1; | ||||
| } | } | ||||