前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenSIPs 2.1的一个问题

OpenSIPs 2.1的一个问题

作者头像
Seven Du
发布2020-12-21 14:30:49
6190
发布2020-12-21 14:30:49
举报

昨天,研究OpenSIPS 2.1,遇到一个问题。

在使用async模式的rest_post时,日志中提示如下错误:

ERROR:rest_client:resume_async_http_req: curl_multi_perform: Please call curl_multi_perform() soon

而同步模式的rest_post是没有问题的。

通过查找相关的关键字,发现 http://curl.haxx.se/mail/lib-2012-06/0350.html

看来,是libcurl版本低于7.20.0可能会有该问题,查了一下,果然,CentOS上的版本是7.19.x 的。错误好像出在rest_methods.c的这个部分:

mrc = curl_multi_perform(multi_handle, &running_handles);

if (mrc != CURLM_OK) {

LM_ERR("curl_multi_perform: %s\n", curl_multi_strerror(mrc));

goto error;

}

也就是说,如果mrc不是CURLM_OK的话,都会出错,那么,7.20.0以下的版本可能还会返回CURLM_CALL_MULTI_PERFORM。根据libcurl文档的说明,如果curl_multi_perform()返回CURLM_CALL_MULTI_PERFORM,应该继续调用curl_multi_perform(),因此,把上述代码修改如下:

again:

mrc = curl_multi_perform(multi_handle, &running_handles);

if (mrc == CURLM_CALL_MULTI_PERFORM) {

goto again;

}

if (mrc != CURLM_OK) {

LM_ERR("curl_multi_perform: %s\n", curl_multi_strerror(mrc));

goto error;

}

问题解决。注意,文件中有两处调用curl_multi_perform()的地方都需要修改。

这是OpenSIPS相关文章的第一次尝试,请多提宝贵意见。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档