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.
|