Revision: 7485
Author: vladimir.ralev
Date: Tue Aug 18 22:47:14 2009
Log: More fixes for Issue 880
http://code.google.com/p/mobicents/source/detail?r=7485
Modified:
/trunk/servers/sip-servlets/sip-servlets-impl/src/main/java/org/mobicents/servlet/sip/proxy/ProxyBranchImpl.java
/trunk/servers/sip-servlets/sip-servlets-impl/src/main/java/org/mobicents/servlet/sip/proxy/ProxyBranchTimerTask.java
=======================================
---
/trunk/servers/sip-servlets/sip-servlets-impl/src/main/java/org/mobicents/servlet/sip/proxy/ProxyBranchImpl.java
Tue Aug 18 20:26:03 2009
+++
/trunk/servers/sip-servlets/sip-servlets-impl/src/main/java/org/mobicents/servlet/sip/proxy/ProxyBranchImpl.java
Tue Aug 18 22:47:14 2009
@@ -604,14 +604,22 @@
if(logger.isDebugEnabled()) {
logger.debug("Proxy Branch Timeout set to " +
proxyBranchTimeout);
}
- if(proxyBranchTimeout != 0)
- timer.schedule(proxyTimeoutTask, proxyBranchTimeout *
1000);
+ if(proxyBranchTimeout != 0) {
+ try {
+ timer.schedule(proxyTimeoutTask,
proxyBranchTimeout * 1000);
+ } catch (Exception e) {
+ // Failsafe for Google Issue 880
+ timer = new Timer();
+ proxyTimeoutTask = new
ProxyBranchTimerTask(this);
+ timer.schedule(proxyTimeoutTask,
proxyBranchTimeout * 1000);
+ }
+ }
}
/**
* Stop the C Timer.
*/
- public void cancelTimer()
+ public synchronized void cancelTimer()
{
if(proxyTimeoutTask != null)
{
=======================================
---
/trunk/servers/sip-servlets/sip-servlets-impl/src/main/java/org/mobicents/servlet/sip/proxy/ProxyBranchTimerTask.java
Tue Apr 15 16:44:58 2008
+++
/trunk/servers/sip-servlets/sip-servlets-impl/src/main/java/org/mobicents/servlet/sip/proxy/ProxyBranchTimerTask.java
Tue Aug 18 22:47:14 2009
@@ -18,7 +18,10 @@
import java.util.TimerTask;
+import org.apache.log4j.Logger;
+
public class ProxyBranchTimerTask extends TimerTask{
+ private static transient Logger logger =
Logger.getLogger(ProxyBranchTimerTask.class);
private ProxyBranchImpl proxyBranch;
public ProxyBranchTimerTask(ProxyBranchImpl proxyBranch)
@@ -28,6 +31,10 @@
public void run()
{
- proxyBranch.onTimeout();
+ try {
+ proxyBranch.onTimeout();
+ } catch (Exception e) {
+ logger.error(e);
+ }
}
}