Author: shuston
Date: Wed Aug  5 17:17:30 2009
New Revision: 801315

URL: http://svn.apache.org/viewvc?rev=801315&view=rev
Log:
Try to create piddir if needed; on error throw a useful message. Fixes QPID-2030

Modified:
    qpid/trunk/qpid/cpp/src/qpid/sys/windows/LockFile.cpp
    qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/sys/windows/LockFile.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/windows/LockFile.cpp?rev=801315&r1=801314&r2=801315&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/windows/LockFile.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/windows/LockFile.cpp Wed Aug  5 17:17:30 
2009
@@ -43,7 +43,8 @@
                           create ? OPEN_ALWAYS : OPEN_EXISTING,
                           FILE_FLAG_DELETE_ON_CLOSE, /* Delete file when 
closed */
                           NULL);
-    QPID_WINDOWS_CHECK_NOT(h, INVALID_HANDLE_VALUE);
+    if (h == INVALID_HANDLE_VALUE)
+        throw qpid::Exception(path + qpid::sys::strError(GetLastError()));
     impl.reset(new LockFilePrivate(h));
 }
 

Modified: qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp?rev=801315&r1=801314&r2=801315&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp Wed Aug  5 17:17:30 2009
@@ -223,6 +223,17 @@
         options->broker.port = brokerPtr->getPort("");
     std::cout << options->broker.port << std::endl;
 
+    // Make sure the pid directory exists, creating if needed. LockFile
+    // will throw an exception that makes little sense if it can't create
+    // the file.
+    if (!CreateDirectory(myOptions->control.piddir.c_str(), 0)) {
+        DWORD err = GetLastError();
+        if (err != ERROR_ALREADY_EXISTS)
+            throw qpid::Exception(QPID_MSG("Can't create pid-dir " +
+                                           myOptions->control.piddir +
+                                           ": " +
+                                           qpid::sys::strError(err)));
+    }
     qpid::sys::LockFile myPid(brokerPidFile(myOptions->control.piddir,
                                             options->broker.port),
                               true);



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to