diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ClientMessage.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ClientMessage.java
index 627712d50bc42a5401291e3f0ee9bc1ffea969e5..94db9f56fabd58d684cc2b6efb921ba8b98fc35e 100755
--- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ClientMessage.java
+++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ClientMessage.java
@@ -21,4 +21,5 @@ package org.bigbluebutton.red5.client.messaging;
 
 public interface ClientMessage {
 
+    String getMessageName();
 }
diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ConnectionInvokerService.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ConnectionInvokerService.java
index 2d23b2118c7bbf49c41e6262b7571179ec8610e0..89471e30cce9ac8602615f44d7fd6c429406cddd 100755
--- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ConnectionInvokerService.java
+++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ConnectionInvokerService.java
@@ -21,7 +21,6 @@ package org.bigbluebutton.red5.client.messaging;
 import java.util.Set;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.HashSet;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
@@ -44,6 +43,8 @@ import org.red5.server.util.ScopeUtils;
 import org.slf4j.Logger;
 
 import com.google.gson.Gson;
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
 
 public class ConnectionInvokerService {
   private static Logger log = Red5LoggerFactory.getLogger(ConnectionInvokerService.class, "bigbluebutton");
@@ -75,15 +76,21 @@ public class ConnectionInvokerService {
           ClientMessage message;
           try {
             message = messages.take();
-            sendMessageToClient(message);	
-          } catch (InterruptedException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
+            if (log.isTraceEnabled()) {
+              log.trace("Took message from queue: " + message.getMessageName());
+            }
+            sendMessageToClient(message);
+            if (log.isTraceEnabled()) {
+              log.trace("Sent message to client: " + message.getMessageName());
+            }
+          } catch (Exception e) {
+            Marker sendingException = MarkerFactory.getMarker("SENDING_EXCEPTION");
+            log.error(sendingException, "Exception while sending message to client.", e);
           }
         }
       }
     };
-    exec.execute(sender);		
+    exec.execute(sender);
   }
 
   public void stop() {
@@ -92,6 +99,9 @@ public class ConnectionInvokerService {
   }
 
   public void sendMessage(final ClientMessage message) {
+    if (log.isTraceEnabled()) {
+      log.trace("Queue message: " + message.getMessageName());
+    }
     messages.offer(message);
   }
 
@@ -124,7 +134,7 @@ public class ConnectionInvokerService {
           conn.close();
         }
       }	
-    }		
+    }
   }
 
   private void handleDisconnectAllClientsMessage(DisconnectAllClientsMessage msg) {
@@ -152,9 +162,9 @@ public class ConnectionInvokerService {
           log.info("Disconnecting user=[{}] from meeting=[{}]", msg.getUserId(), msg.getMeetingId());
           conn.close();
         }
-      }				
-    }		
-  }	
+      }
+    }
+  }
 
   private void sendSharedObjectMessage(SharedObjectClientMessage msg) {
     IScope meetingScope = getScope(msg.getMeetingID());
@@ -167,7 +177,8 @@ public class ConnectionInvokerService {
       } 
     } 
   }
-   
+
+
   private void sendDirectMessage(final DirectClientMessage msg) {
     if (log.isTraceEnabled()) {
       Gson gson = new Gson();
@@ -200,9 +211,9 @@ public class ConnectionInvokerService {
             log.info("Cannot send message=[" + msg.getMessageName() + "] to [" + userId
                 + "] as no such session on meeting=[" + msg.getMeetingID() + "]");
           }
-        }	
+        }
       }
-    };		
+    };
 
     /**
      * We need to add a way to cancel sending when the thread is blocked.
@@ -218,6 +229,7 @@ public class ConnectionInvokerService {
       f.get(timeLeft, TimeUnit.NANOSECONDS);   
     } catch (ExecutionException e) {       
       log.warn("ExecutionException while sending direct message on connection[" + userId + "]");
+      log.warn("ExcecutionException cause: " + e.getMessage());
     } catch (InterruptedException e) {        
       log.warn("Interrupted exception while sending direct message on connection[" + userId + "]");
       Thread.currentThread().interrupt();         
@@ -226,7 +238,7 @@ public class ConnectionInvokerService {
       f.cancel(true);     
     } 
   }
-  
+
   private void sendBroadcastMessage(final BroadcastClientMessage msg) {
     if (log.isTraceEnabled()) {
       Gson gson = new Gson();
@@ -241,11 +253,13 @@ public class ConnectionInvokerService {
           List<Object> params = new ArrayList<Object>();
           params.add(msg.getMessageName());
           params.add(msg.getMessage());
+
           if (log.isTraceEnabled()) {
             Gson gson = new Gson();
             String json = gson.toJson(msg.getMessage());
             log.trace("Broadcast message: " + msg.getMessageName() + " msg=" + json);
           }
+
           ServiceUtils.invokeOnAllScopeConnections(meetingScope, "onMessageFromServer", params.toArray(), null);
         }
       }
@@ -266,10 +280,10 @@ public class ConnectionInvokerService {
     } catch (ExecutionException e) {       
     	log.warn("ExecutionException while sending broadcast message[" + msg.getMessageName() + "]");
     } catch (InterruptedException e) {        
-    	log.warn("Interrupted exception while sending direct message[" + msg.getMessageName() + "]");
+    	log.warn("Interrupted exception while sending broadcast message[" + msg.getMessageName() + "]");
     	Thread.currentThread().interrupt();         
     } catch (TimeoutException e) {               
-    	log.warn("Timeout exception while sending direct message[" + msg.getMessageName() + "]");
+    	log.warn("Timeout exception while sending broadcast message[" + msg.getMessageName() + "]");
     	f.cancel(true);     
     } 
   }
diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectAllClientsMessage.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectAllClientsMessage.java
index ddedc077c5d646546fd8f7d11fea278e352a2a55..d3f833842953ba4034a946fe3acbfac25e7d8038 100755
--- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectAllClientsMessage.java
+++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectAllClientsMessage.java
@@ -11,4 +11,8 @@ public class DisconnectAllClientsMessage implements ClientMessage {
 	public String getMeetingId() {
 		return meetingId;
 	}
+
+	public String getMessageName() {
+		return "DisconnectAllClientsMessage";
+	}
 }
diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectAllMessage.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectAllMessage.java
index 080d0ee6e2a8abf3fa7e7979c10777c55c5ad52e..38fcbddc3a703439cf12608c4554f4ebd7eec913 100755
--- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectAllMessage.java
+++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectAllMessage.java
@@ -2,4 +2,7 @@ package org.bigbluebutton.red5.client.messaging;
 
 public class DisconnectAllMessage implements ClientMessage {
 
+    public String getMessageName() {
+        return "DisconnectAllMessage";
+    }
 }
diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectClientMessage.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectClientMessage.java
index f0a9ba73ff34d8a8fe122fb97f2d6ca90c885264..fe8ce941263444f2fcdc5413b3d4c73b0eff5723 100755
--- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectClientMessage.java
+++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/DisconnectClientMessage.java
@@ -17,4 +17,8 @@ public class DisconnectClientMessage implements ClientMessage {
 	public String getUserId() {
 		return userId;
 	}
+
+	public String getMessageName() {
+		return "DisconnectClientMessage";
+	}
 }