[utilities COMMIT] /cpp-log4shib/trunk/src/RemoteSyslogAppender.cpp

noreply at shibboleth.net noreply at shibboleth.net
Wed Jan 28 17:16:29 EST 2015


Author: scantor
Date: Wed Jan 28 17:16:29 2015
New Revision: 732

URL: http://svn.shibboleth.net/view/utilities?rev=732&view=rev
Log:
Restore Winsock init logic

Modified:
    cpp-log4shib/trunk/src/RemoteSyslogAppender.cpp

Modified: cpp-log4shib/trunk/src/RemoteSyslogAppender.cpp
URL: http://svn.shibboleth.net/view/utilities/cpp-log4shib/trunk/src/RemoteSyslogAppender.cpp?rev=732&r1=731&r2=732&view=diff
==============================================================================
--- cpp-log4shib/trunk/src/RemoteSyslogAppender.cpp (original)
+++ cpp-log4shib/trunk/src/RemoteSyslogAppender.cpp Wed Jan 28 17:16:29 2015
@@ -74,6 +74,12 @@
     
     RemoteSyslogAppender::~RemoteSyslogAppender() {
         close();
+#ifdef WIN32
+        if (_cludge) {
+            // we started it, we end it.
+            WSACleanup ();
+        }
+#endif
     }
 
     void RemoteSyslogAppender::open() {
@@ -83,15 +89,29 @@
         type |= SOCK_CLOEXEC;
 #endif
         if ((_socket = socket(AF_INET, type, 0)) < 0) {
-            // loglog("RemoteSyslogAppender: failed to open socket");
-            return; // fail silently                    
+#ifdef WIN32
+            if (WSAGetLastError () == WSANOTINITIALISED) {
+                WSADATA wsaData;
+                if (WSAStartup (0x101, &wsaData) != 0) {
+                    return;
+                }
+                _cludge = 1;
+                if ((_socket = socket(AF_INET, type, 0)) < 0) {
+                    return;
+                }
+            } else {
+                return; // fail silently
+            }
+#else
+            return;
+#endif
         }
 #if !defined(LOG4SHIB_HAVE_SOCK_CLOEXEC) && defined(LOG4SHIB_HAVE_FD_CLOEXEC)
-                int fdflags = ::fcntl(_socket, F_GETFD);
-                if (fdflags != -1) {
-                    fdflags |= FD_CLOEXEC;
-                    ::fcntl(_socket, F_SETFD, fdflags);
-                }
+        int fdflags = ::fcntl(_socket, F_GETFD);
+        if (fdflags != -1) {
+            fdflags |= FD_CLOEXEC;
+            ::fcntl(_socket, F_SETFD, fdflags);
+        }
 #endif
     }
 



More information about the commits mailing list