opalvoip-svn Mailing List for OpalVOIP (Page 8)
Brought to you by:
csoutheren,
rjongbloed
You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(71) |
Nov
(241) |
Dec
(143) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(210) |
Feb
(263) |
Mar
(214) |
Apr
(290) |
May
(203) |
Jun
(160) |
Jul
(128) |
Aug
(158) |
Sep
(376) |
Oct
(234) |
Nov
(227) |
Dec
(216) |
2009 |
Jan
(99) |
Feb
(151) |
Mar
(234) |
Apr
(143) |
May
(271) |
Jun
(244) |
Jul
(173) |
Aug
(124) |
Sep
(246) |
Oct
(178) |
Nov
(85) |
Dec
(77) |
2010 |
Jan
(101) |
Feb
(79) |
Mar
(92) |
Apr
(134) |
May
(125) |
Jun
(121) |
Jul
(61) |
Aug
(70) |
Sep
(86) |
Oct
(81) |
Nov
(65) |
Dec
(75) |
2011 |
Jan
(110) |
Feb
(119) |
Mar
(267) |
Apr
(154) |
May
(296) |
Jun
(177) |
Jul
(149) |
Aug
(124) |
Sep
(120) |
Oct
(116) |
Nov
(99) |
Dec
(121) |
2012 |
Jan
(78) |
Feb
(161) |
Mar
(323) |
Apr
(154) |
May
(190) |
Jun
(207) |
Jul
(176) |
Aug
(165) |
Sep
(137) |
Oct
(85) |
Nov
(112) |
Dec
(100) |
2013 |
Jan
(341) |
Feb
(102) |
Mar
(240) |
Apr
(216) |
May
(233) |
Jun
(226) |
Jul
(139) |
Aug
(192) |
Sep
(183) |
Oct
(211) |
Nov
(220) |
Dec
(110) |
2014 |
Jan
(203) |
Feb
(205) |
Mar
(100) |
Apr
(178) |
May
(194) |
Jun
(249) |
Jul
(136) |
Aug
(241) |
Sep
(226) |
Oct
(200) |
Nov
(94) |
Dec
(46) |
2015 |
Jan
(94) |
Feb
(74) |
Mar
(89) |
Apr
(78) |
May
(65) |
Jun
(70) |
Jul
(113) |
Aug
(176) |
Sep
(140) |
Oct
(154) |
Nov
(99) |
Dec
(115) |
2016 |
Jan
(102) |
Feb
(69) |
Mar
(97) |
Apr
(53) |
May
(42) |
Jun
(13) |
Jul
(42) |
Aug
(30) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <rjo...@us...> - 2016-04-02 14:32:05
|
Revision: 34751 http://sourceforge.net/p/opalvoip/code/34751 Author: rjongbloed Date: 2016-04-02 14:32:02 +0000 (Sat, 02 Apr 2016) Log Message: ----------- Allow for Intra Frame request algorithm to be disabled through zero times. useful for when codec is not being used in real time environment. Modified Paths: -------------- opal/branches/v3_16/src/codec/vidcodec.cxx Modified: opal/branches/v3_16/src/codec/vidcodec.cxx =================================================================== --- opal/branches/v3_16/src/codec/vidcodec.cxx 2016-04-02 10:11:12 UTC (rev 34750) +++ opal/branches/v3_16/src/codec/vidcodec.cxx 2016-04-02 14:32:02 UTC (rev 34751) @@ -259,6 +259,10 @@ switch (m_state) { case e_Idle : + if (m_maxThrottleTime == 0 || m_retryTime == 0) { + m_requestTimer.Stop(); + return; + } break; case e_Throttled : @@ -341,15 +345,19 @@ // If idle, then this is a periodic request, restart the timer for another switch (m_state) { case e_Idle : - m_state = e_Periodic; - m_requestTimer = m_periodicTime; - PTRACE(4, "Periodic I-Frame request: next=" << m_periodicTime << " this=" << this); + if (m_periodicTime > 0) { + m_state = e_Periodic; + m_requestTimer = m_periodicTime; + PTRACE(4, "Periodic I-Frame request: next=" << m_periodicTime << " this=" << this); + } break; case e_Throttled : m_state = e_Idle; - m_requestTimer = m_periodicTime; - PTRACE(4, "End throttled I-Frames: next=" << m_periodicTime << " this=" << this); + if (m_periodicTime > 0) { + m_requestTimer = m_periodicTime; + PTRACE(4, "End throttled I-Frames: next=" << m_periodicTime << " this=" << this); + } break; case e_Requested : This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-04-02 10:11:15
|
Revision: 34750 http://sourceforge.net/p/opalvoip/code/34750 Author: rjongbloed Date: 2016-04-02 10:11:12 +0000 (Sat, 02 Apr 2016) Log Message: ----------- Merged revision(s) 34729-34749 from opal/branches/v3_16: Fixed using pre-assigned dynamic payload type for a media format (e.g. RFC2833 for historical reasons uses 101) when there are less than 6 plugin codecs loaded. Modified Paths: -------------- opal/trunk/src/opal/mediafmt.cxx Property Changed: ---------------- opal/trunk/ Index: opal/trunk =================================================================== --- opal/trunk 2016-04-02 09:40:21 UTC (rev 34749) +++ opal/trunk 2016-04-02 10:11:12 UTC (rev 34750) Property changes on: opal/trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -10,7 +10,7 ## /opal/branches/v3_10:25182-29485,30896,32927-32928,32933 /opal/branches/v3_12:28489-31709 /opal/branches/v3_14:31505-33613 -/opal/branches/v3_16:34090-34728 +/opal/branches/v3_16:34090-34749 /opal/branches/v3_2:21143,21220,21227,21253,21455 /opal/branches/v3_4:21060,21062,21088,21092,21111,21113,21115,21119,21143,21148,21151-21152,21155,21158,21184,21188,21253,21265-21266,21283-21284,21298,21300,21303,21307,21309,21311,21327,21331,21333,21359,21367,21369,21488,21556,21564-21565,21568,21570,21620,21625,21631,21748,21751,21756,21759,21761,21767,21770,22246,23044,23140,23143,23286 /opal/branches/v3_6:22169,22178,22184,22186,22197,22204,22216,22251,22253,22255,22258,22260,22291,22296,22300,22306,22308,22313,22319,22336,22353,22358,22436,22447,22449,22497,22511,22517,22519-22521,22527,22536,22538,22589,22596,22599,22617,22620,22622,22630,22640,22655,22675,22682,22726-22728,22730,22733,22738,22745-22746,22800,22820-22821,22842,22844-22845,22851,22853,22889,22896,22902,22904,22906,22918,22924,22928,22946,22965,22967,22976,22978,22980,22982,22994,23028,23123,23125-23126,23128,23157,23165,23173,23175,23183,23294,23341,23465,23467,23474,23521,23829,24346,24809 \ No newline at end of property Modified: opal/trunk/src/opal/mediafmt.cxx =================================================================== --- opal/trunk/src/opal/mediafmt.cxx 2016-04-02 09:40:21 UTC (rev 34749) +++ opal/trunk/src/opal/mediafmt.cxx 2016-04-02 10:11:12 UTC (rev 34750) @@ -1291,7 +1291,7 @@ inUse[format->GetPayloadType()] = true; // A conflict is when we are after an explicit payload type, we have found one already using it - if (rtpPayloadType > RTP_DataFrame::DynamicBase && rtpPayloadType == format->GetPayloadType()) { + if (rtpPayloadType > RTP_DataFrame::DynamicBase && rtpPayloadType == format->GetPayloadType()) { // If it is a shared payload types, which happens when encoding name is the same, then allow it if (rtpEncodingName == format->GetEncodingName()) return; @@ -1301,6 +1301,11 @@ } } + if (rtpPayloadType > RTP_DataFrame::DynamicBase && conflictingFormat == NULL) { + PTRACE(4, "Using assigned payload type " << rtpPayloadType << " for " << fullName); + return; + } + // Determine next unused payload type, if all the dynamic ones are allocated then // we start downward toward the well known values. int nextUnused = RTP_DataFrame::DynamicBase; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-04-02 09:40:24
|
Revision: 34749 http://sourceforge.net/p/opalvoip/code/34749 Author: rjongbloed Date: 2016-04-02 09:40:21 +0000 (Sat, 02 Apr 2016) Log Message: ----------- Fixed using pre-assigned dynamic payload type for a media format (e.g. RFC2833 for historical reasons uses 101) when there are less than 6 plugin codecs loaded. Modified Paths: -------------- opal/branches/v3_16/src/opal/mediafmt.cxx Modified: opal/branches/v3_16/src/opal/mediafmt.cxx =================================================================== --- opal/branches/v3_16/src/opal/mediafmt.cxx 2016-04-02 09:25:21 UTC (rev 34748) +++ opal/branches/v3_16/src/opal/mediafmt.cxx 2016-04-02 09:40:21 UTC (rev 34749) @@ -1281,7 +1281,7 @@ inUse[format->GetPayloadType()] = true; // A conflict is when we are after an explicit payload type, we have found one already using it - if (rtpPayloadType > RTP_DataFrame::DynamicBase && rtpPayloadType == format->GetPayloadType()) { + if (rtpPayloadType > RTP_DataFrame::DynamicBase && rtpPayloadType == format->GetPayloadType()) { // If it is a shared payload types, which happens when encoding name is the same, then allow it if (rtpEncodingName == format->GetEncodingName()) return; @@ -1291,6 +1291,11 @@ } } + if (rtpPayloadType > RTP_DataFrame::DynamicBase && conflictingFormat == NULL) { + PTRACE(4, "Using assigned payload type " << rtpPayloadType << " for " << fullName); + return; + } + // Determine next unused payload type, if all the dynamic ones are allocated then // we start downward toward the well known values. int nextUnused = RTP_DataFrame::DynamicBase; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-04-02 09:25:23
|
Revision: 34748 http://sourceforge.net/p/opalvoip/code/34748 Author: rjongbloed Date: 2016-04-02 09:25:21 +0000 (Sat, 02 Apr 2016) Log Message: ----------- Merged revision(s) 34718, 34746 from opal/trunk: Fixed being able to set LIBS variable before inclusion of opal.mak in Makefile. ........ Possible fix for "RTP thread failed to terminate" assertion. Make socket timeout slightly longer than media timeout to avoid a race condition with m_mediaTimer expiring. ........ Modified Paths: -------------- opal/branches/v3_16/make/opal_config.mak.in opal/branches/v3_16/src/opal/mediasession.cxx Property Changed: ---------------- opal/branches/v3_16/ Index: opal/branches/v3_16 =================================================================== --- opal/branches/v3_16 2016-04-02 09:22:45 UTC (rev 34747) +++ opal/branches/v3_16 2016-04-02 09:25:21 UTC (rev 34748) Property changes on: opal/branches/v3_16 ___________________________________________________________________ Modified: svn:mergeinfo ## -14,6 +14,6 ## /opal/branches/v3_4:21060,21062,21088,21092,21111,21113,21115,21119,21143,21148,21151-21152,21155,21158,21184,21188,21253,21265-21266,21283-21284,21298,21300,21303,21307,21309,21311,21327,21331,21333,21359,21367,21369,21488,21556,21564-21565,21568,21570,21620,21625,21631,21748,21751,21756,21759,21761,21767,21770,22246,23044,23140,23143,23286 /opal/branches/v3_6:22169,22178,22184,22186,22197,22204,22216,22251,22253,22255,22258,22260,22291,22296,22300,22306,22308,22313,22319,22336,22353,22358,22436,22447,22449,22497,22511,22517,22519-22521,22527,22536,22538,22589,22596,22599,22617,22620,22622,22630,22640,22655,22675,22682,22726-22728,22730,22733,22738,22745-22746,22800,22820-22821,22842,22844-22845,22851,22853,22889,22896,22902,22904,22906,22918,22924,22928,22946,22965,22967,22976,22978,22980,22982,22994,23028,23123,23125-23126,23128,23157,23165,23173,23175,23183,23294,23341,23465,23467,23474,23521,23829,24346,24809 /opal/branches/v3_8:24025,24027,24029,24036,24038,24040,24042,24048,24050,24058,24061,24068,24071,24074,24076,24080,24082,24086-24087,24092,24099,24101,24105,24107,24109,24111,24114,24116-24117,24120-24121,24125,24127,24130,24132,24134,24138,24140,24144,24146,24148,24150-24151,24154,24156,24158,24162,24170,24218,24245,24257,24261,24340,24362-24363,24365,24369,24373,24422,24440,24442,24447,24489,24504,24506,24532,24536,24545,24547,24552,24554,24614,24678,24687,24699,24705,24775,24833,24861,24903,25146 -/opal/trunk:34112-34116,34118-34120,34122,34137-34139,34155-34156,34161-34165,34168,34170,34173,34177,34187-34190,34208,34218,34222,34237-34238,34246-34252,34269-34271,34281-34288,34297,34300,34303-34316,34333,34346,34365,34375,34377,34382-34384,34390,34393-34394,34399,34417-34421,34424,34430,34432,34435-34437,34440,34442,34455-34456,34480,34483-34484,34487-34488,34490-34491,34502-34503,34506,34588-34589,34735 +/opal/trunk:34112-34116,34118-34120,34122,34137-34139,34155-34156,34161-34165,34168,34170,34173,34177,34187-34190,34208,34218,34222,34237-34238,34246-34252,34269-34271,34281-34288,34297,34300,34303-34316,34333,34346,34365,34375,34377,34382-34384,34390,34393-34394,34399,34417-34421,34424,34430,34432,34435-34437,34440,34442,34455-34456,34480,34483-34484,34487-34488,34490-34491,34502-34503,34506,34588-34589,34718,34735,34746 /ptlib/branches/v2_8:24136 /ptlib/trunk:20820 \ No newline at end of property Modified: opal/branches/v3_16/make/opal_config.mak.in =================================================================== --- opal/branches/v3_16/make/opal_config.mak.in 2016-04-02 09:22:45 UTC (rev 34747) +++ opal/branches/v3_16/make/opal_config.mak.in 2016-04-02 09:25:21 UTC (rev 34748) @@ -72,7 +72,7 @@ CXXFLAGS := @CXXFLAGS@ $(CXXFLAGS) CFLAGS := @CFLAGS@ $(CFLAGS) LDFLAGS := @LDFLAGS@ $(LDFLAGS) -LIBS := @LIBS@ $(LDFLAGS) +LIBS := @LIBS@ $(LIBS) SHARED_CPPFLAGS := @SHARED_CPPFLAGS@ SHARED_LDFLAGS = @SHARED_LDFLAGS@ DEBUG_CPPFLAGS := @DEBUG_CPPFLAGS@ Modified: opal/branches/v3_16/src/opal/mediasession.cxx =================================================================== --- opal/branches/v3_16/src/opal/mediasession.cxx 2016-04-02 09:22:45 UTC (rev 34747) +++ opal/branches/v3_16/src/opal/mediasession.cxx 2016-04-02 09:25:21 UTC (rev 34748) @@ -693,9 +693,12 @@ // Do timeout case case PChannel::Timeout: - PTRACE(1, m_owner, *m_owner << m_subchannel << " timed out (" << m_channel->GetReadTimeout() << "s)"); - if (!m_owner->m_mediaTimer.IsRunning()) + if (m_owner->m_mediaTimer.IsRunning()) + PTRACE(2, m_owner, *m_owner << m_subchannel << " timed out (" << m_channel->GetReadTimeout() << "s), other subchannels running"); + else { + PTRACE(1, m_owner, *m_owner << m_subchannel << " timed out (" << m_owner->m_mediaTimeout << "s), closing"); Close(); + } break; default: @@ -795,7 +798,7 @@ void OpalMediaTransport::InternalStop() { - PTRACE(4, *this << "stopping"); + PTRACE(4, *this << "stopping " << m_subchannels.size() << "subchannels."); LockReadOnly(); for (vector<Transport>::iterator it = m_subchannels.begin(); it != m_subchannels.end(); ++it) it->Close(); @@ -1134,7 +1137,9 @@ PUDPSocket & socket = *GetSubChannelAsSocket((SubChannels)subchannel); PTRACE_CONTEXT_ID_TO(socket); - socket.SetReadTimeout(m_mediaTimeout); + /* Make socket timeout slightly longer (200ms) than media timeout to avoid + a race condition with m_mediaTimer expiring. */ + socket.SetReadTimeout(m_mediaTimeout+200); // Increase internal buffer size on media UDP sockets SetMinBufferSize(socket, SO_RCVBUF, session.GetMediaType() == OpalMediaType::Audio() ? 0x4000 : 0x100000); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-04-02 09:22:48
|
Revision: 34747 http://sourceforge.net/p/opalvoip/code/34747 Author: rjongbloed Date: 2016-04-02 09:22:45 +0000 (Sat, 02 Apr 2016) Log Message: ----------- Merged revision(s) 34722, 34740-34745 from ptlib/trunk: Fixed typo for HTML table data align bottom. ........ Fixed reliable method of getting executable path name on Linux. ........ Fixed Linux assert timeout on addr2line during stack walk. ........ Only redirect stderr in 8nux service process if run as daemon. ........ Really fixed Linux timeout on addr2line during stack walk. ........ Fixed non service process PTLib parameter arguments being correctly passed to the service process itself. ........ Avoid double output of Assert ........ Modified Paths: -------------- ptlib/branches/v2_16/include/ptclib/html.h ptlib/branches/v2_16/src/ptclib/html.cxx ptlib/branches/v2_16/src/ptlib/common/osutils.cxx ptlib/branches/v2_16/src/ptlib/unix/assert.cxx ptlib/branches/v2_16/src/ptlib/unix/svcproc.cxx Property Changed: ---------------- ptlib/branches/v2_16/ Index: ptlib/branches/v2_16 =================================================================== --- ptlib/branches/v2_16 2016-03-31 11:24:15 UTC (rev 34746) +++ ptlib/branches/v2_16 2016-04-02 09:22:45 UTC (rev 34747) Property changes on: ptlib/branches/v2_16 ___________________________________________________________________ Modified: svn:mergeinfo ## -10,4 +10,4 ## /ptlib/branches/v2_4:21086,21094,21147,21160,21185,21281,21296,21305,21322,21337,21363,21467,21471-21472,21506,21508,21623,21695,21744,21746,21763,22241,22958,23045-23046,23061,23066,23712 /ptlib/branches/v2_6:22195,22243,22295,22304,22311,22317,22320,22356,22458,22509,22587,22601-22602,22611,22629,22633,22673,22681,22729,22731-22732,22736,22742,22848,22960,22992,23161,23163,23167,23169,23177,23239,23291,23298,23336,23429,23595,23823,23827,23873,24816 /ptlib/branches/v2_8:24034,24044,24046,24054,24060,24065,24084,24090,24113,24136,24142,24165-24166,24168,24172,24367,24372,24410,24540,24992 -/ptlib/trunk:34109-34115,34121,34140,34142-34143,34146-34149,34152-34154,34169,34171-34172,34180,34182,34184,34194,34219,34221,34231-34232,34244-34245,34254,34267-34268,34280-34284,34298-34315,34335,34344-34345,34347,34354-34356,34366,34379,34398,34405-34411,34418-34423,34493-34508,34581,34584 +/ptlib/trunk:34109-34115,34121,34140,34142-34143,34146-34149,34152-34154,34169,34171-34172,34180,34182,34184,34194,34219,34221,34231-34232,34244-34245,34254,34267-34268,34280-34284,34298-34315,34335,34344-34345,34347,34354-34356,34366,34379,34398,34405-34411,34418-34423,34493-34508,34581,34584,34722,34740-34745 \ No newline at end of property Modified: ptlib/branches/v2_16/include/ptclib/html.h =================================================================== --- ptlib/branches/v2_16/include/ptclib/html.h 2016-03-31 11:24:15 UTC (rev 34746) +++ ptlib/branches/v2_16/include/ptclib/html.h 2016-04-02 09:22:45 UTC (rev 34747) @@ -609,7 +609,7 @@ AlignRight, AlignJustify, AlignBaseline, - AlignBotton, + AlignBottom, AlignMiddle, AlignTop }; Modified: ptlib/branches/v2_16/src/ptclib/html.cxx =================================================================== --- ptlib/branches/v2_16/src/ptclib/html.cxx 2016-03-31 11:24:15 UTC (rev 34746) +++ ptlib/branches/v2_16/src/ptclib/html.cxx 2016-04-02 09:22:45 UTC (rev 34747) @@ -611,7 +611,7 @@ "align=right", "align=justify", "valign=baseline", - "valign=botton", + "valign=bottom", "valign=middle", "valign=top" }; Modified: ptlib/branches/v2_16/src/ptlib/common/osutils.cxx =================================================================== --- ptlib/branches/v2_16/src/ptlib/common/osutils.cxx 2016-03-31 11:24:15 UTC (rev 34746) +++ ptlib/branches/v2_16/src/ptlib/common/osutils.cxx 2016-04-02 09:22:45 UTC (rev 34747) @@ -2121,8 +2121,9 @@ PAssert(PProcessInstance == NULL, "Only one instance of PProcess allowed"); PProcessInstance = this; + /* Try to get the real image path for this process using platform dependent + code, if this fails, then use the value urigivally set via argv[0] */ #if defined(_WIN32) - // Try to get the real image path for this process TCHAR shortName[_MAX_PATH]; if (GetModuleFileName(GetModuleHandle(NULL), shortName, sizeof(shortName)) > 0) { TCHAR longName[32768]; // Space for long image path @@ -2138,14 +2139,16 @@ if (_NSGetExecutablePath(path, &size) == 0) executableFile = path; #elif defined(P_RTEMS) - cout << "Enter program arguments:\n"; arguments.ReadFrom(cin); #else - // Hope for a /proc, dertainly works for Linux + // Hope for a /proc, certainly works for Linux char path[10000]; - if (readlink("/proc/self/exe", path, sizeof(path)) >= 0) + int len = readlink("/proc/self/exe", path, sizeof(path)); + if (len >= 0) { + path[len] = '\0'; executableFile = path; + } #endif // _WIN32 if (productName.IsEmpty()) Modified: ptlib/branches/v2_16/src/ptlib/unix/assert.cxx =================================================================== --- ptlib/branches/v2_16/src/ptlib/unix/assert.cxx 2016-03-31 11:24:15 UTC (rev 34746) +++ ptlib/branches/v2_16/src/ptlib/unix/assert.cxx 2016-04-02 09:22:45 UTC (rev 34747) @@ -56,13 +56,22 @@ static bool fgets_nonl(char * buffer, size_t size, FILE * fp) { + int fd = fileno(fp); fd_set rd; FD_ZERO(&rd); - FD_SET(fileno(fp), &rd); + FD_SET(fd, &rd); - P_timeval tv(1); - if (select(1, &rd, NULL, NULL, tv) != 0) - return false; + P_timeval tv(1,0); + switch (select(fd+1, &rd, NULL, NULL, tv)) { + case 1 : + break; + case 0 : + strncpy(buffer, "StackWalk timeout with addr2line", size); + return false; + default : + snprintf(buffer, size, "StackWalk error %d with addr2line", errno); + return false; + } if (fgets(buffer, size, fp) == NULL) return false; @@ -83,8 +92,11 @@ FILE * p = popen("which addr2line", "r"); if (p != NULL) { char line[100]; + line[0] = '\0'; if (fgets_nonl(line, sizeof(line), p) && access(line, R_OK|X_OK) == 0) addr2line = line; + if (addr2line.empty()) + cerr << "Could not locate addr2line: " << line << endl; fclose(p); } @@ -112,7 +124,13 @@ FILE * p = popen(cmd.str().c_str(), "r"); if (p != NULL) { char line[200]; - for (i = skip; i < addressCount && fgets_nonl(line, sizeof(line), p); ++i) { + for (i = skip; i < addressCount; ++i) { + line[0] = '\0'; + if (!fgets_nonl(line, sizeof(line), p)) { + if (line[0] != '\0') + strm << line << '\n'; + break; + } if (strcmp(line, "??:0") != 0) lines[i] = line; } Modified: ptlib/branches/v2_16/src/ptlib/unix/svcproc.cxx =================================================================== --- ptlib/branches/v2_16/src/ptlib/unix/svcproc.cxx 2016-03-31 11:24:15 UTC (rev 34746) +++ ptlib/branches/v2_16/src/ptlib/unix/svcproc.cxx 2016-04-02 09:22:45 UTC (rev 34747) @@ -194,7 +194,6 @@ { PMEMORY_IGNORE_ALLOCATIONS_FOR_SCOPE; - PSetErrorStream(new PSystemLog(PSystemLog::StdError)); #if PTRACING PTrace::SetStream(new PSystemLog(PSystemLog::Debug3)); #if _DEBUG @@ -359,6 +358,9 @@ // set flag for console messages if (args.HasOption('c')) { +#if PTRACING + PSetErrorStream(PTrace::GetStream()); +#endif PSystemLog::SetTarget(new PSystemLogToStderr()); m_debugMode = true; } @@ -433,14 +435,7 @@ bool daemon = args.HasOption('d'); // Remove the service arguments - if (args.GetCount() == 0) - args.SetArgs(""); - else { - PStringArray programArgs(args.GetCount()); - for (PINDEX arg = 0; arg < args.GetCount(); ++arg) - programArgs = args[arg]; - args.SetArgs(programArgs); - } + args.SetArgs(args.GetParameters()); // We are a service, don't want to get blocked on input from stdin during asserts if (!m_debugMode) @@ -454,6 +449,8 @@ if (!daemon) return -1; + PSetErrorStream(new PSystemLog(PSystemLog::StdError)); + #if !defined(BE_THREADS) && !defined(P_RTEMS) // Run as a daemon, ie fork This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-31 11:24:17
|
Revision: 34746 http://sourceforge.net/p/opalvoip/code/34746 Author: rjongbloed Date: 2016-03-31 11:24:15 +0000 (Thu, 31 Mar 2016) Log Message: ----------- Possible fix for "RTP thread failed to terminate" assertion. Make socket timeout slightly longer than media timeout to avoid a race condition with m_mediaTimer expiring. Modified Paths: -------------- opal/trunk/src/opal/mediasession.cxx Modified: opal/trunk/src/opal/mediasession.cxx =================================================================== --- opal/trunk/src/opal/mediasession.cxx 2016-03-31 11:12:01 UTC (rev 34745) +++ opal/trunk/src/opal/mediasession.cxx 2016-03-31 11:24:15 UTC (rev 34746) @@ -693,9 +693,12 @@ // Do timeout case case PChannel::Timeout: - PTRACE(1, m_owner, *m_owner << m_subchannel << " timed out (" << m_channel->GetReadTimeout() << "s)"); - if (!m_owner->m_mediaTimer.IsRunning()) + if (m_owner->m_mediaTimer.IsRunning()) + PTRACE(2, m_owner, *m_owner << m_subchannel << " timed out (" << m_channel->GetReadTimeout() << "s), other subchannels running"); + else { + PTRACE(1, m_owner, *m_owner << m_subchannel << " timed out (" << m_owner->m_mediaTimeout << "s), closing"); Close(); + } break; default: @@ -797,7 +800,7 @@ void OpalMediaTransport::InternalStop() { - PTRACE(4, *this << "stopping"); + PTRACE(4, *this << "stopping " << m_subchannels.size() << "subchannels."); LockReadOnly(); for (vector<Transport>::iterator it = m_subchannels.begin(); it != m_subchannels.end(); ++it) it->Close(); @@ -1139,7 +1142,9 @@ PUDPSocket & socket = *GetSubChannelAsSocket((SubChannels)subchannel); PTRACE_CONTEXT_ID_TO(socket); - socket.SetReadTimeout(m_mediaTimeout); + /* Make socket timeout slightly longer (200ms) than media timeout to avoid + a race condition with m_mediaTimer expiring. */ + socket.SetReadTimeout(m_mediaTimeout+200); // Increase internal buffer size on media UDP sockets SetMinBufferSize(socket, SO_RCVBUF, session.GetMediaType() == OpalMediaType::Audio() ? 0x4000 : 0x100000); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-31 11:12:03
|
Revision: 34745 http://sourceforge.net/p/opalvoip/code/34745 Author: rjongbloed Date: 2016-03-31 11:12:01 +0000 (Thu, 31 Mar 2016) Log Message: ----------- Avoid double output of Assert Modified Paths: -------------- ptlib/trunk/src/ptlib/unix/svcproc.cxx Modified: ptlib/trunk/src/ptlib/unix/svcproc.cxx =================================================================== --- ptlib/trunk/src/ptlib/unix/svcproc.cxx 2016-03-31 10:15:56 UTC (rev 34744) +++ ptlib/trunk/src/ptlib/unix/svcproc.cxx 2016-03-31 11:12:01 UTC (rev 34745) @@ -358,6 +358,9 @@ // set flag for console messages if (args.HasOption('c')) { +#if PTRACING + PSetErrorStream(PTrace::GetStream()); +#endif PSystemLog::SetTarget(new PSystemLogToStderr()); m_debugMode = true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-31 10:15:58
|
Revision: 34744 http://sourceforge.net/p/opalvoip/code/34744 Author: rjongbloed Date: 2016-03-31 10:15:56 +0000 (Thu, 31 Mar 2016) Log Message: ----------- Fixed non service process PTLib parameter arguments being correctly passed to the service process itself. Modified Paths: -------------- ptlib/trunk/src/ptlib/unix/svcproc.cxx Modified: ptlib/trunk/src/ptlib/unix/svcproc.cxx =================================================================== --- ptlib/trunk/src/ptlib/unix/svcproc.cxx 2016-03-31 09:20:36 UTC (rev 34743) +++ ptlib/trunk/src/ptlib/unix/svcproc.cxx 2016-03-31 10:15:56 UTC (rev 34744) @@ -432,14 +432,7 @@ bool daemon = args.HasOption('d'); // Remove the service arguments - if (args.GetCount() == 0) - args.SetArgs(""); - else { - PStringArray programArgs(args.GetCount()); - for (PINDEX arg = 0; arg < args.GetCount(); ++arg) - programArgs = args[arg]; - args.SetArgs(programArgs); - } + args.SetArgs(args.GetParameters()); // We are a service, don't want to get blocked on input from stdin during asserts if (!m_debugMode) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-31 09:20:39
|
Revision: 34743 http://sourceforge.net/p/opalvoip/code/34743 Author: rjongbloed Date: 2016-03-31 09:20:36 +0000 (Thu, 31 Mar 2016) Log Message: ----------- Really fixed Linux timeout on addr2line during stack walk. Modified Paths: -------------- ptlib/trunk/src/ptlib/unix/assert.cxx Modified: ptlib/trunk/src/ptlib/unix/assert.cxx =================================================================== --- ptlib/trunk/src/ptlib/unix/assert.cxx 2016-03-30 18:16:21 UTC (rev 34742) +++ ptlib/trunk/src/ptlib/unix/assert.cxx 2016-03-31 09:20:36 UTC (rev 34743) @@ -56,13 +56,22 @@ static bool fgets_nonl(char * buffer, size_t size, FILE * fp) { + int fd = fileno(fp); fd_set rd; FD_ZERO(&rd); - FD_SET(fileno(fp), &rd); + FD_SET(fd, &rd); - P_timeval tv(1); - if (select(1, &rd, NULL, NULL, tv) != 1) - return false; + P_timeval tv(1,0); + switch (select(fd+1, &rd, NULL, NULL, tv)) { + case 1 : + break; + case 0 : + strncpy(buffer, "StackWalk timeout with addr2line", size); + return false; + default : + snprintf(buffer, size, "StackWalk error %d with addr2line", errno); + return false; + } if (fgets(buffer, size, fp) == NULL) return false; @@ -83,8 +92,11 @@ FILE * p = popen("which addr2line", "r"); if (p != NULL) { char line[100]; + line[0] = '\0'; if (fgets_nonl(line, sizeof(line), p) && access(line, R_OK|X_OK) == 0) addr2line = line; + if (addr2line.empty()) + cerr << "Could not locate addr2line: " << line << endl; fclose(p); } @@ -112,7 +124,13 @@ FILE * p = popen(cmd.str().c_str(), "r"); if (p != NULL) { char line[200]; - for (i = skip; i < addressCount && fgets_nonl(line, sizeof(line), p); ++i) { + for (i = skip; i < addressCount; ++i) { + line[0] = '\0'; + if (!fgets_nonl(line, sizeof(line), p)) { + if (line[0] != '\0') + strm << line << '\n'; + break; + } if (strcmp(line, "??:0") != 0) lines[i] = line; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-30 18:16:23
|
Revision: 34742 http://sourceforge.net/p/opalvoip/code/34742 Author: rjongbloed Date: 2016-03-30 18:16:21 +0000 (Wed, 30 Mar 2016) Log Message: ----------- Only redirect stderr in 8nux service process if run as daemon. Modified Paths: -------------- ptlib/trunk/src/ptlib/unix/svcproc.cxx Modified: ptlib/trunk/src/ptlib/unix/svcproc.cxx =================================================================== --- ptlib/trunk/src/ptlib/unix/svcproc.cxx 2016-03-30 18:15:06 UTC (rev 34741) +++ ptlib/trunk/src/ptlib/unix/svcproc.cxx 2016-03-30 18:16:21 UTC (rev 34742) @@ -194,7 +194,6 @@ { PMEMORY_IGNORE_ALLOCATIONS_FOR_SCOPE; - PSetErrorStream(new PSystemLog(PSystemLog::StdError)); #if PTRACING PTrace::SetStream(new PSystemLog(PSystemLog::Debug3)); #if _DEBUG @@ -454,6 +453,8 @@ if (!daemon) return -1; + PSetErrorStream(new PSystemLog(PSystemLog::StdError)); + #if !defined(BE_THREADS) && !defined(P_RTEMS) // Run as a daemon, ie fork This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-30 18:15:08
|
Revision: 34741 http://sourceforge.net/p/opalvoip/code/34741 Author: rjongbloed Date: 2016-03-30 18:15:06 +0000 (Wed, 30 Mar 2016) Log Message: ----------- Fixed Linux assert timeout on addr2line during stack walk. Modified Paths: -------------- ptlib/trunk/src/ptlib/unix/assert.cxx Modified: ptlib/trunk/src/ptlib/unix/assert.cxx =================================================================== --- ptlib/trunk/src/ptlib/unix/assert.cxx 2016-03-30 17:28:02 UTC (rev 34740) +++ ptlib/trunk/src/ptlib/unix/assert.cxx 2016-03-30 18:15:06 UTC (rev 34741) @@ -61,7 +61,7 @@ FD_SET(fileno(fp), &rd); P_timeval tv(1); - if (select(1, &rd, NULL, NULL, tv) != 0) + if (select(1, &rd, NULL, NULL, tv) != 1) return false; if (fgets(buffer, size, fp) == NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-30 17:28:05
|
Revision: 34740 http://sourceforge.net/p/opalvoip/code/34740 Author: rjongbloed Date: 2016-03-30 17:28:02 +0000 (Wed, 30 Mar 2016) Log Message: ----------- Fixed reliable method of getting executable path name on Linux. Modified Paths: -------------- ptlib/trunk/src/ptlib/common/osutils.cxx Modified: ptlib/trunk/src/ptlib/common/osutils.cxx =================================================================== --- ptlib/trunk/src/ptlib/common/osutils.cxx 2016-03-29 11:36:52 UTC (rev 34739) +++ ptlib/trunk/src/ptlib/common/osutils.cxx 2016-03-30 17:28:02 UTC (rev 34740) @@ -2108,8 +2108,9 @@ PAssert(PProcessInstance == NULL, "Only one instance of PProcess allowed"); PProcessInstance = this; + /* Try to get the real image path for this process using platform dependent + code, if this fails, then use the value urigivally set via argv[0] */ #if defined(_WIN32) - // Try to get the real image path for this process TCHAR shortName[_MAX_PATH]; if (GetModuleFileName(GetModuleHandle(NULL), shortName, sizeof(shortName)) > 0) { TCHAR longName[32768]; // Space for long image path @@ -2125,14 +2126,16 @@ if (_NSGetExecutablePath(path, &size) == 0) executableFile = path; #elif defined(P_RTEMS) - cout << "Enter program arguments:\n"; arguments.ReadFrom(cin); #else - // Hope for a /proc, dertainly works for Linux + // Hope for a /proc, certainly works for Linux char path[10000]; - if (readlink("/proc/self/exe", path, sizeof(path)) >= 0) + int len = readlink("/proc/self/exe", path, sizeof(path)); + if (len >= 0) { + path[len] = '\0'; executableFile = path; + } #endif // _WIN32 if (productName.IsEmpty()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-29 11:36:54
|
Revision: 34739 http://sourceforge.net/p/opalvoip/code/34739 Author: rjongbloed Date: 2016-03-29 11:36:52 +0000 (Tue, 29 Mar 2016) Log Message: ----------- Added audio silence frame dtect to OpalShark Modified Paths: -------------- opal/trunk/samples/opalshark/main.cxx Modified: opal/trunk/samples/opalshark/main.cxx =================================================================== --- opal/trunk/samples/opalshark/main.cxx 2016-03-29 09:39:49 UTC (rev 34738) +++ opal/trunk/samples/opalshark/main.cxx 2016-03-29 11:36:52 UTC (rev 34739) @@ -833,10 +833,12 @@ unsigned m_lastSequenceNumber; unsigned m_lastTimestamp; unsigned m_packetNumber; + OpalAudioFormat m_audioFormat; + OpalAudioFormat::FrameDetectorPtr m_audioFrameDetector; - Analyser(wxListCtrl * analysisList, bool video, bool decoded = false) + Analyser(wxListCtrl * analysisList, const OpalMediaFormat & mediaFormat, bool decoded = false) : m_analysisListCtrl(analysisList) - , m_isVideo(video) + , m_isVideo(mediaFormat.GetMediaType() == OpalMediaType::Video()) , m_isDecoded(decoded) , m_firstPacket(true) , m_firstTime(0) @@ -846,6 +848,7 @@ , m_packetNumber(0) { m_analysisListCtrl->DeleteAllItems(); + m_audioFormat = mediaFormat; } @@ -872,12 +875,17 @@ } if (m_isDecoded) { if (intra) - notes << "Key frame"; + notes << "Key frame "; } else { if (m_lastSequenceNumber != UINT_MAX && thisSequenceNumber != (m_lastSequenceNumber + 1)) - notes << "Out of sequence"; + notes << "Out of sequence "; } + + if (m_audioFormat.IsValid() && (m_audioFormat.GetFrameType(data.GetPayloadPtr(), + data.GetPayloadSize(), + m_audioFrameDetector) & OpalAudioFormat::e_SilenceFrame)) + notes << "Silent "; } long pos = m_analysisListCtrl->InsertItem(INT_MAX, wxString() << m_packetNumber); @@ -911,7 +919,7 @@ this, wxPD_CAN_ABORT|wxPD_AUTO_HIDE); - Analyser analysis(m_analysisList, m_discoveredRTP[m_selectedRTP].m_mediaFormat.GetMediaType() == OpalMediaType::Video()); + Analyser analysis(m_analysisList, m_discoveredRTP[m_selectedRTP].m_mediaFormat); while (!m_pcapFile.IsEndOfFile()) { ++analysis.m_packetNumber; @@ -991,7 +999,7 @@ PTime fileStartTime(0); RTP_Timestamp startTimestamp = 0; - Analyser analysis(m_analysisList, true, true); + Analyser analysis(m_analysisList, m_discoveredRTP[m_selectedRTP].m_mediaFormat, true); OpalPCAPFile::DecodeContext decodeContext; while (m_playThreadCtrl != CtlStop && !m_pcapFile.IsEndOfFile()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-29 09:39:51
|
Revision: 34738 http://sourceforge.net/p/opalvoip/code/34738 Author: rjongbloed Date: 2016-03-29 09:39:49 +0000 (Tue, 29 Mar 2016) Log Message: ----------- Adedd OpalAudioFormat::operator=() with RHS as an OpalMediaFormat. Modified Paths: -------------- opal/trunk/include/opal/mediafmt.h opal/trunk/src/opal/mediafmt.cxx Modified: opal/trunk/include/opal/mediafmt.h =================================================================== --- opal/trunk/include/opal/mediafmt.h 2016-03-29 09:23:32 UTC (rev 34737) +++ opal/trunk/include/opal/mediafmt.h 2016-03-29 09:39:49 UTC (rev 34738) @@ -1363,6 +1363,7 @@ friend class OpalMediaFormatInternal; friend class OpalMediaFormatList; + friend class OpalAudioFormat; friend class OpalVideoFormat; }; @@ -1391,6 +1392,8 @@ unsigned channels = 1 ///< Stereo/mono ); + OpalAudioFormat & operator=(const OpalMediaFormat & other); + static const PString & RxFramesPerPacketOption(); static const PString & TxFramesPerPacketOption(); static const PString & MaxFramesPerPacketOption(); Modified: opal/trunk/src/opal/mediafmt.cxx =================================================================== --- opal/trunk/src/opal/mediafmt.cxx 2016-03-29 09:23:32 UTC (rev 34737) +++ opal/trunk/src/opal/mediafmt.cxx 2016-03-29 09:39:49 UTC (rev 34738) @@ -1796,6 +1796,16 @@ } +OpalAudioFormat & OpalAudioFormat::operator=(const OpalMediaFormat & other) +{ + if (dynamic_cast<OpalAudioFormatInternal *>(other.m_info) != NULL) + OpalMediaFormat::operator=(other); + else + OpalMediaFormat::operator=(OpalMediaFormat()); + return *this; +} + + OpalAudioFormatInternal::OpalAudioFormatInternal(const char * fullName, RTP_DataFrame::PayloadTypes rtpPayloadType, const char * encodingName, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-29 09:23:35
|
Revision: 34737 http://sourceforge.net/p/opalvoip/code/34737 Author: rjongbloed Date: 2016-03-29 09:23:32 +0000 (Tue, 29 Mar 2016) Log Message: ----------- Changed gatekeeper start delay algorithm so can be shut down. Modified Paths: -------------- opal/trunk/include/h323/h323ep.h opal/trunk/src/h323/gkclient.cxx Modified: opal/trunk/include/h323/h323ep.h =================================================================== --- opal/trunk/include/h323/h323ep.h 2016-03-29 07:53:10 UTC (rev 34736) +++ opal/trunk/include/h323/h323ep.h 2016-03-29 09:23:32 UTC (rev 34737) @@ -1369,7 +1369,7 @@ void SetLocalUserName(const PString & name) { return SetDefaultLocalPartyName(name); } const PString & GetLocalUserName() const { return GetDefaultLocalPartyName(); } - void InternalDelayGatekeeperDiscovery(); + PTimeInterval InternalGetGatekeeperStartDelay(); protected: bool InternalStartGatekeeper(const H323TransportAddress & remoteAddress, const PString & localAddress); Modified: opal/trunk/src/h323/gkclient.cxx =================================================================== --- opal/trunk/src/h323/gkclient.cxx 2016-03-29 07:53:10 UTC (rev 34736) +++ opal/trunk/src/h323/gkclient.cxx 2016-03-29 09:23:32 UTC (rev 34737) @@ -264,25 +264,38 @@ } -void H323EndPoint::InternalDelayGatekeeperDiscovery() +PTimeInterval H323EndPoint::InternalGetGatekeeperStartDelay() { if (m_gatekeeperStartDelay == 0) - return; + return m_gatekeeperStartDelay; + PTimeInterval delay; + + m_delayGatekeeperMutex.Wait(); + if (m_lastGatekeeperDiscovery.IsValid()) { PTimeInterval elapsed = m_lastGatekeeperDiscovery.GetElapsed(); if (elapsed < m_gatekeeperStartDelay) - PThread::Sleep(m_gatekeeperStartDelay - elapsed); + delay = m_gatekeeperStartDelay - elapsed; } m_lastGatekeeperDiscovery.SetCurrentTime(); + + m_delayGatekeeperMutex.Signal(); + + return delay; } bool H323Gatekeeper::DiscoverGatekeeper() { discoveryComplete = false; - endpoint.InternalDelayGatekeeperDiscovery(); + PSimpleTimer delay(endpoint.InternalGetGatekeeperStartDelay()); + while (delay.IsRunning()) { + if (!m_monitorRunning) + return false; + m_monitorTickle.Wait(delay.GetRemaining()); + } for (;;) { H323RasPDU pdu; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-29 07:53:13
|
Revision: 34736 http://sourceforge.net/p/opalvoip/code/34736 Author: rjongbloed Date: 2016-03-29 07:53:10 +0000 (Tue, 29 Mar 2016) Log Message: ----------- Merged revision(s) 34735 from opal/trunk: Fixed race condition in OpenPhone with async notifiers and shut down. Modified Paths: -------------- opal/branches/v3_16/samples/openphone/main.cxx Property Changed: ---------------- opal/branches/v3_16/ Index: opal/branches/v3_16 =================================================================== --- opal/branches/v3_16 2016-03-29 07:51:36 UTC (rev 34735) +++ opal/branches/v3_16 2016-03-29 07:53:10 UTC (rev 34736) Property changes on: opal/branches/v3_16 ___________________________________________________________________ Modified: svn:mergeinfo ## -14,6 +14,6 ## /opal/branches/v3_4:21060,21062,21088,21092,21111,21113,21115,21119,21143,21148,21151-21152,21155,21158,21184,21188,21253,21265-21266,21283-21284,21298,21300,21303,21307,21309,21311,21327,21331,21333,21359,21367,21369,21488,21556,21564-21565,21568,21570,21620,21625,21631,21748,21751,21756,21759,21761,21767,21770,22246,23044,23140,23143,23286 /opal/branches/v3_6:22169,22178,22184,22186,22197,22204,22216,22251,22253,22255,22258,22260,22291,22296,22300,22306,22308,22313,22319,22336,22353,22358,22436,22447,22449,22497,22511,22517,22519-22521,22527,22536,22538,22589,22596,22599,22617,22620,22622,22630,22640,22655,22675,22682,22726-22728,22730,22733,22738,22745-22746,22800,22820-22821,22842,22844-22845,22851,22853,22889,22896,22902,22904,22906,22918,22924,22928,22946,22965,22967,22976,22978,22980,22982,22994,23028,23123,23125-23126,23128,23157,23165,23173,23175,23183,23294,23341,23465,23467,23474,23521,23829,24346,24809 /opal/branches/v3_8:24025,24027,24029,24036,24038,24040,24042,24048,24050,24058,24061,24068,24071,24074,24076,24080,24082,24086-24087,24092,24099,24101,24105,24107,24109,24111,24114,24116-24117,24120-24121,24125,24127,24130,24132,24134,24138,24140,24144,24146,24148,24150-24151,24154,24156,24158,24162,24170,24218,24245,24257,24261,24340,24362-24363,24365,24369,24373,24422,24440,24442,24447,24489,24504,24506,24532,24536,24545,24547,24552,24554,24614,24678,24687,24699,24705,24775,24833,24861,24903,25146 -/opal/trunk:34112-34116,34118-34120,34122,34137-34139,34155-34156,34161-34165,34168,34170,34173,34177,34187-34190,34208,34218,34222,34237-34238,34246-34252,34269-34271,34281-34288,34297,34300,34303-34316,34333,34346,34365,34375,34377,34382-34384,34390,34393-34394,34399,34417-34421,34424,34430,34432,34435-34437,34440,34442,34455-34456,34480,34483-34484,34487-34488,34490-34491,34502-34503,34506,34588-34589 +/opal/trunk:34112-34116,34118-34120,34122,34137-34139,34155-34156,34161-34165,34168,34170,34173,34177,34187-34190,34208,34218,34222,34237-34238,34246-34252,34269-34271,34281-34288,34297,34300,34303-34316,34333,34346,34365,34375,34377,34382-34384,34390,34393-34394,34399,34417-34421,34424,34430,34432,34435-34437,34440,34442,34455-34456,34480,34483-34484,34487-34488,34490-34491,34502-34503,34506,34588-34589,34735 /ptlib/branches/v2_8:24136 /ptlib/trunk:20820 \ No newline at end of property Modified: opal/branches/v3_16/samples/openphone/main.cxx =================================================================== --- opal/branches/v3_16/samples/openphone/main.cxx 2016-03-29 07:51:36 UTC (rev 34735) +++ opal/branches/v3_16/samples/openphone/main.cxx 2016-03-29 07:53:10 UTC (rev 34736) @@ -852,6 +852,9 @@ MyManager::~MyManager() { + while (AsyncNotifierExecute()) + ; + TextCtrlChannel::SetFrame(NULL); ShutDownEndpoints(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-29 07:51:39
|
Revision: 34735 http://sourceforge.net/p/opalvoip/code/34735 Author: rjongbloed Date: 2016-03-29 07:51:36 +0000 (Tue, 29 Mar 2016) Log Message: ----------- Fixed race condition in OpenPhone with async notifiers and shut down. Modified Paths: -------------- opal/trunk/samples/openphone/main.cxx Modified: opal/trunk/samples/openphone/main.cxx =================================================================== --- opal/trunk/samples/openphone/main.cxx 2016-03-29 07:49:54 UTC (rev 34734) +++ opal/trunk/samples/openphone/main.cxx 2016-03-29 07:51:36 UTC (rev 34735) @@ -857,6 +857,9 @@ MyManager::~MyManager() { + while (AsyncNotifierExecute()) + ; + TextCtrlChannel::SetFrame(NULL); ShutDownEndpoints(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-29 07:49:56
|
Revision: 34734 http://sourceforge.net/p/opalvoip/code/34734 Author: rjongbloed Date: 2016-03-29 07:49:54 +0000 (Tue, 29 Mar 2016) Log Message: ----------- FIxed copy/paste errors in gatekeeper start delay time. Modified Paths: -------------- opal/trunk/include/h323/h323ep.h opal/trunk/samples/server/h323serv.cxx Modified: opal/trunk/include/h323/h323ep.h =================================================================== --- opal/trunk/include/h323/h323ep.h 2016-03-28 17:45:53 UTC (rev 34733) +++ opal/trunk/include/h323/h323ep.h 2016-03-29 07:49:54 UTC (rev 34734) @@ -1262,7 +1262,7 @@ This is used to slow down registrations when many aliases are used, and the gatekeeper does not support multiple aliases in on GRQ/RRQ. */ - void SetGatekeeperStartDelay(const PTimeInterval & ttl) { registrationTimeToLive = ttl; } + void SetGatekeeperStartDelay(const PTimeInterval & gatekeeperStartDelay) { m_gatekeeperStartDelay = gatekeeperStartDelay; } /**Get the iNow Gatekeeper Access Token OID. */ Modified: opal/trunk/samples/server/h323serv.cxx =================================================================== --- opal/trunk/samples/server/h323serv.cxx 2016-03-28 17:45:53 UTC (rev 34733) +++ opal/trunk/samples/server/h323serv.cxx 2016-03-29 07:49:54 UTC (rev 34734) @@ -216,7 +216,7 @@ 1, H323EndPoint::MaxGatekeeperAliasLimit, GetGatekeeperAliasLimit(), NULL, "Compatibility issue with some gatekeepers not being able to register large numbers of aliases in single RRQ.")); - SetGatekeeperTimeToLive(rsrc->AddIntegerField(GatekeeperRegistrationDelayKey, + SetGatekeeperStartDelay(rsrc->AddIntegerField(GatekeeperRegistrationDelayKey, 0, 10000, GetGatekeeperStartDelay().GetSeconds(), "milliseconds", "Delay the GRQ messages to reduce the load on the remote gatekeeper.")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-28 17:45:55
|
Revision: 34733 http://sourceforge.net/p/opalvoip/code/34733 Author: rjongbloed Date: 2016-03-28 17:45:53 +0000 (Mon, 28 Mar 2016) Log Message: ----------- Fixed compile Modified Paths: -------------- opal/trunk/samples/playrtp/main.cxx Modified: opal/trunk/samples/playrtp/main.cxx =================================================================== --- opal/trunk/samples/playrtp/main.cxx 2016-03-28 17:42:16 UTC (rev 34732) +++ opal/trunk/samples/playrtp/main.cxx 2016-03-28 17:45:53 UTC (rev 34733) @@ -637,7 +637,7 @@ else { int extendedHeight = frame->height + m_extraHeight; extendedData.CopyHeader(data); - extendedData.SetPayloadSize(sizeof(OpalVideoTranscoder::FrameHeader) + PVideoFrameInfo::CalculateFrameBytes(frame->width, extendedHeight))); + extendedData.SetPayloadSize(sizeof(OpalVideoTranscoder::FrameHeader) + PVideoFrameInfo::CalculateFrameBytes(frame->width, extendedHeight)); OpalVideoTranscoder::FrameHeader * extendedFrame = (OpalVideoTranscoder::FrameHeader *)extendedData.GetPayloadPtr(); *extendedFrame = *frame; extendedFrame->height = extendedHeight; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-28 17:42:18
|
Revision: 34732 http://sourceforge.net/p/opalvoip/code/34732 Author: rjongbloed Date: 2016-03-28 17:42:16 +0000 (Mon, 28 Mar 2016) Log Message: ----------- Fixed compile Modified Paths: -------------- opal/trunk/src/h323/h323ep.cxx Modified: opal/trunk/src/h323/h323ep.cxx =================================================================== --- opal/trunk/src/h323/h323ep.cxx 2016-03-28 17:41:38 UTC (rev 34731) +++ opal/trunk/src/h323/h323ep.cxx 2016-03-28 17:42:16 UTC (rev 34732) @@ -99,7 +99,7 @@ , registrationTimeToLive(0, 0, 10) // Minutes , m_sendGRQ(true) , m_oneSignalAddressInRRQ(true) - , m_discoverGatekeeperRequestTime(0) + , m_lastGatekeeperDiscovery(0) , callTransferT1(0,10) // Seconds , callTransferT2(0,10) // Seconds , callTransferT3(0,10) // Seconds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-28 17:41:40
|
Revision: 34731 http://sourceforge.net/p/opalvoip/code/34731 Author: rjongbloed Date: 2016-03-28 17:41:38 +0000 (Mon, 28 Mar 2016) Log Message: ----------- Added delay to slow down discovery/registration of a large number of aliases when gatekeeper does not support doing so in a single GRQ/RRQ. Modified Paths: -------------- opal/trunk/include/h323/h323ep.h opal/trunk/samples/server/h323serv.cxx opal/trunk/src/h323/gkclient.cxx opal/trunk/src/h323/h323ep.cxx Modified: opal/trunk/include/h323/h323ep.h =================================================================== --- opal/trunk/include/h323/h323ep.h 2016-03-28 16:54:00 UTC (rev 34730) +++ opal/trunk/include/h323/h323ep.h 2016-03-28 17:41:38 UTC (rev 34731) @@ -1252,6 +1252,18 @@ */ void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; } + /**Get the default time for gatekeeper registration delay. + This is used to slow down registrations when many aliases are used, and the + gatekeeper does not support multiple aliases in on GRQ/RRQ. + */ + const PTimeInterval & GetGatekeeperStartDelay() const { return m_gatekeeperStartDelay; } + + /**Set the default time for gatekeeper registration delay. + This is used to slow down registrations when many aliases are used, and the + gatekeeper does not support multiple aliases in on GRQ/RRQ. + */ + void SetGatekeeperStartDelay(const PTimeInterval & ttl) { registrationTimeToLive = ttl; } + /**Get the iNow Gatekeeper Access Token OID. */ const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; } @@ -1357,6 +1369,8 @@ void SetLocalUserName(const PString & name) { return SetDefaultLocalPartyName(name); } const PString & GetLocalUserName() const { return GetDefaultLocalPartyName(); } + void InternalDelayGatekeeperDiscovery(); + protected: bool InternalStartGatekeeper(const H323TransportAddress & remoteAddress, const PString & localAddress); bool InternalRestartGatekeeper(bool adjustingRegistrations = true); @@ -1415,10 +1429,13 @@ PTimeInterval rasRequestTimeout; unsigned rasRequestRetries; PTimeInterval registrationTimeToLive; + PTimeInterval m_gatekeeperStartDelay; PString gkAccessTokenOID; bool m_sendGRQ; bool m_oneSignalAddressInRRQ; + PTime m_lastGatekeeperDiscovery; + PMutex m_delayGatekeeperMutex; /* Protect against absence of a response to the ctIdentify reqest (Transferring Endpoint - Call Transfer with a secondary Call) */ Modified: opal/trunk/samples/server/h323serv.cxx =================================================================== --- opal/trunk/samples/server/h323serv.cxx 2016-03-28 16:54:00 UTC (rev 34730) +++ opal/trunk/samples/server/h323serv.cxx 2016-03-28 17:41:38 UTC (rev 34731) @@ -42,6 +42,7 @@ static const char GatekeeperTokenOIDKey[] = "Remote Gatekeeper Token OID"; static const char GatekeeperTimeToLiveKey[] = "Remote Gatekeeper Time To Live"; static const char GatekeeperAliasLimitKey[] = "Remote Gatekeeper Alias Limit"; +static const char GatekeeperRegistrationDelayKey[] = "Remote Gatekeeper Registration Delay"; static const char GatekeeperSimulatePatternKey[] = "Remote Gatekeeper Simulate Pattern"; static const char GatekeeperRasRedirectKey[] = "Remote Gatekeeper RAS Redirect"; @@ -215,6 +216,10 @@ 1, H323EndPoint::MaxGatekeeperAliasLimit, GetGatekeeperAliasLimit(), NULL, "Compatibility issue with some gatekeepers not being able to register large numbers of aliases in single RRQ.")); + SetGatekeeperTimeToLive(rsrc->AddIntegerField(GatekeeperRegistrationDelayKey, + 0, 10000, GetGatekeeperStartDelay().GetSeconds(), "milliseconds", + "Delay the GRQ messages to reduce the load on the remote gatekeeper.")); + SetGatekeeperSimulatePattern(rsrc->AddBooleanField(GatekeeperSimulatePatternKey, GetGatekeeperSimulatePattern(), "Compatibility issue with some gatekeepers not supporting alias patterns, generate separate aliases for ranges.")); Modified: opal/trunk/src/h323/gkclient.cxx =================================================================== --- opal/trunk/src/h323/gkclient.cxx 2016-03-28 16:54:00 UTC (rev 34730) +++ opal/trunk/src/h323/gkclient.cxx 2016-03-28 17:41:38 UTC (rev 34731) @@ -264,10 +264,26 @@ } +void H323EndPoint::InternalDelayGatekeeperDiscovery() +{ + if (m_gatekeeperStartDelay == 0) + return; + + if (m_lastGatekeeperDiscovery.IsValid()) { + PTimeInterval elapsed = m_lastGatekeeperDiscovery.GetElapsed(); + if (elapsed < m_gatekeeperStartDelay) + PThread::Sleep(m_gatekeeperStartDelay - elapsed); + } + + m_lastGatekeeperDiscovery.SetCurrentTime(); +} + bool H323Gatekeeper::DiscoverGatekeeper() { discoveryComplete = false; + endpoint.InternalDelayGatekeeperDiscovery(); + for (;;) { H323RasPDU pdu; Request request(SetupGatekeeperRequest(pdu), pdu); Modified: opal/trunk/src/h323/h323ep.cxx =================================================================== --- opal/trunk/src/h323/h323ep.cxx 2016-03-28 16:54:00 UTC (rev 34730) +++ opal/trunk/src/h323/h323ep.cxx 2016-03-28 17:41:38 UTC (rev 34731) @@ -99,6 +99,7 @@ , registrationTimeToLive(0, 0, 10) // Minutes , m_sendGRQ(true) , m_oneSignalAddressInRRQ(true) + , m_discoverGatekeeperRequestTime(0) , callTransferT1(0,10) // Seconds , callTransferT2(0,10) // Seconds , callTransferT3(0,10) // Seconds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-28 16:54:02
|
Revision: 34730 http://sourceforge.net/p/opalvoip/code/34730 Author: rjongbloed Date: 2016-03-28 16:54:00 +0000 (Mon, 28 Mar 2016) Log Message: ----------- Added ability to set remote gatekeeper time to live for OPAL server. Modified Paths: -------------- opal/trunk/samples/server/h323serv.cxx Modified: opal/trunk/samples/server/h323serv.cxx =================================================================== --- opal/trunk/samples/server/h323serv.cxx 2016-03-28 16:48:20 UTC (rev 34729) +++ opal/trunk/samples/server/h323serv.cxx 2016-03-28 16:54:00 UTC (rev 34730) @@ -40,6 +40,7 @@ static const char GatekeeperInterfaceKey[] = "Remote Gatekeeper Interface"; static const char GatekeeperPasswordKey[] = "Remote Gatekeeper Password"; static const char GatekeeperTokenOIDKey[] = "Remote Gatekeeper Token OID"; +static const char GatekeeperTimeToLiveKey[] = "Remote Gatekeeper Time To Live"; static const char GatekeeperAliasLimitKey[] = "Remote Gatekeeper Alias Limit"; static const char GatekeeperSimulatePatternKey[] = "Remote Gatekeeper Simulate Pattern"; static const char GatekeeperRasRedirectKey[] = "Remote Gatekeeper RAS Redirect"; @@ -206,6 +207,10 @@ SetGkAccessTokenOID(rsrc->AddStringField(GatekeeperTokenOIDKey, 0, GetGkAccessTokenOID(), "Gatekeeper access token OID for H.235 support", 1, 30)); + SetGatekeeperTimeToLive(PTimeInterval(0,rsrc->AddIntegerField(GatekeeperTimeToLiveKey, + 10, 24*60*60, GetGatekeeperTimeToLive().GetSeconds(), "seconds", + "Time to Live for gatekeeper re-registration."))); + SetGatekeeperAliasLimit(rsrc->AddIntegerField(GatekeeperAliasLimitKey, 1, H323EndPoint::MaxGatekeeperAliasLimit, GetGatekeeperAliasLimit(), NULL, "Compatibility issue with some gatekeepers not being able to register large numbers of aliases in single RRQ.")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-28 16:48:23
|
Revision: 34729 http://sourceforge.net/p/opalvoip/code/34729 Author: rjongbloed Date: 2016-03-28 16:48:20 +0000 (Mon, 28 Mar 2016) Log Message: ----------- Merged revision(s) 34701-34728 from opal/branches/v3_16: --------------------- r34726 Small change to assure SIP INVITE has registered username in Contact field in some pathological conditions. --------------------- r34725 Tried to make sure RRFC 2833 codec (aka "telephone-event") uses payload type 101. Extra debugging added to figure out why it is not doing so, if attempted fix does not work. --------------------- r34724 Plugged race condition where after receiving a BYE and sending 200, we try and send another BYE. THis is mostly cosmetic, and it should be noted this behaviour can still happen, as there is an "over the wire" race condition which the protocol is designed to deal with. --------------------- r34723 Added "Refer-To" data to OnTransfterNotify() call back, so application does not have to keep track of who the transfer is being made to. Revision Links: -------------- http://sourceforge.net/p/opalvoip/code/34726 http://sourceforge.net/p/opalvoip/code/34725 http://sourceforge.net/p/opalvoip/code/34724 http://sourceforge.net/p/opalvoip/code/34723 Modified Paths: -------------- opal/trunk/include/sip/sipcon.h opal/trunk/src/codec/opalpluginmgr.cxx opal/trunk/src/opal/mediafmt.cxx opal/trunk/src/sip/sipcon.cxx opal/trunk/src/sip/sipep.cxx Property Changed: ---------------- opal/trunk/ Index: opal/trunk =================================================================== --- opal/trunk 2016-03-28 16:46:34 UTC (rev 34728) +++ opal/trunk 2016-03-28 16:48:20 UTC (rev 34729) Property changes on: opal/trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -10,7 +10,7 ## /opal/branches/v3_10:25182-29485,30896,32927-32928,32933 /opal/branches/v3_12:28489-31709 /opal/branches/v3_14:31505-33613 -/opal/branches/v3_16:34090-34700 +/opal/branches/v3_16:34090-34728 /opal/branches/v3_2:21143,21220,21227,21253,21455 /opal/branches/v3_4:21060,21062,21088,21092,21111,21113,21115,21119,21143,21148,21151-21152,21155,21158,21184,21188,21253,21265-21266,21283-21284,21298,21300,21303,21307,21309,21311,21327,21331,21333,21359,21367,21369,21488,21556,21564-21565,21568,21570,21620,21625,21631,21748,21751,21756,21759,21761,21767,21770,22246,23044,23140,23143,23286 /opal/branches/v3_6:22169,22178,22184,22186,22197,22204,22216,22251,22253,22255,22258,22260,22291,22296,22300,22306,22308,22313,22319,22336,22353,22358,22436,22447,22449,22497,22511,22517,22519-22521,22527,22536,22538,22589,22596,22599,22617,22620,22622,22630,22640,22655,22675,22682,22726-22728,22730,22733,22738,22745-22746,22800,22820-22821,22842,22844-22845,22851,22853,22889,22896,22902,22904,22906,22918,22924,22928,22946,22965,22967,22976,22978,22980,22982,22994,23028,23123,23125-23126,23128,23157,23165,23173,23175,23183,23294,23341,23465,23467,23474,23521,23829,24346,24809 \ No newline at end of property Modified: opal/trunk/include/sip/sipcon.h =================================================================== --- opal/trunk/include/sip/sipcon.h 2016-03-28 16:46:34 UTC (rev 34728) +++ opal/trunk/include/sip/sipcon.h 2016-03-28 16:48:20 UTC (rev 34729) @@ -760,6 +760,7 @@ bool m_referOfRemoteInProgress; PoolTimer m_delayedReferTimer; SIPURL m_delayedReferTo; + SIPURL m_sentReferTo; PSafeList<SIPTransaction> m_forkedInvitations; // Not for re-INVITE PSafeList<SIPTransaction> m_pendingInvitations; // For re-INVITE Modified: opal/trunk/src/codec/opalpluginmgr.cxx =================================================================== --- opal/trunk/src/codec/opalpluginmgr.cxx 2016-03-28 16:46:34 UTC (rev 34728) +++ opal/trunk/src/codec/opalpluginmgr.cxx 2016-03-28 16:48:20 UTC (rev 34729) @@ -1743,6 +1743,9 @@ GetOpalYUV420P(); #endif + // Make sure "telephone-event" payload type allocated + GetOpalRFC2833(); + for (unsigned i = 0; i < count; i++,codecDefn++) { #if PTRACING OpalPluginControl setLogFn(codecDefn, PLUGINCODEC_CONTROL_SET_LOG_FUNCTION); Modified: opal/trunk/src/opal/mediafmt.cxx =================================================================== --- opal/trunk/src/opal/mediafmt.cxx 2016-03-28 16:46:34 UTC (rev 34728) +++ opal/trunk/src/opal/mediafmt.cxx 2016-03-28 16:48:20 UTC (rev 34729) @@ -1313,10 +1313,14 @@ // If we had a conflict we change the older one, as it is assumed that the // application really wanted that value and internal OPAL ones can move - if (conflictingFormat != NULL) + if (conflictingFormat == NULL) + rtpPayloadType = (RTP_DataFrame::PayloadTypes)nextUnused; + else { + PTRACE(3, "Conflicting payload type: " + << *conflictingFormat << " moved to " << nextUnused + << " as " << fullName << " requires " << rtpPayloadType); conflictingFormat->SetPayloadType((RTP_DataFrame::PayloadTypes)nextUnused); - else - rtpPayloadType = (RTP_DataFrame::PayloadTypes)nextUnused; + } } Modified: opal/trunk/src/sip/sipcon.cxx =================================================================== --- opal/trunk/src/sip/sipcon.cxx 2016-03-28 16:46:34 UTC (rev 34728) +++ opal/trunk/src/sip/sipcon.cxx 2016-03-28 16:48:20 UTC (rev 34729) @@ -333,6 +333,7 @@ PStringToString info; info.SetAt("result", "blind"); info.SetAt("party", "B"); + info.SetAt("Refer-To", m_sentReferTo); OnTransferNotify(info, this); } @@ -496,10 +497,10 @@ // Check for valid RFC2396 scheme if (!PURL::ExtractScheme(remoteParty).IsEmpty()) { - SIPURL referTo(remoteParty); - referTo.Sanitise(SIPURL::RedirectURI); - PTRACE(3, "Blind transfer of " << *this << " to " << referTo << ", referSubMode=" << referSubMode); - SIPRefer * referTransaction = new SIPRefer(*this, referTo, m_dialog.GetLocalURI(), referSubMode); + m_sentReferTo = remoteParty; + m_sentReferTo.Sanitise(SIPURL::RedirectURI); + PTRACE(3, "Blind transfer of " << *this << " to " << m_sentReferTo << ", referSubMode=" << referSubMode); + SIPRefer * referTransaction = new SIPRefer(*this, m_sentReferTo, m_dialog.GetLocalURI(), referSubMode); m_referOfRemoteInProgress = referTransaction->Start(); return m_referOfRemoteInProgress; } @@ -530,18 +531,18 @@ what they told us to use. They can't do the REFER without a username part, but they never gave us a username to give them. Give me a break! */ - SIPURL referTo = sip->GetRemotePartyURL(); - referTo.Sanitise(SIPURL::RedirectURI); - if (remoteProductInfo.name == "Avaya" && referTo.GetUserName().IsEmpty()) - referTo.SetUserName("anonymous"); + m_sentReferTo = sip->GetRemotePartyURL(); + m_sentReferTo.Sanitise(SIPURL::RedirectURI); + if (remoteProductInfo.name == "Avaya" && m_sentReferTo.GetUserName().IsEmpty()) + m_sentReferTo.SetUserName("anonymous"); PStringStream id; id << sip->GetDialog().GetCallID() << ";to-tag=" << sip->GetDialog().GetRemoteTag() << ";from-tag=" << sip->GetDialog().GetLocalTag(); - referTo.SetQueryVar("Replaces", id); + m_sentReferTo.SetQueryVar("Replaces", id); - SIPRefer * referTransaction = new SIPRefer(*this, referTo, m_dialog.GetLocalURI(), referSubMode); + SIPRefer * referTransaction = new SIPRefer(*this, m_sentReferTo, m_dialog.GetLocalURI(), referSubMode); referTransaction->GetMIME().AddSupported("replaces"); m_referOfRemoteInProgress = referTransaction->Start(); return m_referOfRemoteInProgress; @@ -1882,6 +1883,7 @@ PStringToString info; info.SetAt("result", "error"); info.SetAt("party", "B"); + info.SetAt("Refer-To", m_sentReferTo); info.SetAt("code", psprintf("%u", response.GetStatusCode())); OnTransferNotify(info, this); } @@ -2384,14 +2386,14 @@ if (m_ciscoRemotePartyID == newRemotePartyID) { // We did a REFER but remote address did not change party-ID info.SetAt("result", "failed"); - info.SetAt("party", "B"); } else { // We did a REFER and remote address did change party-ID info.SetAt("result", "success"); - info.SetAt("party", "B"); info.SetAt("Remote-Party", newRemotePartyID.AsString()); } + info.SetAt("party", "B"); + info.SetAt("Refer-To", m_sentReferTo); OnTransferNotify(info, this); } else if (m_ciscoRemotePartyID == newRemotePartyID) @@ -2530,6 +2532,7 @@ PCaselessString state = mime.GetSubscriptionState(info); m_referOfRemoteInProgress = state != "terminated"; info.SetAt("party", "B"); // We are B party in consultation transfer + info.SetAt("Refer-To", m_sentReferTo); info.SetAt("state", state); info.SetAt("code", psprintf("%u", code)); info.SetAt("result", m_referOfRemoteInProgress ? "progress" : (code < 300 ? "success" : "failed")); @@ -2671,12 +2674,13 @@ SIPTransaction * response = new SIPResponse(GetEndPoint(), request, SIP_PDU::Successful_OK); response->Send(); + + releaseMethod = ReleaseWithNothing; if (IsReleased()) { PTRACE(2, "Already released " << *this); return; } - releaseMethod = ReleaseWithNothing; m_dialog.Update(request); UpdateRemoteAddresses(); @@ -2899,6 +2903,7 @@ PStringToString info; info.SetAt("result", "blind"); info.SetAt("party", "B"); + info.SetAt("Refer-To", m_sentReferTo); OnTransferNotify(info, this); Release(OpalConnection::EndedByCallForwarded); Modified: opal/trunk/src/sip/sipep.cxx =================================================================== --- opal/trunk/src/sip/sipep.cxx 2016-03-28 16:46:34 UTC (rev 34728) +++ opal/trunk/src/sip/sipep.cxx 2016-03-28 16:48:20 UTC (rev 34729) @@ -2208,6 +2208,26 @@ PTRACE(4, "No registrar for aor sip:" << user << '@' << domain); } + if (isMethod && registrar != NULL) { + if (!mime.Has("Route")) { + if (!pdu.SetRoute(registrar->GetServiceRoute())) + pdu.SetRoute(registrar->GetProxy()); + } + + // For many servers the From address must be address-of-record, but don't touch if dialog already done + if (connection == NULL || !connection->GetDialog().IsEstablished()) { + PStringToString fieldParams = from.GetFieldParameters(); + from = registrar->GetAddressOfRecord(); + from.GetFieldParameters() = fieldParams; + if (connection != NULL) + from.SetDisplayName(connection->GetDisplayName()); + from.Sanitise(SIPURL::FromURI); + mime.SetFrom(from); + PTRACE(4, "Adjusted 'From' to " << from << " from registered user."); + user = from.GetUserName(); + } + } + if (!mime.Has("Contact") && pdu.GetStatusCode() != SIP_PDU::Information_Trying) { OpalTransportAddress remoteAddress = pdu.GetURI().GetTransportAddress(); SIPURL contact; @@ -2248,25 +2268,6 @@ contact.Sanitise(SIPURL::ContactURI); mime.SetContact(contact.AsQuotedString()); } - - if (isMethod && registrar != NULL) { - if (!mime.Has("Route")) { - if (!pdu.SetRoute(registrar->GetServiceRoute())) - pdu.SetRoute(registrar->GetProxy()); - } - - // For many servers the From address must be address-of-record, but don't touch if dialog already done - if (connection == NULL || !connection->GetDialog().IsEstablished()) { - PStringToString fieldParams = from.GetFieldParameters(); - from = registrar->GetAddressOfRecord(); - from.GetFieldParameters() = fieldParams; - if (connection != NULL) - from.SetDisplayName(connection->GetDisplayName()); - from.Sanitise(SIPURL::FromURI); - mime.SetFrom(from); - PTRACE(4, "Adjusted 'From' to " << from << " from registered user."); - } - } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-28 16:46:37
|
Revision: 34728 http://sourceforge.net/p/opalvoip/code/34728 Author: rjongbloed Date: 2016-03-28 16:46:34 +0000 (Mon, 28 Mar 2016) Log Message: ----------- Merged revision(s) 34697-34727 from ptlib/branches/v2_16: Fixed compile error on older V8 API. Modified Paths: -------------- ptlib/trunk/src/ptclib/jscript.cxx Property Changed: ---------------- ptlib/trunk/ Index: ptlib/trunk =================================================================== --- ptlib/trunk 2016-03-28 16:33:47 UTC (rev 34727) +++ ptlib/trunk 2016-03-28 16:46:34 UTC (rev 34728) Property changes on: ptlib/trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -6,7 +6,7 ## /ptlib/branches/v2_10:25177-29189,32921,32947 /ptlib/branches/v2_12:28485-31603 /ptlib/branches/v2_14:31501-33720 -/ptlib/branches/v2_16:34085-34696 +/ptlib/branches/v2_16:34085-34727 /ptlib/branches/v2_2:20746,20791,20827,22014,22942 /ptlib/branches/v2_4:21086,21094,21147,21160,21185,21281,21296,21305,21322,21337,21363,21467,21471-21472,21506,21508,21623,21695,21744,21746,21763,22241,22958,23045-23046,23061,23066,23712 /ptlib/branches/v2_6:22195,22243,22295,22304,22311,22317,22320,22356,22458,22509,22587,22601-22602,22611,22629,22633,22673,22681,22729,22731-22732,22736,22742,22848,22960,22992,23161,23163,23167,23169,23177,23239,23291,23298,23336,23429,23595,23823,23827,23873,24816 \ No newline at end of property Modified: ptlib/trunk/src/ptclib/jscript.cxx =================================================================== --- ptlib/trunk/src/ptclib/jscript.cxx 2016-03-28 16:33:47 UTC (rev 34727) +++ ptlib/trunk/src/ptclib/jscript.cxx 2016-03-28 16:46:34 UTC (rev 34728) @@ -440,7 +440,11 @@ case PVarType::VarStaticBinary: case PVarType::VarDynamicBinary: default: +#if P_V8_API > 1 value = v8::Object::New(m_isolate); +#else + value = v8::Object::New(); +#endif break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-03-28 16:33:49
|
Revision: 34727 http://sourceforge.net/p/opalvoip/code/34727 Author: rjongbloed Date: 2016-03-28 16:33:47 +0000 (Mon, 28 Mar 2016) Log Message: ----------- Fixed compile error on older V8 API. Modified Paths: -------------- ptlib/branches/v2_16/src/ptclib/jscript.cxx Modified: ptlib/branches/v2_16/src/ptclib/jscript.cxx =================================================================== --- ptlib/branches/v2_16/src/ptclib/jscript.cxx 2016-03-28 15:45:49 UTC (rev 34726) +++ ptlib/branches/v2_16/src/ptclib/jscript.cxx 2016-03-28 16:33:47 UTC (rev 34727) @@ -440,7 +440,11 @@ case PVarType::VarStaticBinary: case PVarType::VarDynamicBinary: default: +#if P_V8_API > 1 value = v8::Object::New(m_isolate); +#else + value = v8::Object::New(); +#endif break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |