From f49be2528899d01836d759c33b979d27849ce8ad Mon Sep 17 00:00:00 2001 From: mpc Date: Fri, 2 Jul 2004 09:54:27 +0000 Subject: [PATCH] hmm --- apps/enclave/libsockthread/src/socket.cpp | 10 +++++++++- apps/enclave/libsockthread/src/socket.hpp | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/enclave/libsockthread/src/socket.cpp b/apps/enclave/libsockthread/src/socket.cpp index 742f42a2df..f4031e7c4a 100644 --- a/apps/enclave/libsockthread/src/socket.cpp +++ b/apps/enclave/libsockthread/src/socket.cpp @@ -40,6 +40,14 @@ Socket::Socket(int type) { #ifdef WINSOCK winsock_startup(); +#endif + sock = socket(PF_INET, type, 0); +#ifdef WINSOCK + if (sock == INVALID_SOCKET) + throw Socket_error(sam_winsock_strerror(WSAGetLastError())); +#else + if (sock == -1) + throw Socket_error(strerror(errno)); #endif } @@ -62,7 +70,7 @@ void Socket::winsock_startup(void) WSADATA wsaData; int rc = WSAStartup(wVersionRequested, &wsaData); if (rc != 0) - throw Socket_error("WSAStartup() failed (" + winsock_strerror(rc) +")"); + throw Socket_error(winsock_strerror(rc)); if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { winsock_cleanup(); throw Socket_error("Bad Winsock version"); diff --git a/apps/enclave/libsockthread/src/socket.hpp b/apps/enclave/libsockthread/src/socket.hpp index dae1a0fa8a..cb9c7bd19f 100644 --- a/apps/enclave/libsockthread/src/socket.hpp +++ b/apps/enclave/libsockthread/src/socket.hpp @@ -39,10 +39,15 @@ namespace Libsockthread { void func(void); private: #ifdef WINSOCK + typedef SOCKET socket_t; + void winsock_cleanup(void); void winsock_startup(void); // throws Socket_error const char* winsock_strerror(int code); +#else + typedef int socket_t; #endif + socket_t sock; }; class Socket_error : public runtime_error {