自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 谨慎在多进程中使用Go生成的动态库

之前写过一篇《C语言调用Go生成的动态库中的函数》,实际在OpenSIPS中使用时,却发现程序经常会“陷入”动态库函数的调用。使用GDB附加到进程,函数调用block时堆栈如下:#0 runtime.futex () at /usr/local/go/src/runtime/sys_linux_amd64.s:520#1 0x00007f13340e7d16 in runtime.futexsleep (addr=0xfffffffffffffe00, val=0, ns=-1) at /u

2021-11-11 15:14:20 1447

原创 FreeSWITCH动态更改网关中的sip_from_user

笔者在FreeSWITCH中有一个网关配置:<include> <gateway name="pstn"> <param name="realm" value="10.18.2.18"/> <param name="register" value="false"/> <param name="username" value="022xxxxxxxx"/> </gateway></inc

2021-11-02 20:16:23 1050

原创 C语言调用Go生成的动态库中的函数

工作中遇到的Go语言调用C函数的场景比较多,之前也写过一篇《cgo中将C函数返回的数组转为Go中的slice》。目前在开发OpenSIPS的过程中,有些功能用C写起来麻烦,故第一次尝试了用C调用Go。首先用Go实现功能,示例代码如下package mainimport "C"import ( "fmt" "sync" "time")var notifyChan chan struct{} = make(chan struct{})var wg sync.WaitGroup

2021-10-26 19:51:31 1101 2

原创 OpenSIPS新模块开发中数据库连接初始化的注意点

前几天我在OpenSIPS中使用了usrloc模块,然后发现有时候日志会突然频繁打印:timer_ticker: timer task <ul-timer> already scheduled在此期间,服务无法响应SIP请求。排查过程如下:1. 使用usrloc后出现的问题,并且日志也指明了方向:ul-timer查看代码,ul-timer这个定时任务负责定期清理过期的contacts,涉及内存操作和数据库操作。第一反应,数据库操作耗时太久,导致执行定时任务的进程被卡死了。

2021-09-26 11:16:25 402

原创 Cgo中将C函数返回的数组转为Go中的slice

之前在go服务中,要调用同事动态库中的一个目标检测函数:typedef struct { int x; int y; int width; int height;} HRect;LIB_EXPORT int detect_objects(void *ptr, const char *imgPath, HRect srect, HRect **rrects, int *rsize);其中第四个参数,需要我传递一个区域参数的二级指针,动态库中分配内存、计算目标检测

2021-07-07 17:52:05 1469

原创 OpenSIPS处理200OK的ACK和RE-INVITE的时序问题

问题描述:FreeSWITCH发起外呼(通过OpenSIPS forward到运营商),在receive_message收到SWITCH_MESSAGE_INDICATE_BRIDGE时,再发起RE-INVITE,这时其实还没有收到运营商返回的200OK。FS会保证在收到200OK后,将ACK和RE-INVITE依次发送出去。到这里没有问题,OpenSIPS先收到ACK再收到RE-INVITE,但是OpenSIPS在处理ACK和RE-INVITE时,很有可能会先将RE-INVITE发送出去,这时运营

2021-06-29 14:57:51 2174

原创 OpenSIPS修复SDP中内网IP(NAT穿越问题)

在我们的场景下,多台FreeSWTICH依靠OpenSIPS作信令的负载均衡。OpenSIPS对外开放SIP端口,FreeSWITCH对外开放RTP端口。这种网络拓扑结构下,FS发送的INVITE以及回复的200OK中,SDP携带的是内网IP,如下图:我们可以借助OpenSIPS的fix_nated_sdp函数将其中的内网IP翻译为公网IP,该函数使用文档:https://opensips.org/docs/modules/3.1.x/nathelper.html#func_fix_na

2021-06-26 13:09:32 1751

原创 Learn OpenSIPS And FreeSWITCH

OpenSIPS Cluster在腾讯云部署的坑(从尝试到放弃)

2021-06-26 12:01:51 360

原创 OpenSIPS Cluster + CLB在腾讯云部署的坑(从尝试到放弃)

想采用Cluster+CLB模式部署OpenSIPS,并不是担心单台OpenSIPS的处理能力。实际上因为媒体流直接建立在OpenSIPS后面的FreeSWITCH上,OpenSIPS仅做信令的load balance,在会议场景下并无压力。采用Cluster+CLB模式部署是为了OpenSIPS的高可用。为什么不用keepalived呢?第一,云厂商都禁止了arp广播,只能用keepalived单播模式,也就是一对一的主备(这点其实不是问题,一般也都是一对一主备);第二,腾讯云的HAVIP据说不对新用

2021-06-25 16:06:03 1432 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除