summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen D. Huston <shuston@apache.org>2009-08-05 17:17:30 +0000
committerStephen D. Huston <shuston@apache.org>2009-08-05 17:17:30 +0000
commit1da8e5a2a25e371d801b3cf10821a392695dea78 (patch)
tree38426f6b622d319c61e7650acccef368ff2e33e8
parent6fec4b809d18f31baef7f282049140f9141fd71c (diff)
downloadqpid-python-1da8e5a2a25e371d801b3cf10821a392695dea78.tar.gz
Try to create piddir if needed; on error throw a useful message. Fixes QPID-2030
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@801315 13f79535-47bb-0310-9956-ffa450edef68
-rwxr-xr-xqpid/cpp/src/qpid/sys/windows/LockFile.cpp3
-rw-r--r--qpid/cpp/src/windows/QpiddBroker.cpp11
2 files changed, 13 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/sys/windows/LockFile.cpp b/qpid/cpp/src/qpid/sys/windows/LockFile.cpp
index 6cc710a3df..e9079b6094 100755
--- a/qpid/cpp/src/qpid/sys/windows/LockFile.cpp
+++ b/qpid/cpp/src/qpid/sys/windows/LockFile.cpp
@@ -43,7 +43,8 @@ LockFile::LockFile(const std::string& path_, bool create)
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));
}
diff --git a/qpid/cpp/src/windows/QpiddBroker.cpp b/qpid/cpp/src/windows/QpiddBroker.cpp
index a22ccba63f..5c6eef48f8 100644
--- a/qpid/cpp/src/windows/QpiddBroker.cpp
+++ b/qpid/cpp/src/windows/QpiddBroker.cpp
@@ -223,6 +223,17 @@ int QpiddBroker::execute (QpiddOptions *options) {
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);