Added synchronized when iterating over SynchronizedList as per Java specifications
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
index a9d36b5..cbb6ffe 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
@@ -858,14 +858,17 @@
                 }
             }
             // Cascade the connection stop to temp destinations.
-            for (Iterator<DestinationInfo> iter = cs.getTempDestinations().iterator(); iter.hasNext(); ) {
-                DestinationInfo di = iter.next();
-                try {
-                    broker.removeDestination(cs.getContext(), di.getDestination(), 0);
-                } catch (Throwable e) {
-                    SERVICELOG.warn("Failed to remove tmp destination {}", di.getDestination(), e);
+            List<DestinationInfo> tempDestinations = cs.getTempDestinations();
+            synchronized (tempDestinations) {
+                for (Iterator<DestinationInfo> iter = tempDestinations.iterator(); iter.hasNext(); ) {
+                    DestinationInfo di = iter.next();
+                    try {
+                        broker.removeDestination(cs.getContext(), di.getDestination(), 0);
+                    } catch (Throwable e) {
+                        SERVICELOG.warn("Failed to remove tmp destination {}", di.getDestination(), e);
+                    }
+                    iter.remove();
                 }
-                iter.remove();
             }
             try {
                 broker.removeConnection(cs.getContext(), cs.getInfo(), transportException.get());