don't pass subchannel data to the TRAU decoder if we're not synchronized yet

diff --git a/include/openbsc/subchan_demux.h b/include/openbsc/subchan_demux.h
index a5c5d8e..9661b04 100644
--- a/include/openbsc/subchan_demux.h
+++ b/include/openbsc/subchan_demux.h
@@ -35,7 +35,10 @@
 struct demux_subch {
 	u_int8_t out_bitbuf[TRAU_FRAME_BITS];
 	u_int16_t out_idx; /* next bit to be written in out_bitbuf */
+	/* number of consecutive zeros that we have received (for sync) */
 	unsigned int consecutive_zeros;
+	/* are we in TRAU frame sync or not? */
+	unsigned int in_sync;
 };
 
 struct subch_demux {
diff --git a/src/subchan_demux.c b/src/subchan_demux.c
index 86ddc86..c6b9a67 100644
--- a/src/subchan_demux.c
+++ b/src/subchan_demux.c
@@ -62,6 +62,7 @@
 	/* set index in a way that we can continue receiving bits after
 	 * the end of the SYNC header */
 	sch->out_idx = SYNC_HDR_BITS;
+	sch->in_sync = 1;
 }
 
 int subch_demux_init(struct subch_demux *dmx)
@@ -126,8 +127,11 @@
 			/* once we have reached TRAU_FRAME_BITS, call
 			 * the TRAU frame handler callback function */
 			if (sch->out_idx >= TRAU_FRAME_BITS) {
-				dmx->out_cb(dmx, c, sch->out_bitbuf,
+				if (sch->in_sync) {
+					dmx->out_cb(dmx, c, sch->out_bitbuf,
 					    sch->out_idx, dmx->data);
+					sch->in_sync = 0;
+				}
 				sch->out_idx = 0;
 			}
 		}