Browse Source

sdpops: exported some of the config functions to kemi

Daniel-Constantin Mierla 9 năm trước cách đây
mục cha
commit
b9d20066af
2 tập tin đã thay đổi với 46 bổ sung3 xóa
  1. 2 2
      modules/sdpops/sdpops_data.c
  2. 44 1
      modules/sdpops/sdpops_mod.c

+ 2 - 2
modules/sdpops/sdpops_data.c

@@ -195,11 +195,11 @@ notfound:
  */
 int sdpops_build_ids_list(sdp_info_t *sdp, str *names, str *ids)
 {
-#define SDPOPS_MAX_LIST_SIZE	64
+#define SDPOPS_MAX_LIST_SIZE	128
 	static char _local_idslist[SDPOPS_MAX_LIST_SIZE];
 	str tmp;
 	str codec;
-#define SDPOPS_CIDS_SIZE	8
+#define SDPOPS_CIDS_SIZE	16
 	str cids[SDPOPS_CIDS_SIZE];
 	char *p;
 	int i;

+ 44 - 1
modules/sdpops/sdpops_mod.c

@@ -34,6 +34,7 @@
 #include "../../trim.h"
 #include "../../data_lump.h"
 #include "../../ut.h"
+#include "../../kemi.h"
 #include "../../parser/parse_content.h"
 
 #include "api.h"
@@ -621,7 +622,7 @@ int sdp_keep_codecs_by_id(sip_msg_t* msg, str* codecs, str *media)
 			LM_DBG("stream %d of %d - payloads [%.*s]\n",
 					sdp_stream_num, sdp_session_num,
 					sdp_stream->payloads.len, sdp_stream->payloads.s);
-			if((media==NULL)
+			if((media==NULL) || (media->len==0)
 					|| (media->len==sdp_stream->media.len
 						&& strncasecmp(sdp_stream->media.s, media->s,
 							media->len)==0))
@@ -1798,3 +1799,45 @@ error:
 	LM_ERR("unknown PV sdp name %.*s\n", in->len, in->s);
 	return -1;
 }
+
+/**
+ *
+ */
+static sr_kemi_t sr_kemi_sdpops_exports[] = {
+	{ str_init("sdpops"), str_init("remove_codecs_by_name"),
+		SR_KEMIP_INT, sdp_remove_codecs_by_name,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("sdpops"), str_init("remove_codecs_by_id"),
+		SR_KEMIP_INT, sdp_remove_codecs_by_id,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("sdpops"), str_init("keep_codecs_by_name"),
+		SR_KEMIP_INT, sdp_keep_codecs_by_name,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("sdpops"), str_init("keep_codecs_by_id"),
+		SR_KEMIP_INT, sdp_keep_codecs_by_id,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("sdpops"), str_init("remove_media"),
+		SR_KEMIP_INT, sdp_remove_media,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+
+	{ {0, 0}, {0, 0}, 0, NULL, { 0, 0, 0, 0, 0, 0 } }
+};
+
+/**
+ *
+ */
+int mod_register(char *path, int *dlflags, void *p1, void *p2)
+{
+	sr_kemi_modules_add(sr_kemi_sdpops_exports);
+	return 0;
+}