diff --git a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
index 7ccf8171d6eca0c7d05c4b81a77119279276b431..a983cbfb03449cba3183c09f256df084f8448fe3 100755
--- a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
@@ -214,7 +214,8 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 
         IStreamListener listener = streamListeners.remove(scopeName + "-" + stream.getPublishedName());
         if (listener != null) {
-          stream.removeStreamListener(listener);
+        	((VideoStreamListener) listener).streamStopped();
+        	stream.removeStreamListener(listener);
         }
         
       if (recordVideoStream) {        
diff --git a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoStreamListener.java b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoStreamListener.java
index 0e28e5d685a14a42194b68aa6b2dcf4e2f64f037..eefd27a4837c800742da319072b1116790c8aeb4 100755
--- a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoStreamListener.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoStreamListener.java
@@ -75,6 +75,8 @@ public class VideoStreamListener implements IStreamListener {
     // Event queue worker job name
     private String timeoutJobName;
  
+    private volatile boolean publishing = false;
+    
     private IScope scope;
     
     public VideoStreamListener(IScope scope, IBroadcastStream stream, Boolean record) {
@@ -107,6 +109,7 @@ public class VideoStreamListener implements IStreamListener {
 	          
 	    	  if (! firstPacketReceived) {
 	    		  firstPacketReceived = true;
+	    		  publishing = true;
 	    		  
 		          // start the worker to monitor if we are still receiving video packets
 		          timeoutJobName = scheduler.addScheduledJob(videoTimeout, new TimeoutJob());
@@ -129,6 +132,10 @@ public class VideoStreamListener implements IStreamListener {
 		recordingService = s;
 	}
 	
+	public void streamStopped() {
+		this.publishing = false;
+	}
+	
     private class TimeoutJob implements IScheduledJob {
     	private boolean streamStopped = false;
     	
@@ -141,9 +148,11 @@ public class VideoStreamListener implements IStreamListener {
                     // remove the scheduled job
                     scheduler.removeScheduledJob(timeoutJobName);
                     // stop / clean up
-                    stream.stop();                	
+                    if (publishing) {
+                    	stream.stop(); 	
+                    }
+                                   	
                 }
-
             }
         }