diff --git a/sflphone-common/src/audio/audiortp/AudioRtpSession.h b/sflphone-common/src/audio/audiortp/AudioRtpSession.h
index 48a44b1d1a60241151b50a16c5bed3ae90bc2231..ca371658a79d3fb395b874840af64ffe0b7f086e 100644
--- a/sflphone-common/src/audio/audiortp/AudioRtpSession.h
+++ b/sflphone-common/src/audio/audiortp/AudioRtpSession.h
@@ -680,39 +680,57 @@ namespace sfl {
 
 	jb_frame frame;
 
+	_jbuffer->info.conf.resync_threshold = 0;
+
 	if (adu) {
-        
+
+	  if(_jbuffer->frames) {
+	    // _debug("_jbuffer->frames->prev->ts %d, _jbuffer->frames->ts %d", _jbuffer->frames->prev->ts, _jbuffer->frames->ts);
+	    // _debug("_jbuffer->info.conf.max_jitterbuf %d", _jbuffer->info.conf.max_jitterbuf);
+	  }
+
+	  // _debug("PUT_DATA: _ts %d, _currentTime %d", _ts, _currentTime);
 	  spkrDataIn  = (unsigned char*) adu->getData(); // data in char
 	  size = adu->getSize(); // size in char
 	  result = jb_put(_jbuffer, spkrDataIn, JB_TYPE_VOICE, _packetLength, _ts+=20, _currentTime);
-	  // result = jb_get(_jbuffer, &frame, _currentTime+=20, _packetLength);
+	  /*
+	  switch(result) {
+	  case JB_OK: printf("JB_OK\n"); break;
+	  case JB_EMPTY: printf("JB_EMPTY\n"); break;
+	  case JB_NOFRAME: printf("JB_NOFRAME\n"); break;
+	  case JB_INTERP: printf("JB_INTERP\n"); break;
+	  case JB_DROP: printf("JB_DROP\n"); break;
+	  case JB_SCHED: printf("JB_SCHED\n"); break;
+	  default: printf("Unknown returned value\n"); break;
+	  }
+	  */
 	}
 	else {
 	    _debug("No RTP packet available !!!!!!!!!!!!!!!!!!!!!!!\n");
 	}
 
+	// _debug("GET_DATA: _currentTime %d", _currentTime);
 	result = jb_get(_jbuffer, &frame, _currentTime+=20, _packetLength);
-
 	/*
 	switch(result) {
-	case 0: printf("You\'ve got frame!\n"); break;
-	case 1: printf("Here\'s an audio frame you should just drop.  Ask me again for this time..\n"); break;
-	case 2: printf("There\'s no frame scheduled for this time.\n"); break;
-	case 3: printf("Please interpolate an interpl-length frame for this time (either we need to grow, or there was a lost frame)\n"); break;
-	case 4: printf("Empty\n"); break;
+	case JB_OK: printf("JB_OK\n"); break;
+	case JB_EMPTY: printf("JB_EMPTY\n"); break;
+	case JB_NOFRAME: printf("JB_NOFRAME\n"); break;
+	case JB_INTERP: printf("JB_INTERP\n"); break;
+	case JB_DROP: printf("JB_DROP\n"); break;
+	case JB_SCHED: printf("JB_SCHED\n"); break;
 	default: printf("Unknown returned value\n"); break;
 	}
 	*/
 
+	// _debug("packetMisorder %d", static_cast<D*>(this)->getMaxPacketMisorder());
+
         // DTMF over RTP, size must be over 4 in order to process it as voice data
         if(size > 4) {
 	    // processDataDecode(spkrDataIn, size);
 	    if(result == 0) {
 	      processDataDecode((unsigned char *)(frame.data), 160);
 	    }
-	    else {
-	      _debug("bad data");
-	    }
         }
         else {
 	    // _debug("RTP: Received an RTP event with payload: %d", adu->getType());
diff --git a/sflphone-common/src/audio/jitterbuf.cpp b/sflphone-common/src/audio/jitterbuf.cpp
index 06a418090f874e92005c8d722932b980a8e3b40c..c72a6387f9769ae91feefd23e332030a74a0d328 100755
--- a/sflphone-common/src/audio/jitterbuf.cpp
+++ b/sflphone-common/src/audio/jitterbuf.cpp
@@ -28,10 +28,13 @@
  */
 
 #include "jitterbuf.h"
+
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
 
+#include "global.h"
+
 /*! define these here, just for ancient compiler systems */
 #define JB_LONGMAX 2147483647L
 #define JB_LONGMIN (-JB_LONGMAX - 1L)
@@ -258,14 +261,14 @@ static void history_calc_maxbuf(jitterbuf *jb)
 
 		if (0) { 
 			int k;
-			fprintf(stderr, "toins = %ld\n", toins);
-			fprintf(stderr, "maxbuf =");
+			_debug("toins = %ld\n", toins);
+			_debug("maxbuf =");
 			for (k=0;k<JB_HISTORY_MAXBUF_SZ;k++) 
-				fprintf(stderr, "%ld ", jb->hist_maxbuf[k]);
-			fprintf(stderr, "\nminbuf =");
+				_debug("%ld ", jb->hist_maxbuf[k]);
+			_debug("\nminbuf =");
 			for (k=0;k<JB_HISTORY_MAXBUF_SZ;k++) 
-				fprintf(stderr, "%ld ", jb->hist_minbuf[k]);
-			fprintf(stderr, "\n");
+				_debug("%ld ", jb->hist_minbuf[k]);
+			_debug("\n");
 		}
 	}
 
@@ -397,7 +400,7 @@ static jb_frame *_queue_get(jitterbuf *jb, long ts, int all)
 	if (!frame)
 		return NULL;
 
-	printf("queue_get: ASK %ld FIRST %ld\n", ts, frame->ts);
+	_debug("queue_get: ASK %ld FIRST %ld\n", ts, frame->ts);
 
 	if (all || ts >= frame->ts) {
 		/* remove this frame */
@@ -438,17 +441,17 @@ static jb_frame *queue_getall(jitterbuf *jb)
 void jb_dbginfo(jitterbuf *jb) 
 {
 
-	printf("\njb info: fin=%ld fout=%ld flate=%ld flost=%ld fdrop=%ld fcur=%ld\n",
+	_debug("\njb info: fin=%ld fout=%ld flate=%ld flost=%ld fdrop=%ld fcur=%ld\n",
 		jb->info.frames_in, jb->info.frames_out, jb->info.frames_late, jb->info.frames_lost, jb->info.frames_dropped, jb->info.frames_cur);
 	
-	printf("jitter=%ld current=%ld target=%ld min=%ld sil=%ld len=%ld len/fcur=%ld\n",
+	_debug("jitter=%ld current=%ld target=%ld min=%ld sil=%ld len=%ld len/fcur=%ld\n",
 		jb->info.jitter, jb->info.current, jb->info.target, jb->info.min, jb->info.silence_begin_ts, jb->info.current - jb->info.min, 
 		jb->info.frames_cur ? (jb->info.current - jb->info.min)/jb->info.frames_cur : -8);
 	if (jb->info.frames_in > 0) 
-		printf("jb info: Loss PCT = %ld%%, Late PCT = %ld%%\n",
+		_debug("jb info: Loss PCT = %ld%%, Late PCT = %ld%%\n",
 			jb->info.frames_lost * 100/(jb->info.frames_in + jb->info.frames_lost), 
 			jb->info.frames_late * 100/jb->info.frames_in);
-	printf("jb info: queue %ld -> %ld.  last_ts %ld (queue len: %ld) last_ms %ld\n\n",
+        _debug("jb info: queue %ld -> %ld.  last_ts %ld (queue len: %ld) last_ms %ld\n\n",
 		queue_next(jb), 
 		queue_last(jb),
 		jb->info.next_voice_ts, 
@@ -497,21 +500,21 @@ static void jb_dbgqueue(jitterbuf *jb)
 }
 #endif
 
-enum jb_return_code jb_put(jitterbuf *jb, void *data, const enum jb_frame_type type, long ms, long ts, long now) 
+jb_return_code jb_put(jitterbuf *jb, void *data, const enum jb_frame_type type, long ms, long ts, long now) 
 {
 	long numts;
 
-	printf("jb_put(%p,%p,%ld,%ld,%ld)\n", jb, data, ms, ts, now);
+	_debug("jb_put(%p,%p,%ld,%ld,%ld)\n", jb, data, ms, ts, now);
 
 	numts = 0;
 	if (jb->frames)
 		numts = jb->frames->prev->ts - jb->frames->ts;
 
-	printf("numts %ld\n", numts);
+	_debug("numts %ld\n", numts);
 
 	if (numts >= jb->info.conf.max_jitterbuf) {
 		if (!jb->dropem) {
-			printf("Attempting to exceed Jitterbuf max %ld timeslots\n",
+			_debug("Attempting to exceed Jitterbuf max %ld timeslots\n",
 				jb->info.conf.max_jitterbuf);
 			jb->dropem = 1;
 		}
@@ -546,7 +549,7 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 	long diff;
 	static int dbg_cnt = 0;
 
-	printf("_jb_get\n");
+	_debug("_jb_get\n");
 
 	/*if ((now - jb_next(jb)) > 2 * jb->info.last_voice_ms) jb_warn("SCHED: %ld", (now - jb_next(jb))); */
 	/* get jitter info */
@@ -562,13 +565,13 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 
 	/* if a hard clamp was requested, use it */
 	if ((jb->info.conf.max_jitterbuf) && ((jb->info.target - jb->info.min) > jb->info.conf.max_jitterbuf)) {
-		printf("clamping target from %ld to %ld\n", (jb->info.target - jb->info.min), jb->info.conf.max_jitterbuf);
+		_debug("clamping target from %ld to %ld\n", (jb->info.target - jb->info.min), jb->info.conf.max_jitterbuf);
 		jb->info.target = jb->info.min + jb->info.conf.max_jitterbuf;
 	}
 
 	diff = jb->info.target - jb->info.current;
 
-	printf("diff = %ld lms=%ld last = %ld now = %ld, djust delay = %ld\n", diff,
+	_debug("diff = %ld lms=%ld last = %ld now = %ld, djust delay = %ld\n", diff,
 		jb->info.last_voice_ms, jb->info.last_adjustment, now);
 
 	/* let's work on non-silent case first */
@@ -584,11 +587,11 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 		if((diff > queue_last(jb)  - queue_next(jb)))
 		    printf("diff > queue_last(jb)  - queue_next(jb)\n");
 	  */
-	  printf("** Non-silent case update timing info **\n");
-	  printf("diff %ld\n", diff);
-	  printf("jb->info.last_adjustment %ld\n", jb->info.last_adjustment);
-	  printf("JB_ADJUST_DELAY %ld\n", JB_ADJUST_DELAY);
-	  printf("now %ld\n", now);
+	  _debug("** Non-silent case update timing info **\n");
+	  _debug("diff %ld\n", diff);
+	  _debug("jb->info.last_adjustment %ld\n", jb->info.last_adjustment);
+	  _debug("JB_ADJUST_DELAY %ld\n", JB_ADJUST_DELAY);
+	  _debug("now %ld\n", now);
 
 		/* we want to grow */
 		if ((diff > 0) && 
@@ -610,16 +613,16 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 				jb->info.silence_begin_ts = jb->info.next_voice_ts - jb->info.current;
 			}
 
-			printf("Non silent case\n");
+			_debug("Non silent case\n");
 			return JB_INTERP;
 		}
 
-		printf("queue get\n");
+	        _debug("queue get\n");
 
 		frame = queue_get(jb, jb->info.next_voice_ts - jb->info.current);
 
 		if(!frame)
-		  printf("frame not valid\n");
+		  _debug("frame not valid\n");
 
 		/* not a voice frame; just return it. */
 		if (frame && frame->type != JB_TYPE_VOICE) {
@@ -630,7 +633,7 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 
 			*frameout = *frame;
 			jb->info.frames_out++;
-			printf("Not a voice packet\n");
+			_debug("Not a voice packet\n");
 			return JB_OK;
 		}
 
@@ -646,7 +649,7 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 				jb->info.frames_out++;
 				decrement_losspct(jb);
 				jb->info.cnt_contig_interp = 0;
-				printf("Either we interpolated past this frame in the last jb_get" \
+				_debug("Either we interpolated past this frame in the last jb_get" \
 				       "or the frame is still in order, but came a little too quick\n");
 				return JB_OK;
 			} else {
@@ -656,8 +659,8 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 				decrement_losspct(jb);
 				jb->info.frames_late++;
 				jb->info.frames_lost--;
-				printf("Voice frame is late\n");
-				printf("late: wanted=%ld, this=%ld, next=%ld\n", jb->info.next_voice_ts - jb->info.current, frame->ts, queue_next(jb));
+				_debug("Voice frame is late\n");
+				_debug("late: wanted=%ld, this=%ld, next=%ld\n", jb->info.next_voice_ts - jb->info.current, frame->ts, queue_next(jb));
 				return JB_DROP;
 			}
 		}
@@ -685,7 +688,7 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 				jb->info.frames_out++;
 				decrement_losspct(jb);
 				jb->info.frames_dropped++;
-				printf("Shrink by frame size we're throwing out");
+				_debug("Shrink by frame size we're throwing out");
 				return JB_DROP;
 			} else {
 				/* shrink by last_voice_ms */
@@ -693,7 +696,7 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 				jb->info.frames_lost++;
 				increment_losspct(jb);
 				jb_dbg("S");
-				printf("No frames, shrink by last_voice_ms");
+				_debug("No frames, shrink by last_voice_ms");
 				return JB_NOFRAME;
 			}
 		}
@@ -743,7 +746,7 @@ static enum jb_return_code _jb_get(jitterbuf *jb, jb_frame *frameout, long now,
 		return JB_OK;
 	} else {     
 
-	        printf("Silence???\n");
+	        _debug("Silence???\n");
 		/* TODO: after we get the non-silent case down, we'll make the
 		 * silent case -- basically, we'll just grow and shrink faster
 		 * here, plus handle next_voice_ts a bit differently */
@@ -814,6 +817,8 @@ long jb_next(jitterbuf *jb)
 
 enum jb_return_code jb_get(jitterbuf *jb, jb_frame *frameout, long now, long interpl) 
 {
+        _debug("\n***** JB_GET *****\n\n");
+
 	enum jb_return_code ret = _jb_get(jb, frameout, now, interpl);
 #if 0
 	static int lastts=0;