From e2a40b647537eb17b6db5fef8ea962178c2e2887 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Thu, 20 Nov 2008 23:13:33 +0000 Subject: [PATCH] Merged revisions 158230 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ........ r158230 | mmichelson | 2008-11-20 17:12:50 -0600 (Thu, 20 Nov 2008) | 20 lines Change the remote user agent session version variable from an int to a uint64_t. This prevents potential comparison problems from happening if the version string exceeds INT_MAX. This was an apparent problem for one user who could not properly place a call on hold since the version in the SDP of the re-INVITE to place the call on hold greatly exceeded INT_MAX. This also aligns with RFC 2327 better since it recommends using an NTP timestamp for the version (which is a 64-bit number). (closes issue #13531) Reported by: sgofferj Patches: 13531.patch uploaded by putnopvut (license 60) Tested by: sgofferj ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@158231 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index a4cec63106..d2a297f177 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1252,7 +1252,7 @@ struct sip_pvt { char tag[11]; /*!< Our tag for this session */ int sessionid; /*!< SDP Session ID */ int sessionversion; /*!< SDP Session Version */ - int sessionversion_remote; /*!< Remote UA's SDP Session Version */ + uint64_t sessionversion_remote; /*!< Remote UA's SDP Session Version */ int session_modify; /*!< Session modification request true/false */ struct sockaddr_in sa; /*!< Our peer */ struct sockaddr_in redirip; /*!< Where our RTP should be going if not to us */ @@ -6489,7 +6489,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action int last_rtpmap_codec=0; char buf[SIPBUFSIZE]; - int rua_version; + uint64_t rua_version; if (!p->rtp) { ast_log(LOG_ERROR, "Got SDP but have no RTP session allocated.\n"); @@ -6558,7 +6558,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action ast_log(LOG_WARNING, "SDP sytax error in o= line\n"); return -1; } - if (!sscanf(token, "%d", &rua_version)) { + if (!sscanf(token, "%lu", &rua_version)) { ast_log(LOG_WARNING, "SDP sytax error in o= line version\n"); return -1; }