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 5776c00d9eba6028d07e951c8eeeb3eaa608d345..7a1e9a9ac6e918f982fb00531e33a0685cc8e179 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
@@ -86,15 +86,15 @@ public class RtpStreamReceiver {
         	try {        		      
         		rtpSocket.receive(rtpPacket);
         		packetReceivedCounter++;  
-        		if (rtpPacket.getSeqNum() > lastSequenceNumber) {
-        			lastSequenceNumber = rtpPacket.getSeqNum();
-//        			System.out.println("      RX RTP ts=" + rtpPacket.getTimestamp() + " length=" + rtpPacket.getPayload().length);
-        			AudioByteData audioData = new AudioByteData(rtpPacket.getPayload());
-            		if (listener != null) listener.onAudioDataReceived(audioData);
-            		else log.debug("No listener for incoming audio packet");
+        		if (shouldHandlePacket(rtpPacket)) {        			
+        				processRtpPacket(rtpPacket);
         		} else {
-//        			System.out.println("SequenceNumber < lastSequence (" + rtpPacket.getSeqNum() + " < " + lastSequenceNumber + ")");
-        		}
+        			if (isFirstPacket()) {
+        				processRtpPacket(rtpPacket);
+        			} else {
+           				log.info("Corrupt packet seqNum[rtpSeqNum=" + rtpPacket.getSeqNum() + ",lastSeqNum=" + lastSequenceNumber +"][rtpTS=" + rtpPacket.getTimestamp() + ",lastTS=" + lastPacketTimestamp + "]");       				
+        			}
+         		}
         	} catch (IOException e) {
         		// We get this when the socket closes when the call hangs up.
         		receivePackets = false;
@@ -104,4 +104,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)) {
+		**/
+    	/*
+    	 * Assume if the sequence number jumps by more that 100, that the sequence number is corrupt.
+    	 */
+    	return rtpPacket.getSeqNum() > lastSequenceNumber && rtpPacket.getSeqNum() - lastSequenceNumber < 100;
+    	
+    	//rtpPacket.getTimestamp() > lastPacketTimestamp && rtpPacket.getTimestamp() - lastPacketTimestamp < 1000;
+    }
+
+    private void processRtpPacket(RtpPacket rtpPacket) {
+		lastSequenceNumber = rtpPacket.getSeqNum();
+		lastPacketTimestamp = rtpPacket.getTimestamp();
+//		log.info("Process packet seqNum[rtpSeqNum=" + rtpPacket.getSeqNum() + ",lastSeqNum=" + lastSequenceNumber +"][rtpTS=" + rtpPacket.getTimestamp() + ",lastTS=" + lastPacketTimestamp + "]");       				
+//        			System.out.println("      RX RTP ts=" + rtpPacket.getTimestamp() + " length=" + rtpPacket.getPayload().length);
+		AudioByteData audioData = new AudioByteData(rtpPacket.getPayload());
+		if (listener != null) listener.onAudioDataReceived(audioData);
+		else log.debug("No listener for incoming audio packet");    	
+    }
 }
diff --git a/bbb-voice/src/main/java/org/bigbluebutton/voiceconf/red5/media/SipToFlashAudioStream.java b/bbb-voice/src/main/java/org/bigbluebutton/voiceconf/red5/media/SipToFlashAudioStream.java
index cc6b0dd4af6753e5d44c7c74ad6aa8f28ee67838..25d618f4b80fb51fcb390ce9cb957cd1b1b0256d 100755
--- a/bbb-voice/src/main/java/org/bigbluebutton/voiceconf/red5/media/SipToFlashAudioStream.java
+++ b/bbb-voice/src/main/java/org/bigbluebutton/voiceconf/red5/media/SipToFlashAudioStream.java
@@ -165,7 +165,7 @@ public class SipToFlashAudioStream implements TranscodedAudioDataListener, RtpSt
 			mBuffer.setAutoExpand(true);
 
 			mBuffer.clear();	        
-		    mBuffer.put(fakeMetadata);        
+		    mBuffer.put(fakeMetadata);         
 		    mBuffer.flip();
 
 	        Notify notifyData = new Notify(mBuffer);