使用eXosip时,eXosip_call_build_initial_invite生成的cseq的number值始终为20的问题

在使用eXosip对gb28181编程时,遇到一个奇怪的问题,最后发现是eXosip内部在生成cseq时产生的number值始终为20引起的,我想要这个值递增

在jrequest.c文件里的_eXosip_generating_request_out_of_dialog函数:

    i = osip_cseq_init (&cseq);
    if (i != 0) {
      osip_message_free (request);
      return i;
    }
    num = osip_strdup (doing_register ? "1" : "20");
    osip_cseq_set_number (cseq, num);
    osip_cseq_set_method (cseq, osip_strdup (method));
    request->cseq = cseq;

虽然协议里对这个值是使用者自定义,但是在这里我需要他变化,因此,在使用时需要我们自己来修改这个值,使他递增

...
	osip_message_t *pInvite = NULL;
	int err = eXosip_call_build_initial_invite(m_jtgbsipctx, &pInvite, CTo, CFrom, CRoute, NULL);  //"This is a call for xy"
	if(err)
	{
		jtprintf("[%s]eXosip_call_build_initial_invite err %d\n", __FUNCTION__, err);
		eXosip_unlock (m_jtgbsipctx);
		return -1;
	}

	jtprintf("eXosip_call_build_initial_invite 1, Seq %s, method %s, DeviceId %s\n"
		, pInvite->cseq->number, pInvite->cseq->method, DeviceId.c_str());

	osip_free(pInvite->cseq->number);

	// osip内部产生的number始终是20, 没有递增!!!!!!!!!!!!!!!!!! 重新赋值
	stringstream convertstream;
	convertstream << m_SN++;
	string strSN;
	convertstream>>strSN;
	pInvite->cseq->number = osip_strdup(strSN.c_str());
...

ps: 在和国内某大厂做gb28181对接时,发现对方的invite请求始终都时20值,没有变化处理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值