diff --git a/bbb-voice/src/main/java/org/bigbluebutton/voiceconf/red5/media/RtpStreamReceiver.java b/bbb-voice/src/main/java/org/bigbluebutton/voiceconf/red5/media/RtpStreamReceiver.java
index addc8e57373112ec0941c4fe7227b1aaa8bf88ba..d153897d206f1a80c12faf14f04ca0ed17e556e5 100755
--- a/bbb-voice/src/main/java/org/bigbluebutton/voiceconf/red5/media/RtpStreamReceiver.java
+++ b/bbb-voice/src/main/java/org/bigbluebutton/voiceconf/red5/media/RtpStreamReceiver.java
@@ -109,23 +109,32 @@ public class RtpStreamReceiver {
         log.debug("Packet Received = " + packetReceivedCounter + "." );
         if (listener != null) listener.onStoppedReceiving();
     }
-    
-    private boolean isFirstPacket() {
-    	return lastSequenceNumber == 0 && lastPacketTimestamp == 0;
-    }
-    
+        
     private boolean shouldHandlePacket(RtpPacket rtpPacket) {
 		/** Take seq number only into account and not timestamps. Seems like the timestamp sometimes change whenever the audio changes source.
 		 *  For example, in FreeSWITCH, the audio prompt will have it's own "start" timestamp and then
 		 *  another "start" timestamp will be generated for the voice. (ralam, sept 7, 2010).
 		 *	&& packetIsNotCorrupt(rtpPacket)) {
 		**/
+    	 return validSeqNum(rtpPacket) || seqNumRollOver(rtpPacket);
+    			
+    }
+    
+    private boolean validSeqNum(RtpPacket rtpPacket) {
     	/*
     	 * Assume if the sequence number jumps by more that 100, that the sequence number is corrupt.
     	 */
-    	return rtpPacket.getSeqNum() > lastSequenceNumber && rtpPacket.getSeqNum() - lastSequenceNumber < 100;
+    	return (rtpPacket.getSeqNum() > lastSequenceNumber && rtpPacket.getSeqNum() - lastSequenceNumber < 100);
+    }
+    
+    private boolean seqNumRollOver(RtpPacket rtpPacket) {
+    	boolean rolledOver = lastSequenceNumber - rtpPacket.getSeqNum() > 65000;
     	
-    	//rtpPacket.getTimestamp() > lastPacketTimestamp && rtpPacket.getTimestamp() - lastPacketTimestamp < 1000;
+    	if (rolledOver) {
+				log.debug("Packet rolling over seqNum[rtpSeqNum=" + rtpPacket.getSeqNum() + ",lastSeqNum=" + lastSequenceNumber 
+   						+ "][rtpTS=" + rtpPacket.getTimestamp() + ",lastTS=" + lastPacketTimestamp + "][port=" + rtpSocket.getDatagramSocket().getLocalPort() + "]");      		
+    	}
+    	return rolledOver;
     }
 
     private void processRtpPacket(RtpPacket rtpPacket) {