mgcp: Only patch the header if we had a change in SSRC
diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h
index f6f8d6e..2d9629a 100644
--- a/openbsc/include/openbsc/mgcp_internal.h
+++ b/openbsc/include/openbsc/mgcp_internal.h
@@ -38,6 +38,7 @@
 
 struct mgcp_rtp_state {
 	int initialized;
+	int patch;
 
 	uint32_t orig_ssrc;
 	uint32_t ssrc;
diff --git a/openbsc/src/mgcp/mgcp_network.c b/openbsc/src/mgcp/mgcp_network.c
index b5e2cdd..2abc6b5 100644
--- a/openbsc/src/mgcp/mgcp_network.c
+++ b/openbsc/src/mgcp/mgcp_network.c
@@ -116,17 +116,20 @@
 		state->ssrc = rtp_hdr->ssrc;
 		state->seq_offset = (state->seq_no + 1) - seq;
 		state->timestamp_offset = state->last_timestamp - timestamp;
+		state->patch = 1;
 		LOGP(DMGCP, LOGL_NOTICE, "The SSRC changed... SSRC: %u offset: %d\n",
 			state->ssrc, state->seq_offset);
 	}
 
 	/* apply the offset and store it back to the packet */
-	seq += state->seq_offset;
-	rtp_hdr->sequence = htons(seq);
-	rtp_hdr->ssrc = state->orig_ssrc;
+	if (state->patch) {
+		seq += state->seq_offset;
+		rtp_hdr->sequence = htons(seq);
+		rtp_hdr->ssrc = state->orig_ssrc;
 
-	timestamp += state->timestamp_offset;
-	rtp_hdr->timestamp = htonl(timestamp);
+		timestamp += state->timestamp_offset;
+		rtp_hdr->timestamp = htonl(timestamp);
+	}
 
 	/* seq changed, now compare if we have lost something */
 	if (state->seq_no + 1u != seq)