Index: activemq-core/src/main/java/org/apache/activemq/transport/fanout/FanoutTransport.java
===================================================================
--- activemq-core/src/main/java/org/apache/activemq/transport/fanout/FanoutTransport.java	(revision 581682)
+++ activemq-core/src/main/java/org/apache/activemq/transport/fanout/FanoutTransport.java	(working copy)
@@ -338,24 +338,14 @@
         try {
             synchronized (reconnectMutex) {
 
-                // If it was a request and it was not being tracked by
-                // the state tracker,
-                // then hold it in the requestMap so that we can replay
-                // it later.
-                boolean fanout = isFanoutCommand(command);
-                if (stateTracker.track(command) == null && command.isResponseRequired()) {
-                    int size = fanout ? minAckCount : 1;
-                    requestMap.put(new Integer(command.getCommandId()), new RequestCounter(command, size));
-                }
-
                 // Wait for transport to be connected.
-                while (connectedCount != minAckCount && !disposed && connectionFailure == null) {
+                while (connectedCount < minAckCount && !disposed && connectionFailure == null) {
                     LOG.debug("Waiting for at least " + minAckCount + " transports to be connected.");
                     reconnectMutex.wait(1000);
                 }
 
                 // Still not fully connected.
-                if (connectedCount != minAckCount) {
+                if (connectedCount < minAckCount) {
 
                     Exception error;
 
@@ -374,6 +364,16 @@
                     throw IOExceptionSupport.create(error);
                 }
 
+                // If it was a request and it was not being tracked by
+                // the state tracker,
+                // then hold it in the requestMap so that we can replay
+                // it later.
+                boolean fanout = isFanoutCommand(command);
+                if (stateTracker.track(command) == null && command.isResponseRequired()) {
+                    int size = fanout ? connectedCount : 1;
+                    requestMap.put(new Integer(command.getCommandId()), new RequestCounter(command, size));
+                }
+
                 // Send the message.
                 if (fanout) {
                     for (Iterator<FanoutTransportHandler> iter = transports.iterator(); iter.hasNext();) {
