Add cancel button to password change menu. (#5720)
[oweals/minetest.git] / src / socket.cpp
index c3b5fc564534b43165fd45e9c68437a5a8d2915e..17fa1924dd217491ad308daa777866bf1747a2b6 100644 (file)
@@ -44,11 +44,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
        #include <windows.h>
        #include <winsock2.h>
        #include <ws2tcpip.h>
-       #ifdef _MSC_VER
-               #pragma comment(lib, "ws2_32.lib")
-       #endif
-typedef SOCKET socket_t;
-typedef int socklen_t;
+       #define LAST_SOCKET_ERR() WSAGetLastError()
+       typedef SOCKET socket_t;
+       typedef int socklen_t;
 #else
        #include <sys/types.h>
        #include <sys/socket.h>
@@ -57,7 +55,8 @@ typedef int socklen_t;
        #include <netdb.h>
        #include <unistd.h>
        #include <arpa/inet.h>
-typedef int socket_t;
+       #define LAST_SOCKET_ERR() (errno)
+       typedef int socket_t;
 #endif
 
 // Set to true to enable verbose debug output
@@ -154,7 +153,7 @@ void Address::Resolve(const char *name)
 
        struct addrinfo *resolved, hints;
        memset(&hints, 0, sizeof(hints));
-       
+
        // Setup hints
        hints.ai_socktype = 0;
        hints.ai_protocol = 0;
@@ -168,7 +167,7 @@ void Address::Resolve(const char *name)
        {
                hints.ai_family = AF_INET;
        }
-       
+
        // Do getaddrinfo()
        int e = getaddrinfo(name, NULL, &hints, &resolved);
        if(e != 0)
@@ -342,7 +341,8 @@ bool UDPSocket::init(bool ipv6, bool noExceptions)
                if (noExceptions) {
                        return false;
                } else {
-                       throw SocketException("Failed to create socket");
+                       throw SocketException(std::string("Failed to create socket: error ")
+                               + itos(LAST_SOCKET_ERR()));
                }
        }
 
@@ -514,7 +514,7 @@ int UDPSocket::Receive(Address & sender, void *data, int size)
                dstream << (int) m_handle << " <- ";
                sender.print(&dstream);
                dstream << ", size=" << received;
-               
+
                // Print packet contents
                dstream << ", data=";
                for(int i = 0; i < received && i < 20; i++) {
@@ -525,7 +525,7 @@ int UDPSocket::Receive(Address & sender, void *data, int size)
                }
                if(received > 20)
                        dstream << "...";
-               
+
                dstream << std::endl;
        }
 
@@ -574,9 +574,8 @@ bool UDPSocket::WaitData(int timeout_ms)
                int e = WSAGetLastError();
                dstream << (int) m_handle << ": WSAGetLastError()="
                        << e << std::endl;
-               if(e == 10004 /* = WSAEINTR */ || e == 10009 /*WSAEBADF*/)
-               {
-                       dstream << "WARNING: Ignoring WSAEINTR/WSAEBADF." << std::endl;
+               if (e == 10004 /* WSAEINTR */ || e == 10009 /* WSAEBADF */) {
+                       infostream << "Ignoring WSAEINTR/WSAEBADF." << std::endl;
                        return false;
                }
 #endif
@@ -586,7 +585,7 @@ bool UDPSocket::WaitData(int timeout_ms)
                // No data
                return false;
        }
-       
+
        // There is data
        return true;
 }