svn commit: r1382799 - in /qpid/trunk/qpid/java: bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/ client/src/main/java/org/apache/qpid/client/ client/src/main/java/org/apache/qpid/clien

2012-09-10 Thread robbie
Author: robbie
Date: Mon Sep 10 12:39:44 2012
New Revision: 1382799

URL: http://svn.apache.org/viewvc?rev=1382799&view=rev
Log:
QPID-4289: Fix 0-8/0-9/0-9-1 failover issues

Applied patch from Philip Harvey  and Oleksandr 
Rudyy 

Added:

qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/failover/MultipleBrokersFailoverTest.java

qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestUtils.java
Modified:

qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java

qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java

qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java

qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java

qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionCloseMethodHandler.java

qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java

qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolSession.java

qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/failover/FailoverBehaviourTest.java

qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java
qpid/trunk/qpid/java/test-profiles/CPPExcludes

Modified: 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java?rev=1382799&r1=1382798&r2=1382799&view=diff
==
--- 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java
 (original)
+++ 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java
 Mon Sep 10 12:39:44 2012
@@ -31,6 +31,7 @@ import org.apache.qpid.client.AMQConnect
 import org.apache.qpid.jms.ConnectionListener;
 import org.apache.qpid.jms.ConnectionURL;
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
+import org.apache.qpid.test.utils.TestUtils;
 
 import com.sleepycat.je.rep.ReplicationConfig;
 
@@ -134,7 +135,10 @@ public class HAClusterBlackboxTest exten
 
 public void assertFailoverOccurs(long delay) throws 
InterruptedException
 {
-_failoverLatch.await(delay, TimeUnit.MILLISECONDS);
+if (!_failoverLatch.await(delay, TimeUnit.MILLISECONDS))
+{
+LOGGER.warn("Test thread dump:\n\n" + TestUtils.dumpThreads() 
+ "\n");
+}
 assertEquals("Failover did not occur", 0, 
_failoverLatch.getCount());
 }
 

Modified: 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java?rev=1382799&r1=1382798&r2=1382799&view=diff
==
--- 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
 (original)
+++ 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
 Mon Sep 10 12:39:44 2012
@@ -204,7 +204,7 @@ public class HATestClusterCreator
 
 public void stopNode(final int brokerPortNumber)
 {
-_testcase.stopBroker(brokerPortNumber);
+_testcase.killBroker(brokerPortNumber);
 }
 
 public void stopCluster() throws Exception

Modified: 
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java?rev=1382799&r1=1382798&r2=1382799&view=diff
==
--- 
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
 (original)
+++ 
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
 Mon Sep 10 12:39:44 2012
@@ -1080,7 +1080,7 @@ public class AMQConnection extends Close
 return _started;
 }
 
-protected final boolean isConnected()
+public final boolean isConnected()
 {
 return _connected;
 }

Modified: 
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java?rev=1382799&r1=1382798&r2=1382799&view=diff
==
--

svn commit: r1382830 - in /qpid/trunk/qpid: cpp/src/qpid/broker/Connection.cpp cpp/src/qpid/broker/ConnectionHandler.cpp specs/management-schema.xml

2012-09-10 Thread kgiusti
Author: kgiusti
Date: Mon Sep 10 13:32:07 2012
New Revision: 1382830

URL: http://svn.apache.org/viewvc?rev=1382830&view=rev
Log:
QPID-4174: add client properties to client-related events.  Original patch from 
Pavel Moravec

Modified:
qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
qpid/trunk/qpid/specs/management-schema.xml

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp?rev=1382830&r1=1382829&r2=1382830&view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp Mon Sep 10 13:32:07 2012
@@ -142,7 +142,7 @@ Connection::~Connection()
 // In a cluster, Connections destroyed during shutdown are in
 // a cluster-unsafe context. Don't raise an event in that case.
 if (!link && isClusterSafe())
-agent->raiseEvent(_qmf::EventClientDisconnect(mgmtId, 
ConnectionState::getUserId()));
+agent->raiseEvent(_qmf::EventClientDisconnect(mgmtId, 
ConnectionState::getUserId(), mgmtObject->get_remoteProperties()));
 QPID_LOG_CAT(debug, model, "Delete connection. user:" << 
ConnectionState::getUserId()
 << " rhost:" << mgmtId );
 }
@@ -287,7 +287,7 @@ void Connection::setUserId(const string&
 void Connection::raiseConnectEvent() {
 if (mgmtObject != 0) {
 mgmtObject->set_authIdentity(userId);
-agent->raiseEvent(_qmf::EventClientConnect(mgmtId, userId));
+agent->raiseEvent(_qmf::EventClientConnect(mgmtId, userId, 
mgmtObject->get_remoteProperties()));
 }
 
 QPID_LOG_CAT(debug, model, "Create connection. user:" << userId

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp?rev=1382830&r1=1382829&r2=1382830&view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp Mon Sep 10 
13:32:07 2012
@@ -32,6 +32,7 @@
 #include "qpid/log/Statement.h"
 #include "qpid/sys/SecurityLayer.h"
 #include "qpid/broker/AclModule.h"
+#include "qpid/amqp_0_10/Codecs.h"
 #include "qmf/org/apache/qpid/broker/EventClientConnectFail.h"
 
 using namespace qpid;
@@ -148,6 +149,24 @@ void ConnectionHandler::Handler::startOk
 
 void ConnectionHandler::Handler::startOk(const ConnectionStartOkBody& body)
 {
+const framing::FieldTable& clientProperties = body.getClientProperties();
+qmf::org::apache::qpid::broker::Connection* mgmtObject = 
connection.getMgmtObject();
+
+if (mgmtObject != 0) {
+string procName = clientProperties.getAsString(CLIENT_PROCESS_NAME);
+uint32_t pid = clientProperties.getAsInt(CLIENT_PID);
+uint32_t ppid = clientProperties.getAsInt(CLIENT_PPID);
+
+types::Variant::Map properties;
+amqp_0_10::translate(clientProperties, properties);
+mgmtObject->set_remoteProperties(properties);
+if (!procName.empty())
+mgmtObject->set_remoteProcessName(procName);
+if (pid != 0)
+mgmtObject->set_remotePid(pid);
+if (ppid != 0)
+mgmtObject->set_remoteParentPid(ppid);
+}
 try {
 authenticator->start(body.getMechanism(), body.hasResponse() ? 
&body.getResponse() : 0);
 } catch (std::exception& /*e*/) {
@@ -160,8 +179,9 @@ void ConnectionHandler::Handler::startOk
 string uid;
 authenticator->getError(error);
 authenticator->getUid(uid);
-if (agent) {
-
agent->raiseEvent(_qmf::EventClientConnectFail(connection.getMgmtId(), uid, 
error));
+if (agent && mgmtObject) {
+
agent->raiseEvent(_qmf::EventClientConnectFail(connection.getMgmtId(), uid, 
error,
+   
mgmtObject->get_remoteProperties()));
 }
 QPID_LOG_CAT(debug, model, "Failed connection. rhost:" << 
connection.getMgmtId()
 << " user:" << uid
@@ -169,9 +189,8 @@ void ConnectionHandler::Handler::startOk
 }
 throw;
 }
-const framing::FieldTable& clientProperties = body.getClientProperties();
-connection.setClientProperties(clientProperties);
 
+connection.setClientProperties(clientProperties);
 connection.setFederationLink(clientProperties.get(QPID_FED_LINK));
 if (clientProperties.isSet(QPID_FED_TAG)) {
 
connection.setFederationPeerTag(clientProperties.getAsString(QPID_FED_TAG));
@@ -187,19 +206,6 @@ void ConnectionHandler::Handler::startOk
 }
 QPID_LOG(info, "Connection is a federation link");
 }
-
-if (connection.

svn commit: r1382915 - /qpid/trunk/qpid/java/broker/etc/config.xml

2012-09-10 Thread robbie
Author: robbie
Date: Mon Sep 10 14:55:18 2012
New Revision: 1382915

URL: http://svn.apache.org/viewvc?rev=1382915&view=rev
Log:
NO-JIRA: add default config for http management

Modified:
qpid/trunk/qpid/java/broker/etc/config.xml

Modified: qpid/trunk/qpid/java/broker/etc/config.xml
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/etc/config.xml?rev=1382915&r1=1382914&r2=1382915&view=diff
==
--- qpid/trunk/qpid/java/broker/etc/config.xml (original)
+++ qpid/trunk/qpid/java/broker/etc/config.xml Mon Sep 10 14:55:18 2012
@@ -42,6 +42,7 @@
 262144
 262144
 
+
 
 true
 
@@ -57,10 +58,14 @@
 ${conf}/qpid.keystore
 password
 
+
+true
+
 
 false
 
 
+
 
 65535
 en_US 



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1382918 [2/2] - in /qpid/proton/branches/driver_abstraction: ./ examples/broker/ proton-c/ proton-c/bindings/ proton-c/bindings/php/ proton-c/bindings/python/ proton-c/bindings/ruby/ prot

2012-09-10 Thread kgiusti
Modified: qpid/proton/branches/driver_abstraction/proton-c/src/scanner.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/scanner.c?rev=1382918&r1=1382917&r2=1382918&view=diff
==
--- qpid/proton/branches/driver_abstraction/proton-c/src/scanner.c (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/scanner.c Mon Sep 10 
14:56:20 2012
@@ -81,7 +81,10 @@ pn_scanner_t *pn_scanner()
 
 void pn_scanner_free(pn_scanner_t *scanner)
 {
-  free(scanner);
+  if (scanner) {
+pn_error_free(scanner->error);
+free(scanner);
+  }
 }
 
 pn_token_t pn_scanner_token(pn_scanner_t *scanner)

Modified: qpid/proton/branches/driver_abstraction/proton-c/src/util.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/util.h?rev=1382918&r1=1382917&r2=1382918&view=diff
==
--- qpid/proton/branches/driver_abstraction/proton-c/src/util.h (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/util.h Mon Sep 10 
14:56:20 2012
@@ -92,4 +92,7 @@ bool pn_env_bool(const char *name);
 char *pn_strdup(const char *src);
 char *pn_strndup(const char *src, size_t n);
 
+#define pn_min(X,Y) ((X) > (Y) ? (Y) : (X))
+#define pn_max(X,Y) ((X) < (Y) ? (Y) : (X))
+
 #endif /* util.h */

Modified: qpid/proton/branches/driver_abstraction/tests/proton_tests/__init__.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/tests/proton_tests/__init__.py?rev=1382918&r1=1382917&r2=1382918&view=diff
==
--- qpid/proton/branches/driver_abstraction/tests/proton_tests/__init__.py 
(original)
+++ qpid/proton/branches/driver_abstraction/tests/proton_tests/__init__.py Mon 
Sep 10 14:56:20 2012
@@ -21,3 +21,4 @@ import proton_tests.engine
 import proton_tests.message
 import proton_tests.messenger
 import proton_tests.sasl
+import proton_tests.transport

Modified: qpid/proton/branches/driver_abstraction/tests/proton_tests/engine.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/tests/proton_tests/engine.py?rev=1382918&r1=1382917&r2=1382918&view=diff
==
--- qpid/proton/branches/driver_abstraction/tests/proton_tests/engine.py 
(original)
+++ qpid/proton/branches/driver_abstraction/tests/proton_tests/engine.py Mon 
Sep 10 14:56:20 2012
@@ -55,8 +55,10 @@ class Test(common.Test):
   def connection(self):
 c1 = pn_connection()
 c2 = pn_connection()
-t1 = pn_transport(c1)
-t2 = pn_transport(c2)
+t1 = pn_transport()
+pn_transport_bind(t1, c1)
+t2 = pn_transport()
+pn_transport_bind(t2, c2)
 self._wires.append((c1, t1, c2, t2))
 trc = os.environ.get("PN_TRACE_FRM")
 if trc and trc.lower() in ("1", "2", "yes", "true"):
@@ -82,7 +84,9 @@ class Test(common.Test):
   def cleanup(self):
 for c1, t1, c2, t2 in self._wires:
   pn_connection_free(c1)
+  pn_transport_free(t1)
   pn_connection_free(c2)
+  pn_transport_free(t2)
 
   def pump(self):
 for c1, t1, c2, t2 in self._wires:

Modified: qpid/proton/branches/driver_abstraction/tests/proton_tests/message.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/tests/proton_tests/message.py?rev=1382918&r1=1382917&r2=1382918&view=diff
==
--- qpid/proton/branches/driver_abstraction/tests/proton_tests/message.py 
(original)
+++ qpid/proton/branches/driver_abstraction/tests/proton_tests/message.py Mon 
Sep 10 14:56:20 2012
@@ -127,6 +127,8 @@ class CodecTest(Test):
 assert not cd, cd
 assert saved == body, (body, saved)
 
+pn_message_free(msg2)
+
 
 class LoadSaveTest(Test):
 
@@ -172,3 +174,12 @@ class LoadSaveTest(Test):
 
   def testText(self):
 self._test(PN_TEXT, "this is a text string")
+
+  def testTextLoadNone(self):
+pn_message_set_format(self.msg, PN_TEXT)
+pn_message_clear(self.msg)
+cd = pn_message_load(self.msg, None)
+assert cd == 0
+cd, saved = pn_message_save(self.msg, 1024)
+assert cd >= 0
+assert saved == ""

Modified: 
qpid/proton/branches/driver_abstraction/tests/proton_tests/messenger.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/tests/proton_tests/messenger.py?rev=1382918&r1=1382917&r2=1382918&view=diff
==
--- qpid/proton/branches/driver_abstraction/tests/proton_tests/messenger.py 
(original)
+++ qpid/proton/branches/driver_abstraction/tests/proton_tests/messenger.py Mon 
Sep 10 14:56:20 2012
@@ -48,6 +48,7 @@ class Test(common.Test):
 pn_messenger_free(self.server)
 self.client = None
 self.server = None
+pn_message_free(msg)
 
 cla

svn commit: r1382947 - in /qpid/trunk/qpid: doc/book/src/java-broker/ java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ java/broker-plugins/management-ht

2012-09-10 Thread kwall
Author: kwall
Date: Mon Sep 10 15:37:45 2012
New Revision: 1382947

URL: http://svn.apache.org/viewvc?rev=1382947&view=rev
Log:
QPID-4292: add ACL rule to authorise access to the web management UI

* added object name MANAGEMENT to represent both JMX and Web Management layers
* Change both JMX/Web entry points to permission access with an access 
management check
* Updated examples and docbook
* Made Principals serialised to avoid container warnings when Qpid principals 
are placed within a HttpSession.

Work of Robbie Gemmell  and myself.

Modified:
qpid/trunk/qpid/doc/book/src/java-broker/Configure-ACLs.xml

qpid/trunk/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/PlainConfigurationTest.java

qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java

qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java

qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java

qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/UserRestACLTest.java

qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java
qpid/trunk/qpid/java/broker/etc/broker_example.acl

qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java

qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectType.java

qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/AuthenticatedPrincipal.java

qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java

qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/rmi/RMIPasswordAuthenticator.java

qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java

qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/rmi/RMIPasswordAuthenticatorTest.java

qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java

Modified: qpid/trunk/qpid/doc/book/src/java-broker/Configure-ACLs.xml
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/java-broker/Configure-ACLs.xml?rev=1382947&r1=1382946&r2=1382947&view=diff
==
--- qpid/trunk/qpid/doc/book/src/java-broker/Configure-ACLs.xml (original)
+++ qpid/trunk/qpid/doc/book/src/java-broker/Configure-ACLs.xml Mon Sep 10 
15:37:45 2012
@@ -215,36 +215,40 @@
 
   
 
-   QUEUE 
-A queue  
+   VIRTUALHOST 
+   A virtualhost (Java Broker only) 
 
 
-   EXCHANGE 
-  An exchange  
+   MANAGEMENT  
+   Management - for web and JMX (Java Broker only) 

 
 
-   VIRTUALHOST 
-A virtualhost (Java Broker only) 
+   QUEUE 
+   A queue  
+
+
+   EXCHANGE 
+ An exchange  
 
 
USER 
-A user (Java Broker only) 
+   A user (Java Broker only) 
 
 
GROUP 
-A group (Java Broker only) 
+   A group (Java Broker only) 
 
 
METHOD 
-Management or agent or broker method (Java Broker 
only) 
+   Management or agent or broker method (Java Broker 
only) 
 
 
-   BROKER 
-  The broker (not currently used in Java Broker) 

+   LINK 
+   A federation or inter-broker link (not currently used 
in Java Broker) 
 
 
-   LINK 
-A federation or inter-broker link (not currently used 
in Java Broker) 
+   BROKER 
+   The broker (not currently used in Java Broker) 

 
   
 
@@ -387,8 +391,9 @@
  is allowed to perform user maintainence  This example illustrates the 
permissioning of an individual component.
   
   
-# Give usermaint permission to execute all JMX Methods on the
+# Give usermaint access to management and permission to execute all 
JMX Methods on the
 # UserManagement MBean and perform all actions for USER objects
+ACL ALLOW usermaint ACCESS MANAGEMENT
 ACL ALLOW usermaint ALL METHOD component="UserManagement"
 ACL ALLOW usermaint ALL USER
 ACL DENY ALL ALL METHOD component="UserManagement"

Modified: 
qpid/trunk/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/PlainConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bro

svn commit: r1382956 - /qpid/trunk/qpid/doc/book/src/java-broker/HA-Guide.xml

2012-09-10 Thread kwall
Author: kwall
Date: Mon Sep 10 16:04:46 2012
New Revision: 1382956

URL: http://svn.apache.org/viewvc?rev=1382956&view=rev
Log:
NO-JIRA: Correct closing tag in XML example with Java docbook documentation.

Modified:
qpid/trunk/qpid/doc/book/src/java-broker/HA-Guide.xml

Modified: qpid/trunk/qpid/doc/book/src/java-broker/HA-Guide.xml
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/java-broker/HA-Guide.xml?rev=1382956&r1=1382955&r2=1382956&view=diff
==
--- qpid/trunk/qpid/doc/book/src/java-broker/HA-Guide.xml (original)
+++ qpid/trunk/qpid/doc/book/src/java-broker/HA-Guide.xml Mon Sep 10 16:04:46 
2012
@@ -373,19 +373,15 @@
   
   ...
 ]]>
-  And to override the BDB replication configuration options 
je.rep.insufficientReplicasTimeout.
+  And to override the BDB replication configuration options 
je.rep.electionsPrimaryRetries.
   
 



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1382991 - in /qpid/trunk/qpid/cpp/src/qpid/broker: Queue.cpp QueueSettings.cpp QueueSettings.h SessionAdapter.cpp

2012-09-10 Thread mgoulish
Author: mgoulish
Date: Mon Sep 10 17:23:34 2012
New Revision: 1382991

URL: http://svn.apache.org/viewvc?rev=1382991&view=rev
Log:
Jira  QPID-4142
browse-only queues


Modified:
qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.h
qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=1382991&r1=1382990&r2=1382991&view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Mon Sep 10 17:23:34 2012
@@ -206,6 +206,10 @@ Queue::Queue(const string& _name, const 
 brokerMgmtObject->inc_queueCount();
 }
 }
+
+if ( settings.isBrowseOnly ) {
+QPID_LOG ( info, "Queue " << name << " is browse-only." );
+}
 }
 
 Queue::~Queue()
@@ -483,6 +487,11 @@ void Queue::consume(Consumer::shared_ptr
 // Check for exclusivity of acquiring consumers.
 size_t acquiringConsumers = consumerCount - browserCount;
 if (c->preAcquires()) {
+if(settings.isBrowseOnly) {
+throw NotAllowedException(
+QPID_MSG("Queue " << name << " is browse only.  Refusing 
acquiring consumer."));
+}
+
 if(exclusive) {
 throw ResourceLockedException(
 QPID_MSG("Queue " << getName()

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.cpp?rev=1382991&r1=1382990&r2=1382991&view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.cpp Mon Sep 10 17:23:34 
2012
@@ -39,6 +39,7 @@ const std::string POLICY_TYPE("qpid.poli
 const std::string POLICY_TYPE_REJECT("reject");
 const std::string POLICY_TYPE_RING("ring");
 const std::string NO_LOCAL("no-local");
+const std::string BROWSE_ONLY("browse-only");
 const std::string TRACE_ID("qpid.trace.id");
 const std::string TRACE_EXCLUDES("qpid.trace.exclude");
 const std::string LVQ_KEY("qpid.last_value_queue_key");
@@ -82,6 +83,7 @@ QueueSettings::QueueSettings(bool d, boo
 addTimestamp(false),
 dropMessagesAtLimit(false),
 noLocal(false),
+isBrowseOnly(false),
 autoDeleteDelay(0),
 alertRepeatInterval(60)
 {}
@@ -108,6 +110,9 @@ bool QueueSettings::handle(const std::st
 } else if (key == NO_LOCAL) {
 noLocal = value;
 return true;
+} else if (key == BROWSE_ONLY) {
+isBrowseOnly = value;
+return true;
 } else if (key == TRACE_ID) {
 traceId = value.asString();
 return true;

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.h?rev=1382991&r1=1382990&r2=1382991&view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.h Mon Sep 10 17:23:34 2012
@@ -59,6 +59,7 @@ struct QueueSettings
 bool dropMessagesAtLimit;//aka ring queue policy
 
 bool noLocal;
+bool isBrowseOnly;
 std::string traceId;
 std::string traceExcludes;
 uint64_t autoDeleteDelay;//queueTtl?

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp?rev=1382991&r1=1382990&r2=1382991&view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp Mon Sep 10 17:23:34 
2012
@@ -422,6 +422,11 @@ SessionAdapter::MessageHandlerImpl::subs
 if(!destination.empty() && state.exists(destination))
 throw NotAllowedException(QPID_MSG("Consumer tags must be unique"));
 
+if (queue->getSettings().isBrowseOnly && acquireMode == 0) {
+QPID_LOG(info, "Overriding request to consume from browse-only queue " 
<< queue->getName());
+acquireMode = 1;
+}
+
 // We allow browsing (acquireMode == 1) of exclusive queues, this is 
required by HA.
 if (queue->hasExclusiveOwner() && !queue->isExclusiveOwner(&session) && 
acquireMode == 0)
 throw ResourceLockedException(QPID_MSG("Cannot subscribe to exclusive 
queue "



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1383014 - in /qpid/proton/branches/driver_abstraction/proton-c: CMakeLists.txt src/driver-internal.h src/driver.c src/driver_impl.h src/drivers/openssl.c src/drivers/poll.c src/drivers/ss

2012-09-10 Thread kgiusti
Author: kgiusti
Date: Mon Sep 10 18:08:00 2012
New Revision: 1383014

URL: http://svn.apache.org/viewvc?rev=1383014&view=rev
Log:
PROTON-2: fix the SSL build, rename file for consistency.

Added:
qpid/proton/branches/driver_abstraction/proton-c/src/driver-internal.h   
(contents, props changed)
  - copied, changed from r1382918, 
qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h
Removed:
qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h
Modified:
qpid/proton/branches/driver_abstraction/proton-c/CMakeLists.txt
qpid/proton/branches/driver_abstraction/proton-c/src/driver.c
qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c
qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c
qpid/proton/branches/driver_abstraction/proton-c/src/drivers/ssl_stub.c

Modified: qpid/proton/branches/driver_abstraction/proton-c/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/CMakeLists.txt?rev=1383014&r1=1383013&r2=1383014&view=diff
==
--- qpid/proton/branches/driver_abstraction/proton-c/CMakeLists.txt (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/CMakeLists.txt Mon Sep 10 
18:08:00 2012
@@ -61,7 +61,7 @@ endif (POLLER STREQUAL poll)
 # Link in openssl if present
 if (SSL_IMPL STREQUAL openssl)
   set (pn_driver_ssl_impl src/drivers/openssl.c)
-  set (LINK_DEPS ${LINK_DEPS} ssl crypto)
+  set (SSL_LIB ssl crypto)
 else (SSL_IMPL STREQUAL openssl)
   set (pn_driver_ssl_impl src/drivers/ssl_stub.c)
 endif (SSL_IMPL STREQUAL openssl)
@@ -109,7 +109,7 @@ add_library (
   ${PROJECT_BINARY_DIR}/encodings.h
   ${PROJECT_BINARY_DIR}/protocol.h
 )
-target_link_libraries (qpid-proton ${UUID_LIB})
+target_link_libraries (qpid-proton ${UUID_LIB} ${SSL_LIB})
 
 add_executable (proton src/proton.c)
 target_link_libraries (proton qpid-proton)

Copied: qpid/proton/branches/driver_abstraction/proton-c/src/driver-internal.h 
(from r1382918, 
qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h)
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/driver-internal.h?p2=qpid/proton/branches/driver_abstraction/proton-c/src/driver-internal.h&p1=qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h&r1=1382918&r2=1383014&rev=1383014&view=diff
==
--- qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h 
(original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/driver-internal.h Mon 
Sep 10 18:08:00 2012
@@ -1,5 +1,5 @@
-#ifndef PROTON_SRC_DRIVER_H
-#define PROTON_SRC_DRIVER_H 1
+#ifndef PROTON_SRC_DRIVER_INTERNAL_H
+#define PROTON_SRC_DRIVER_INTERNAL_H 1
 /*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -111,4 +111,4 @@ void pn_connector_process_output(pn_conn
 void pn_connector_process_input(pn_connector_t *);
 
 
-#endif /* driver.h */
+#endif /* driver-internal.h */

Propchange: 
qpid/proton/branches/driver_abstraction/proton-c/src/driver-internal.h
--
svn:eol-style = native

Modified: qpid/proton/branches/driver_abstraction/proton-c/src/driver.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/driver.c?rev=1383014&r1=1383013&r2=1383014&view=diff
==
--- qpid/proton/branches/driver_abstraction/proton-c/src/driver.c (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/driver.c Mon Sep 10 
18:08:00 2012
@@ -24,7 +24,7 @@
 #include 
 #include 
 #include "util.h"
-#include "driver_impl.h"
+#include "driver-internal.h"
 #include "drivers/ssl.h"
 
 #include 

Modified: qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c?rev=1383014&r1=1383013&r2=1383014&view=diff
==
--- qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c 
(original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c Mon 
Sep 10 18:08:00 2012
@@ -22,7 +22,7 @@
 #define _POSIX_C_SOURCE 1
 
 #include 
-#include "../driver_impl.h"
+#include "../driver-internal.h"
 #include "../util.h"
 
 #include 

Modified: qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c?rev=1383014&r1=1383013&r2=1383014&view=diff
==
--- qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c 
(original)
+++ qpid/proton/branches/driver_abstraction/proton-c

svn commit: r1383035 - in /qpid/proton/trunk/proton-c/src: driver.c engine/engine.c

2012-09-10 Thread rhs
Author: rhs
Date: Mon Sep 10 18:48:50 2012
New Revision: 1383035

URL: http://svn.apache.org/viewvc?rev=1383035&view=rev
Log:
fixed bug due to delayed sasl initialization; added back printing of errors 
which somehow got dropped

Modified:
qpid/proton/trunk/proton-c/src/driver.c
qpid/proton/trunk/proton-c/src/engine/engine.c

Modified: qpid/proton/trunk/proton-c/src/driver.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/driver.c?rev=1383035&r1=1383034&r2=1383035&view=diff
==
--- qpid/proton/trunk/proton-c/src/driver.c (original)
+++ qpid/proton/trunk/proton-c/src/driver.c Mon Sep 10 18:48:50 2012
@@ -96,6 +96,7 @@ struct pn_connector_t {
   char output[IO_BUF_SIZE];
   pn_connection_t *connection;
   pn_transport_t *transport;
+  pn_sasl_t *sasl;
   bool input_done;
   bool output_done;
   pn_listener_t *listener;
@@ -356,6 +357,7 @@ pn_connector_t *pn_connector_fd(pn_drive
   c->output_size = 0;
   c->connection = NULL;
   c->transport = pn_transport();
+  c->sasl = pn_sasl(c->transport);
   c->input_done = false;
   c->output_done = false;
   c->context = context;
@@ -386,7 +388,7 @@ void pn_connector_trace(pn_connector_t *
 
 pn_sasl_t *pn_connector_sasl(pn_connector_t *ctor)
 {
-  return ctor ? pn_sasl(ctor->transport) : NULL;
+  return ctor ? ctor->sasl : NULL;
 }
 
 void pn_connector_set_connection(pn_connector_t *ctor, pn_connection_t 
*connection)

Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1383035&r1=1383034&r2=1383035&view=diff
==
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Mon Sep 10 18:48:50 2012
@@ -1436,6 +1436,11 @@ ssize_t pn_input(pn_transport_t *transpo
 } else if (n == 0) {
   break;
 } else {
+  if (n != PN_EOS) {
+pn_dispatcher_trace(transport->disp, 0, "ERROR[%i] %s\n",
+pn_error_code(transport->error),
+pn_error_text(transport->error));
+  }
   if (transport->disp->trace & (PN_TRACE_RAW | PN_TRACE_FRM))
 pn_dispatcher_trace(transport->disp, 0, "<- EOS\n");
   return n;



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1383093 - /qpid/trunk/qpid/cpp/src/tests/ha_tests.py

2012-09-10 Thread aconway
Author: aconway
Date: Mon Sep 10 20:01:12 2012
New Revision: 1383093

URL: http://svn.apache.org/viewvc?rev=1383093&view=rev
Log:
QPID-4259, QPID-4262: HA broker can crash due to priority queue corruption

Already fixed on trunk. Comitting just the regression test.

Modified:
qpid/trunk/qpid/cpp/src/tests/ha_tests.py

Modified: qpid/trunk/qpid/cpp/src/tests/ha_tests.py
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/ha_tests.py?rev=1383093&r1=1383092&r2=1383093&view=diff
==
--- qpid/trunk/qpid/cpp/src/tests/ha_tests.py (original)
+++ qpid/trunk/qpid/cpp/src/tests/ha_tests.py Mon Sep 10 20:01:12 2012
@@ -20,7 +20,7 @@
 
 import os, signal, sys, time, imp, re, subprocess, glob, random, logging, 
shutil, math, unittest
 import traceback
-from qpid.messaging import Message, NotFound, ConnectionError, ReceiverError, 
Connection, Timeout, Disposition, REJECTED
+from qpid.messaging import Message, NotFound, ConnectionError, ReceiverError, 
Connection, Timeout, Disposition, REJECTED, Empty
 from qpid.datatypes import uuid4
 from brokertest import *
 from threading import Thread, Lock, Condition
@@ -36,7 +36,6 @@ class QmfAgent(object):
 self._connection = Connection.establish(
 address, client_properties={"qpid.ha-admin":1}, **kwargs)
 self._agent = BrokerAgent(self._connection)
-assert self._agent.getHaBroker(), "HA module not loaded in broker at: 
%s"%(address)
 
 def __getattr__(self, name):
 a = getattr(self._agent, name)
@@ -805,6 +804,21 @@ acl deny all all
 cluster.bounce(1)
 verify(cluster[2])
 
+def test_priority_reroute(self):
+"""Regression test for QPID-4262, rerouting messages from a priority 
queue
+to itself causes a crash"""
+cluster = HaCluster(self, 2)
+primary = cluster[0]
+session = primary.connect().session()
+s = session.sender("pq; {create:always, 
node:{x-declare:{arguments:{'qpid.priorities':10}},x-bindings:[{exchange:'amq.fanout',queue:pq}]}}")
+for m in xrange(100): s.send(Message(str(m), priority=m%10))
+pq =  QmfAgent(primary.host_port()).getQueue("pq")
+pq.reroute(request=0, useAltExchange=False, exchange="amq.fanout")
+# Verify that consuming is in priority order
+expect = [str(10*i+p) for p in xrange(9,-1,-1) for i in xrange(0,10) ]
+actual = [m.content for m in primary.get_messages("pq", 100)]
+self.assertEqual(expect, actual)
+
 def fairshare(msgs, limit, levels):
 """
 Generator to return prioritised messages in expected order for a given 
fairshare limit



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1383104 - /qpid/trunk/qpid/cpp/src/qpid/ha/BrokerInfo.cpp

2012-09-10 Thread aconway
Author: aconway
Date: Mon Sep 10 20:40:59 2012
New Revision: 1383104

URL: http://svn.apache.org/viewvc?rev=1383104&view=rev
Log:
QPID-4293: HA broker crashes on startup

Caused by invalid enum value in un-initialized member.

Modified:
qpid/trunk/qpid/cpp/src/qpid/ha/BrokerInfo.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/ha/BrokerInfo.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/BrokerInfo.cpp?rev=1383104&r1=1383103&r2=1383104&view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/ha/BrokerInfo.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/BrokerInfo.cpp Mon Sep 10 20:40:59 2012
@@ -44,7 +44,7 @@ using types::Variant;
 using framing::FieldTable;
 
 BrokerInfo::BrokerInfo(const std::string& host, uint16_t port_, const 
types::Uuid& id) :
-hostName(host), port(port_), systemId(id)
+hostName(host), port(port_), systemId(id), status(JOINING)
 {
 updateLogId();
 }



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1383225 - /qpid/branches/0.18/qpid/packaging/windows/installer.proj

2012-09-10 Thread shuston
Author: shuston
Date: Tue Sep 11 02:20:36 2012
New Revision: 1383225

URL: http://svn.apache.org/viewvc?rev=1383225&view=rev
Log:
Look for dotnet example files in the correct place for vc9. Fixes QPID-4294

Modified:
qpid/branches/0.18/qpid/packaging/windows/installer.proj

Modified: qpid/branches/0.18/qpid/packaging/windows/installer.proj
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/packaging/windows/installer.proj?rev=1383225&r1=1383224&r2=1383225&view=diff
==
--- qpid/branches/0.18/qpid/packaging/windows/installer.proj (original)
+++ qpid/branches/0.18/qpid/packaging/windows/installer.proj Tue Sep 11 
02:20:36 2012
@@ -36,7 +36,7 @@
qpidc
Package
C:\Program Files (x86)\Windows Installer XML 
v3.5\bin
-$(MSBuildExtensionsPath)\Microsoft\WiX\v3.5\wix.targets
+$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\wix.targets
 
 
 
@@ -175,10 +175,10 @@
 
 
 
 
 
 



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1383226 - /qpid/trunk/qpid/packaging/windows/installer.proj

2012-09-10 Thread shuston
Author: shuston
Date: Tue Sep 11 02:28:31 2012
New Revision: 1383226

URL: http://svn.apache.org/viewvc?rev=1383226&view=rev
Log:
Look for dotnet example files in the correct place for vc9. Fixes QPID-4294

Modified:
qpid/trunk/qpid/packaging/windows/installer.proj   (contents, props changed)

Modified: qpid/trunk/qpid/packaging/windows/installer.proj
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/packaging/windows/installer.proj?rev=1383226&r1=1383225&r2=1383226&view=diff
==
--- qpid/trunk/qpid/packaging/windows/installer.proj (original)
+++ qpid/trunk/qpid/packaging/windows/installer.proj Tue Sep 11 02:28:31 2012
@@ -36,7 +36,7 @@
qpidc
Package
C:\Program Files (x86)\Windows Installer XML 
v3.5\bin
-$(MSBuildExtensionsPath)\Microsoft\WiX\v3.5\wix.targets
+$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\wix.targets
 
 
 
@@ -175,10 +175,10 @@
 
 
 
 
 
 

Propchange: qpid/trunk/qpid/packaging/windows/installer.proj
--
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Sep 11 02:28:31 2012
@@ -0,0 +1,7 @@
+/qpid/branches/0.10/qpid/packaging/windows/installer.proj:1103083
+/qpid/branches/0.18/qpid/packaging/windows/installer.proj:1383225
+/qpid/branches/0.5.x-dev/qpid/packaging/windows/installer.proj:892761,894875
+/qpid/branches/0.6-release-windows-installer/packaging/windows/installer.proj:926803
+/qpid/branches/0.6-release-windows-installer/qpid/packaging/windows/installer.proj:926865,927233
+/qpid/branches/java-network-refactor/qpid/packaging/windows/installer.proj:805429-825319
+/qpid/branches/qpid-2935/qpid/packaging/windows/installer.proj:1061302-1072333



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1383229 - /qpid/branches/0.18/qpid/cpp/src/windows/QpiddBroker.cpp

2012-09-10 Thread shuston
Author: shuston
Date: Tue Sep 11 03:01:25 2012
New Revision: 1383229

URL: http://svn.apache.org/viewvc?rev=1383229&view=rev
Log:
Fix QPID-4269

Modified:
qpid/branches/0.18/qpid/cpp/src/windows/QpiddBroker.cpp   (contents, props 
changed)

Modified: qpid/branches/0.18/qpid/cpp/src/windows/QpiddBroker.cpp
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/cpp/src/windows/QpiddBroker.cpp?rev=1383229&r1=1383228&r2=1383229&view=diff
==
--- qpid/branches/0.18/qpid/cpp/src/windows/QpiddBroker.cpp (original)
+++ qpid/branches/0.18/qpid/cpp/src/windows/QpiddBroker.cpp Tue Sep 11 03:01:25 
2012
@@ -30,8 +30,15 @@
 #include "qpid/broker/Broker.h"
 
 #include 
+#include 
+#include 
 #include 
 
+namespace {
+  // This will accept args from the command line; augmented with service args.
+  std::vector cmdline_args;
+}
+
 namespace qpid {
 namespace broker {
 
@@ -229,6 +236,25 @@ VOID WINAPI SvcCtrlHandler(DWORD control
 
 VOID WINAPI ServiceMain(DWORD argc, LPTSTR *argv)
 {
+// The arguments can come from 2 places. Args set with the executable
+// name when the service is installed come through main() and are now
+// in cmdline_args. Arguments set in StartService come into argc/argv
+// above; if they are set, argv[0] is the service name. Make command
+// line args first; StartService args come later and can override
+// command line args.
+int all_argc = argc + cmdline_args.size();
+if (argc == 0 && !cmdline_args.empty())
+  ++all_argc;// No StartService args, so need to add prog name argv[0]
+const char **all_argv = new const char *[all_argc];
+if (all_argc > 0) {
+  int i = 0;
+  all_argv[i++] = argc > 0 ? argv[0] : svcName.c_str();
+  for (size_t j = 0; j < cmdline_args.size(); ++j)
+all_argv[i++] = cmdline_args[j].c_str();
+  for (DWORD k = 1; k < argc; ++k)
+all_argv[i++] = argv[k];
+}
+
 ::memset(&svcStatus, 0, sizeof(svcStatus));
 svcStatusHandle = ::RegisterServiceCtrlHandler(svcName.c_str(),
SvcCtrlHandler);
@@ -238,7 +264,9 @@ VOID WINAPI ServiceMain(DWORD argc, LPTS
 svcStatus.dwCurrentState = SERVICE_START_PENDING;
 ::SetServiceStatus(svcStatusHandle, &svcStatus);
 // QpiddBroker class resets state to running.
-svcStatus.dwWin32ExitCode = run_broker(argc, argv, true);
+svcStatus.dwWin32ExitCode = run_broker(all_argc,
+   const_cast(all_argv),
+   true);
 svcStatus.dwCurrentState = SERVICE_STOPPED;
 svcStatus.dwCheckPoint = 0;
 svcStatus.dwWaitHint = 0;
@@ -464,6 +492,11 @@ int main(int argc, char* argv[])
 { "", (LPSERVICE_MAIN_FUNCTION)qpid::broker::ServiceMain },
 { NULL, NULL }
 };
+// Copy any command line args to be available in case we're started
+// as a service. Pick these back up in ServiceMain.
+for (int i = 1; i < argc; ++i)
+  cmdline_args.push_back(argv[i]);
+
 if (!StartServiceCtrlDispatcher(dispatchTable)) {
 DWORD err = ::GetLastError();
 if (err == ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) // Run as console

Propchange: qpid/branches/0.18/qpid/cpp/src/windows/QpiddBroker.cpp
--
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Sep 11 03:01:25 2012
@@ -0,0 +1,8 @@
+/qpid/branches/0.5.x-dev/qpid/cpp/src/windows/QpiddBroker.cpp:892761,894875
+/qpid/branches/0.6-release-windows-installer/cpp/src/windows/QpiddBroker.cpp:926803
+/qpid/branches/0.6-release-windows-installer/qpid/cpp/src/windows/QpiddBroker.cpp:926803,927233
+/qpid/branches/QPID-2519/cpp/src/windows/QpiddBroker.cpp:1072051-1079078
+/qpid/branches/java-network-refactor/qpid/cpp/src/windows/QpiddBroker.cpp:805429-825319
+/qpid/branches/qpid-2935/qpid/cpp/src/windows/QpiddBroker.cpp:1061302-1072333
+/qpid/branches/qpid-3346/qpid/cpp/src/windows/QpiddBroker.cpp:1144319-1179855
+/qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp:1359595,1363498,1363520,1380890



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org