freeswitch之sofia模块
模块加载过程
启动事件处理线程池:
SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load)=> sofia_msg_thread_start(0);=> sofia_msg_thread_run=> sofia_process_dispatch_event=> our_sofia_event_callback : 处理消息
启动服务器监听:
SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load)=> config_sofia(0, NULL)=> launch_sofia_profile_thread=> sofia_profile_thread_run => nua_create=> su_home_new=> nua_stack_init => nta_agent_create=> nta_agent_add_tport => tport_tbind=> tport_bind_server=> tport_listen : 监听客户端发来的数据
呼叫流程:
1.收到nua_r_invite,返回407的流程:our_sofia_event_callback=>(nua_r_invite)sofia_handle_sip_r_invite=>sofia_reg_handle_register=>sofia_reg_handle_register_token=>sofia_reg_auth_challenge=>nua_respond(nh, SIP_407_PROXY_AUTH_REQUIRED
2.收到nua_r_invite,返回108的流程:
our_sofia_event_callback=>(nua_r_invite)sofia_handle_sip_r_invite=>sofia_reg_handle_register=>sofia_reg_handle_register_token=>sofia_reg_parse_auth=>
freeswitch之sofia模块相关推荐
- FreeSWITCH 1.10 源码阅读(3)-sofia 模块原理及其呼入处理流程
文章目录 1. 前言 2. 源码分析 2.1 sofia 模块的加载 2.2 呼入的处理流程 1. 前言 SIP(Session Initiation Protocol) 是应用层的信令控制协议,有许 ...
- freeswitch源码阅读 之 sofia模块
sofia模块在freeswitch中的位置非常重要, 所有的sip通话都和它有关, 那么我们就看一下该模块的执行流程. 一. 实现的功能: 1. sip注册; 2. 呼叫; 3. Presence; ...
- FreeSWITCH之SIP 模块 - mod_sofia
转自:http://www.freeswitch.org.cn/2010/08/03/di-qi-zhang-sip-mo-kuai-mod_sofia.html SIP 模块是 FreeSWITCH ...
- FreeSWITCH的SIP模块mod_sofia详解
为什么80%的码农都做不了架构师?>>> mod_sofia模块是FreeSWITCH默认使用的SIP协议栈,FreeSWITCH默认带了三个Profile(也就是三个UA),其配置 ...
- 新一代FreeSWITCH电话机器人模块
介绍 FreeSWITCH 电话机器人模块,包含脚本解析引擎和话术编辑器2部分.如果需要测试可以联系我的微信:cdevelop 话术编辑器 话术编辑器是一个图形化的应用程序,通过图形化编辑话术流程,生 ...
- FreeSWITCH 背景音模块
FreeSWITCH 背景音模块,可以给通话,添加一个背景音,比如办公室的噪音,键盘敲击声,等. FreeSWITCH 背景音模块,有什么用处?你肯定想不到吧. 我们电话机器人一般都是人工录音,机器人 ...
- freeswitch系列21模块sofia
mod_sofia加载 在可加载模块那一章节说过,一个模块的加载,主要是调用load函数,也可以理解为模块初始化函数,下面分析下,mod_sofia加载做了哪些事. 全局结构体mod_sofia_gl ...
- FreeSwitch Sofia模块加载过程
模块加载入口函数mod_sofia_load(),首先一系列switch_event_reserve_subclass()调用,注册事件类型.然后调用switch_queue_create( ...
- freeswitch修改mod_sofia模块并上报自定义头域
概述 在之前的文章中,我们介绍了如何使用fs的event事件机制来获取呼叫的各种信息. 这些event事件一般都是底层模块定义好的,其中的各种信息已经很完备了,日常的开发需求都可以满足. 但是,总有一 ...
最新文章
- 搜索和其他机器学习问题有什么不同?
- lvs中dr模式配置脚本
- 【struts2+spring+hibernate】ssh框架整合开发
- lvs系列之dr(二)
- C++ 类的行为 | 行为像值的类、行为像指针的类、swap函数处理自赋值
- 快速搭建react项目骨架(按需加载、redux、axios、项目级目录等等)
- php 得到服务器的数据$_SERVER
- python自动化测试-python自动化之(自动化测试报告)
- 界面排版-TableLayout的stretchColumns方法
- Atitit 提升可读性 流畅接口 1.1. 大接口vs 小接口 小接口可用流畅api串接起来	1 1.2. 部分comm fun可用大接口固化	1 2. 流畅接口 方法连 “Fluent接口
- 坐标转换-换带计算(附软件下载)
- Blender学习笔记:齿轮模型建立
- 《筱静观察》2019开机仪式暨战略合作签约仪式在北京创新社成功举办
- ipfs 存储目录结构
- 2014网易运营工程师笔试题(邮件运维)--题解--第二天
- 华为路由器 基本ACL配置
- EXCEL的嵌套if及时间处理
- 苹果笔记本的end键_苹果电脑快捷键使用 Mac快捷键大全详细介绍
- [递推] 51Nod1383 整数分解为2的幂
- java自动发图文微博_使用node搭建自动发图文微博机器人的方法