diff mgw/pstn2gsm.c @ 96:f24bbfd23c9d

mgw p2g: outgoing seq numbers, forwarding control
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 25 Sep 2022 19:32:27 -0800
parents f280328e7e2e
children 9aed16c30622
line wrap: on
line diff
--- a/mgw/pstn2gsm.c	Sun Sep 25 19:17:44 2022 -0800
+++ b/mgw/pstn2gsm.c	Sun Sep 25 19:32:27 2022 -0800
@@ -106,14 +106,17 @@
 		m_out = 1;
 	ep->p2g_state = 1;
 	ep->p2g_ssrc = pkt.ssrc;
-	ep->p2g_last_ts = htonl(pkt.tstamp);
-	ep->p2g_last_seq = htons(pkt.seq);
+	ep->p2g_last_ts = ntohl(pkt.tstamp);
+	ep->p2g_last_seq = ntohs(pkt.seq);
 	/* actual transcoding and forwarding */
+	if (!(ep->fwd_mode & TMGW_FWD_ENABLE_PSTN2GSM))
+		return;
 	for (n = 0; n < SAMPLES_PER_FRAME; n++)
 		pcm_samples[n] = pcm_dec_table[pkt.payload[n]];
 	pkt.m_pt = ep->gsm_payload_type;
 	if (m_out)
 		pkt.m_pt |= 0x80;
+	pkt.seq = htons(++ep->p2g_out_seq);
 	switch (ep->gsm_payload_msg_type) {
 	case GSM_TCHF_FRAME:
 		gsm_encode(ep->gsm_encoder_state, pcm_samples, pkt.payload);