doubango库改动Contact内容的地方
要在手机client中实现会议功能,从音频会议開始(可能会优点理点)。server用的是Centos7 64 + Freeswitch1.4。client是基于doubango的imsdroid。还有pc上的jitsi。
doubango中
1. addHeader函数能够在sip报文中加入字段。比如“P-Preferred-Service”
2. addCaps函数在在sip报文Contact字段<>后加入内容,有2个重载
可是。这2个函数都无法改动Contact<>中的内容,
搜了一圈又一圈,发现doubango并没有提供能够改动Contact中<>里的内容的函数(如找到请告诉我。qq 1985082200,谢谢),没办法,仅仅能靠自己了。
pc上jitsi能够发起视频,音频会议,经过抓包对照,推測发起会议的方法:
1. 在Contact中最后加入isfocus參数,測试不行
2. 在Contact<>中加入registering_acc这一串
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3. 同一时候加入以上2个
4. 其它可能性。。。
既然找到方法,那说干就干,找到最后将Contact转化为字符串的地方。黄天不负有心人,一层层找下来最终发现躲藏在这里:
1)SipSession.cpp
bool SipSession::addCaps(const char* name, const char* value)
2) tsip_session.c
tsk_params_add_param
3) tsip_header_Contact.c
int tsip_header_Contact_serialize(const tsip_header_t* header, tsk_buffer_t* output)
4) tsip_uri.c
int tsip_uri_serialize(const tsip_uri_t *uri, tsk_bool_t with_params, tsk_bool_t quote, tsk_buffer_t *output)
int __tsip_uri_serialize(const tsip_uri_t *uri, tsk_bool_t with_params, tsk_buffer_t *output)
恩,终于就是在__tsip_uri_serialize中穿行化Contact的内容的。代码中有这么一段:
红色框框里的,咦。感觉能够加入參数呢。往上找了一层。最后是失望,没有提供操作params的函数
doubango中封装“uri"的内是”SipUri“,在”SipUri.h"中,而真正实现的数据结构是“tsip_uri_t”
好吧,既然找到地方了,那明天就写死加上看看行不行,要是能够再提供api,只是,偶记得编译这货也不太easy。哎~~~~
doubango库改动Contact内容的地方的更多相关文章
- python改动文件内容,不须要read,write多个动作。
python 要改动文件内容,经常使用 是先read.后write , 再 rename.非常不爽. 比方:须要 把 yuv_dir ="../HD/" # &q ...
- 基于bs4库的HTML内容查找方法
一.信息提取实例 提取HTML中所有的URL链接 思路:1)搜索到所有的<a>标签 2)解析<a>标签格式,提取href后的链接内容 >>> import r ...
- SVNKIT的low api应用之修改库中文件内容(File modification)
最近在做一个仓库管理系统,架构在svn之上.要求每一项操作要记录在log文件中,弄了很久起初感觉无法向库中的文本文件添加东西,就是修改库中的文本文件.于是采用了一个很笨的办法: 现将库中的log ...
- php使用gd库输出中文内容的图片
正如标题所说那样,本文只讨论输出内容全部为中文或者包含中文的情况.如果内容全是字母或者其他字符的话,可以参考这篇博客:生成验证码 问题 此处要注意,标题中为什么要区别windows和linux分别实现 ...
- gitlab迁移版本库(保留原版本库的所有内容)
如果你想从别的 Git 托管服务那里复制一份源代码到新的 Git 托管服务器上的话,可以通过以下步骤来操作. 1) 从原地址克隆一份裸版本库,比如原本托管于 GitHub git clone --ba ...
- gd库的相关内容
gd库注意事项 对于乱码问题 在php里面包含 header("content-type:image/png"); 这样输出的图像就不会乱码了后面跟的Png也可以改变为自己想要输出 ...
- Sophus库CMakeLists.txt内容详解笔记
CMakeLists.txt: SET(PROJECT_NAME Sophus) PROJECT(${PROJECT_NAME}) CMAKE_MINIMUM_REQUIRED(VERSION 2.6 ...
- 基于BeautifulSoup库的HTML内容的查找
一.BeautifulSoup库提供了一个检索的参数: <>.find_all(name,attrs,recursive,string,**kwargs),它返回一个列表类型,存储查找的结 ...
- php-fpm.conf配置说明(重点要改动和优化的地方)
<?xml version="1.0" ?> <configuration> All relative paths in this config are r ...
随机推荐
- Dorado日常使用总结
1.360兼容模式下的控件虚线边框问题: 控件加载是onReady事件中加上:self.focusable=false;(用于指示该种控件是否支持获得控制焦点.) 2.360兼容模式下滚动条 cont ...
- 习题:最短路计数(SPFA最短路计数)
最短路计数(洛谷1144)题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条.输入输出格式输入格式:输入第一行包含2个正整数N,M,为图的顶点数 ...
- 【Luogu】P4172水管局长(LCT)
题目链接 有个结论是x到y的路径上最长边权值等于最小生成树上最长边权值,于是问题转化为最小生成树. 再考虑把问题反过来,删边变成加边. 于是变成动态维护最小生成树,LCT可以做到. #include& ...
- 修改host文件实现自定义域名和iis站点本地调试
修改host文件实现自定义域名和iis站点本地调试 自定义域名:myhost.com windows版本:win7 iis版本:iis7.x vs版本:vs2010 现在开始动手设置了: 一.修改ho ...
- [ZJOI2011][bzoj2229] 最小割 [最小割树]
题面 传送门 思路 首先我们明确一点:这道题不是让你把$n^2$个最小割跑一遍[废话] 但是最小割过程是必要的,因为最小割并没有别的效率更高的算法(Stoer-Wagner之类的?) 那我们就要尽量找 ...
- gcc编译生成静态及动态链接库步骤
gcc编译生成静态及动态链接库步骤 这两天在看<Linux C程序设计大全>,吴岳编著,清华大学出版社.这本书是在一个培训机构看到的,在网上查了下该书的相关信息.从目录而言,该书涵盖了Li ...
- ceoi2017 Building Bridges(build)
Building Bridges(build) 题目描述 A wide river has nn pillars of possibly different heights standing out ...
- python 小练习1
_input = ['I',6,6,'love','python',6] _str = '' _sum = 0 for item in _input: if isinstance(item,str): ...
- 学习总结——JMeter做http接口压力测试
JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做 ...
- Java使用apache的开源数据处理框架commons-dbutils完成查询结果集的各种处理输出(8种方式)
package demo; /* * QueryRunner数据查询操作: * 调用QueryRunner类方法query(Connection con,String sql,ResultSetHan ...