summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlishu <[email protected]>2019-12-19 09:26:22 +0800
committerlishu <[email protected]>2019-12-19 09:26:22 +0800
commit5416b52b5401609973bbd408cabfdaf546c2997e (patch)
tree0b9ea5e762d4f77533b2f0a1969c17b115d1a1ae /src
parent8c08bd289431669e1f243c60e5fe3b65b048cad5 (diff)
fix bug, refererdemonstration
Diffstat (limited to 'src')
-rw-r--r--src/frag_reassembly.c51
-rw-r--r--src/support/libsoqav_dedup.sobin0 -> 2039838 bytes
2 files changed, 30 insertions, 21 deletions
diff --git a/src/frag_reassembly.c b/src/frag_reassembly.c
index 08c0fd6..2a9217d 100644
--- a/src/frag_reassembly.c
+++ b/src/frag_reassembly.c
@@ -1314,6 +1314,7 @@ long get_media(void *data, const uint8_t *key, uint size, void *user_arg)
media_t* mdi = (media_t*)data;
media_info_t* media_info = (media_info_t*)user_arg;
int opt_num = 0;
+ int opt_index = 0;
if(NULL!=mdi)
{
media_info->td_query = mdi->td_query;
@@ -1411,35 +1412,43 @@ long get_media(void *data, const uint8_t *key, uint size, void *user_arg)
#if K_PROJECT
#else
if(mdi->proto!=AV_PROTOCOL_SIP)
- {
- /*�������ݷ�������ѡ��*/
- media_info->opt_unit = (struct opt_unit_t*)calloc(1, sizeof(struct opt_unit_t));
- media_info->opt_unit->opt_len = sizeof(uint32_t)+sizeof(uint8_t)+sizeof(unsigned int);
- media_info->opt_unit->opt_type = OPT_SOURCE_IP;
- media_info->opt_unit->opt_value = (char*)calloc(1, sizeof(unsigned int));
- *(unsigned int*)(media_info->opt_unit->opt_value) = g_frag_cfg.local_ip_nr;
+ {
opt_num++;
+ if(mdi->opt[MEDIA_OPT_URL][0]!=NULL && mdi->opt[MEDIA_OPT_URL][0]->opt_value!=NULL)
+ {
+ opt_num++;
+ }
+ if(mdi->opt[MEDIA_OPT_REFERER][0]!=NULL && mdi->opt[MEDIA_OPT_REFERER][0]->opt_value!=NULL)
+ {
+ opt_num++;
+ }
+ media_info->opt_unit = (struct opt_unit_t*)calloc(opt_num, sizeof(struct opt_unit_t));
+
+ /*�������ݷ�������ѡ��*/
+ media_info->opt_unit[opt_index].opt_len = sizeof(uint32_t)+sizeof(uint8_t)+sizeof(unsigned int);
+ media_info->opt_unit[opt_index].opt_type = OPT_SOURCE_IP;
+ media_info->opt_unit[opt_index].opt_value = (char*)calloc(1, sizeof(unsigned int));
+ *(unsigned int*)(media_info->opt_unit[opt_index].opt_value) = g_frag_cfg.local_ip_nr;
+ opt_index++;
/*URLѡ��*/
- if(mdi->opt[MEDIA_OPT_URL]->opt_value!=NULL)
+ if(mdi->opt[MEDIA_OPT_URL][0]!=NULL && mdi->opt[MEDIA_OPT_URL][0]->opt_value!=NULL)
{
- media_info->opt_unit = (struct opt_unit_t*)calloc(1, sizeof(struct opt_unit_t));
- media_info->opt_unit->opt_len = sizeof(uint32_t)+sizeof(uint8_t)+mdi->opt[MEDIA_OPT_URL]->opt_len;
- media_info->opt_unit->opt_type = OPT_SOURCE_URL;
- media_info->opt_unit->opt_value = (char*)calloc(1, mdi->opt[MEDIA_OPT_URL]->opt_len);
- memcpy(media_info->opt_unit->opt_value, mdi->opt[MEDIA_OPT_URL]->opt_value, mdi->opt[MEDIA_OPT_URL]->opt_len);
- opt_num++;
+ media_info->opt_unit[opt_index].opt_len = sizeof(uint32_t)+sizeof(uint8_t)+mdi->opt[MEDIA_OPT_URL][0]->opt_len;
+ media_info->opt_unit[opt_index].opt_type = OPT_SOURCE_URL;
+ media_info->opt_unit[opt_index].opt_value = (char*)calloc(1, mdi->opt[MEDIA_OPT_URL][0]->opt_len);
+ memcpy(media_info->opt_unit[opt_index].opt_value, mdi->opt[MEDIA_OPT_URL][0]->opt_value, mdi->opt[MEDIA_OPT_URL][0]->opt_len);
+ opt_index++;
}
/*refererѡ��*/
- if(mdi->opt[MEDIA_OPT_REFERER]->opt_value!=NULL)
+ if(mdi->opt[MEDIA_OPT_REFERER][0]!=NULL && mdi->opt[MEDIA_OPT_REFERER][0]->opt_value!=NULL)
{
- media_info->opt_unit = (struct opt_unit_t*)calloc(1, sizeof(struct opt_unit_t));
- media_info->opt_unit->opt_len = sizeof(uint32_t)+sizeof(uint8_t)+mdi->opt[MEDIA_OPT_REFERER]->opt_len;
- media_info->opt_unit->opt_type = OPT_SOURCE_REFERER;
- media_info->opt_unit->opt_value = (char*)calloc(1, mdi->opt[MEDIA_OPT_REFERER]->opt_len);
- memcpy(media_info->opt_unit->opt_value, mdi->opt[MEDIA_OPT_REFERER]->opt_value, mdi->opt[MEDIA_OPT_REFERER]->opt_len);
- opt_num++;
+ media_info->opt_unit[opt_index].opt_len = sizeof(uint32_t)+sizeof(uint8_t)+mdi->opt[MEDIA_OPT_REFERER][0]->opt_len;
+ media_info->opt_unit[opt_index].opt_type = OPT_SOURCE_REFERER;
+ media_info->opt_unit[opt_index].opt_value = (char*)calloc(1, mdi->opt[MEDIA_OPT_REFERER][0]->opt_len);
+ memcpy(media_info->opt_unit[opt_index].opt_value, mdi->opt[MEDIA_OPT_REFERER][0]->opt_value, mdi->opt[MEDIA_OPT_REFERER][0]->opt_len);
+ opt_index++;
}
}
#endif
diff --git a/src/support/libsoqav_dedup.so b/src/support/libsoqav_dedup.so
new file mode 100644
index 0000000..8566e53
--- /dev/null
+++ b/src/support/libsoqav_dedup.so
Binary files differ