diff --git a/channels/h323/ast_h323.cpp b/channels/h323/ast_h323.cpp
index ba7de93f7551cb23d1f1ca75e4ae60760d0ebbc2..cb78730af752c0d32b5202926cb6b63862dd7ba8 100755
--- a/channels/h323/ast_h323.cpp
+++ b/channels/h323/ast_h323.cpp
@@ -853,6 +853,7 @@ void h323_callback_register(setup_incoming_cb  	ifunc,
 int h323_set_capability(int cap, int dtmfMode)
 {
 	H323Capabilities oldcaps;
+	PStringArray codecs;
 	int g711Frames = 30;
 	int gsmFrames  = 4;
 
@@ -863,7 +864,10 @@ int h323_set_capability(int cap, int dtmfMode)
 
 	/* clean up old capabilities list before changing */
 	oldcaps = endPoint->GetCapabilities();
-	oldcaps.RemoveAll();
+	for (PINDEX i=0; i< oldcaps.GetSize(); i++) {
+                 codecs.AppendString(oldcaps[i].GetFormatName());
+         }
+         endPoint->RemoveCapabilities(codecs);
 
 	mode = dtmfMode;
 	if (dtmfMode == H323_DTMF_INBAND) {