mirror of
				https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
				synced 2025-11-03 21:43:32 +00:00 
			
		
		
		
	mgw: do not fail MGCP on codec mismatch
Before this patch, when an CRCX+MDCX wants to set a codec list that has no match with the codecs for the other conn of that same endpoint, osmo-mgw returns an MGCP "FAIL" response. When a client wants to change the codec, it has to do that one RTP port at a time. So osmo-mgw *must* allow to configure an MGCP conn with a codec choice that mismatches the other conn. This is crucial to allow codec negotiation in osmo-msc: if MO has already assigned a specific codec, and later wants to re-assign to the codec that MT has chosen, the codec needs to be changed at osmo-mgw. This patch is the minimal fix required to get re-assignment to a different codec to work (via osmo-msc). There is more work to be done about this bit of code in osmo-mgw, but keep that to a separate patch. In detail, before this patch, we fail both - when a side has no codecs, - or when there is no single match between codecs of the two sides of the endpoint. Remove only the second condition; after this patch, still fail when a side has no codecs -- this allows mgcp_test.c to still pass. Related: OS#6293 Related: osmo-msc I8760feaa8598047369ef8c3ab2673013bac8ac8a Change-Id: I3d1163fe622bdd7dc42a485f796072524ab39db9
This commit is contained in:
		@@ -455,7 +455,17 @@ int mgcp_codec_decide(struct mgcp_conn_rtp *conn_src, struct mgcp_conn_rtp *conn
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (conn_dst->end.codecs_assigned)
 | 
			
		||||
		conn_dst->end.codec = &conn_dst->end.codecs[0];
 | 
			
		||||
	else
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	if (conn_src->end.codecs_assigned)
 | 
			
		||||
		conn_src->end.codec = &conn_src->end.codecs[0];
 | 
			
		||||
	else
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Check if the codec has a specific AMR mode (octet-aligned or bandwith-efficient) set. */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user