You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/05/20 09:51:09 UTC
svn commit: r1744680 - in /openmeetings/application:
branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/
branches/3.1.x/openmeetings-...
Author: solomax
Date: Fri May 20 09:51:08 2016
New Revision: 1744680
URL: http://svn.apache.org/viewvc?rev=1744680&view=rev
Log:
[OPENMEETINGS-1384] additional originate fixes
Modified:
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
Modified: openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1744680&r1=1744679&r2=1744680&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Fri May 20 09:51:08 2016
@@ -2193,12 +2193,17 @@ public class ScopeApplicationAdapter ext
* @param number
* to call
*/
- public synchronized void joinToConfCall(String number) {
+ public synchronized void joinToConfCall(final String number) {
IConnection current = Red5.getConnectionLocal();
String streamid = current.getClient().getId();
- Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+ final Client currentClient = sessionManager.getClientByStreamId(streamid, null);
try {
- sipDao.joinToConfCall(number, roomDao.get(currentClient.getRoomId()));
+ new Thread() {
+ @Override
+ public void run() {
+ sipDao.joinToConfCall(number, roomDao.get(currentClient.getRoomId()));
+ }
+ }.start();
} catch (Exception e) {
log.error("Executing asterisk originate error: ", e);
}
Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1744680&r1=1744679&r2=1744680&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java Fri May 20 09:51:08 2016
@@ -80,14 +80,12 @@ public class SipDao {
try {
con.login();
ManagerResponse r = con.sendAction(action);
- if (log.isDebugEnabled() && r != null) {
+ if (r != null) {
log.debug(r.toString());
}
return (r instanceof ManagerError) ? null : r;
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- log.error("Error while executing ManagerAction: " + action, e);
- }
+ log.error("Error while executing ManagerAction: " + action, e);
} finally {
try {
con.logoff();
@@ -107,14 +105,12 @@ public class SipDao {
try {
con.login("on");
ResponseEvents r = con.sendEventGeneratingAction(action);
- if (log.isDebugEnabled() && r != null) {
+ if (r != null) {
log.debug(r.getResponse().toString());
}
return (r == null || r.getResponse() instanceof ManagerError) ? null : r;
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- log.error("Error while executing EventGeneratingAction: " + action, e);
- }
+ log.error("Error while executing EventGeneratingAction: " + action, e);
} finally {
try {
con.logoff();
@@ -186,6 +182,7 @@ public class SipDao {
OriginateAction oa = new OriginateAction();
oa.setChannel(String.format("Local/%s@rooms-out", number));
+ //oa.setContext("rooms-out");
oa.setExten(String.format("%s@rooms-originate", sipNumber));
oa.setPriority(1);
oa.setTimeout(30000L);
Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1744680&r1=1744679&r2=1744680&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Fri May 20 09:51:08 2016
@@ -207,8 +207,8 @@
<constructor-arg><value>5038</value></constructor-arg>
<constructor-arg><value>openmeetings</value></constructor-arg>
<constructor-arg><value>12345</value></constructor-arg>
- <constructor-arg><value>5000</value></constructor-arg>
- -->
+ <constructor-arg><value>10000</value></constructor-arg>
+ -->
</bean>
<bean id="invitationDao" class="org.apache.openmeetings.db.dao.room.InvitationDao" />
<bean id="groupDao" class="org.apache.openmeetings.db.dao.user.GroupDao" />
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1744680&r1=1744679&r2=1744680&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java Fri May 20 09:51:08 2016
@@ -30,6 +30,7 @@ import org.asteriskjava.manager.action.D
import org.asteriskjava.manager.action.EventGeneratingAction;
import org.asteriskjava.manager.action.ManagerAction;
import org.asteriskjava.manager.action.OriginateAction;
+import org.asteriskjava.manager.internal.ManagerConnectionImpl;
import org.asteriskjava.manager.response.ManagerError;
import org.asteriskjava.manager.response.ManagerResponse;
import org.red5.logging.Red5LoggerFactory;
@@ -43,76 +44,77 @@ public class SipDao {
private int sipPort;
private String sipUsername;
private String sipPassword;
+ private long timeout;
private ManagerConnectionFactory factory;
- private ManagerConnection connection;
- private ManagerConnection eventConnection;
@SuppressWarnings("unused")
private SipDao() {
// prohibited default constructor
}
- public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword) {
+ public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword, long timeout) {
this.sipHostname = sipHostname;
this.sipPort = sipPort;
this.sipUsername = sipUsername;
this.sipPassword = sipPassword;
+ this.timeout = timeout;
factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort, this.sipUsername, this.sipPassword);
- connection = factory.createManagerConnection(); // TODO secure
- eventConnection = factory.createManagerConnection(); // TODO secure
}
+ private ManagerConnection getConnection() {
+ DefaultManagerConnection con = (DefaultManagerConnection)factory.createManagerConnection(); // TODO secure
+ con.setDefaultEventTimeout(timeout);
+ con.setDefaultResponseTimeout(timeout);
+ con.setSocketReadTimeout((int)timeout);
+ con.setSocketTimeout((int)timeout);
+ return con;
+ }
+
private ManagerResponse exec(ManagerAction action) {
- if (connection == null) {
+ if (factory == null) {
log.warn("There is no Asterisk configured");
return null;
}
- synchronized (connection) {
+ ManagerConnection con = getConnection();
+ try {
+ con.login();
+ ManagerResponse r = con.sendAction(action);
+ if (r != null) {
+ log.debug(r.toString());
+ }
+ return (r instanceof ManagerError) ? null : r;
+ } catch (Exception e) {
+ log.error("Error while executing ManagerAction: " + action, e);
+ } finally {
try {
- connection.login();
- ManagerResponse r = connection.sendAction(action);
- if (log.isDebugEnabled() && r != null) {
- log.debug(r.toString());
- }
- return (r instanceof ManagerError) ? null : r;
+ con.logoff();
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- log.error("Error while executing ManagerAction: " + action, e);
- }
- } finally {
- try {
- connection.logoff();
- } catch (Exception e) {
- // no-op
- }
+ // no-op
}
}
return null;
}
private ResponseEvents execEvent(EventGeneratingAction action) {
- if (eventConnection == null) {
+ if (factory == null) {
log.warn("There is no Asterisk configured");
return null;
}
- synchronized (eventConnection) {
+ ManagerConnection con = getConnection();
+ try {
+ con.login("on");
+ ResponseEvents r = con.sendEventGeneratingAction(action);
+ if (r != null) {
+ log.debug(r.getResponse().toString());
+ }
+ return (r == null || r.getResponse() instanceof ManagerError) ? null : r;
+ } catch (Exception e) {
+ log.error("Error while executing EventGeneratingAction: " + action, e);
+ } finally {
try {
- eventConnection.login("on");
- ResponseEvents r = eventConnection.sendEventGeneratingAction(action);
- if (log.isDebugEnabled() && r != null) {
- log.debug(r.getResponse().toString());
- }
- return (r == null || r.getResponse() instanceof ManagerError) ? null : r;
+ con.logoff();
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- log.error("Error while executing EventGeneratingAction: " + action, e);
- }
- } finally {
- try {
- eventConnection.logoff();
- } catch (Exception e) {
- // no-op
- }
+ // no-op
}
}
return null;
@@ -179,6 +181,7 @@ public class SipDao {
OriginateAction oa = new OriginateAction();
oa.setChannel(String.format("Local/%s@rooms-out", number));
+ //oa.setContext("rooms-out");
oa.setExten(String.format("%s@rooms-originate", sipNumber));
oa.setPriority(1);
oa.setTimeout(30000L);
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1744680&r1=1744679&r2=1744680&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Fri May 20 09:51:08 2016
@@ -205,6 +205,7 @@
<constructor-arg><value>5038</value></constructor-arg>
<constructor-arg><value>openmeetings</value></constructor-arg>
<constructor-arg><value>12345</value></constructor-arg>
+ <constructor-arg><value>10000</value></constructor-arg>
-->
</bean>
<bean id="invitationDao" class="org.apache.openmeetings.db.dao.room.InvitationDao" />
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1744680&r1=1744679&r2=1744680&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java Fri May 20 09:51:08 2016
@@ -30,6 +30,7 @@ import org.asteriskjava.manager.action.D
import org.asteriskjava.manager.action.EventGeneratingAction;
import org.asteriskjava.manager.action.ManagerAction;
import org.asteriskjava.manager.action.OriginateAction;
+import org.asteriskjava.manager.internal.ManagerConnectionImpl;
import org.asteriskjava.manager.response.ManagerError;
import org.asteriskjava.manager.response.ManagerResponse;
import org.red5.logging.Red5LoggerFactory;
@@ -43,6 +44,7 @@ public class SipDao {
private int sipPort;
private String sipUsername;
private String sipPassword;
+ private long timeout;
private ManagerConnectionFactory factory;
@SuppressWarnings("unused")
@@ -50,31 +52,39 @@ public class SipDao {
// prohibited default constructor
}
- public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword) {
+ public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword, long timeout) {
this.sipHostname = sipHostname;
this.sipPort = sipPort;
this.sipUsername = sipUsername;
this.sipPassword = sipPassword;
+ this.timeout = timeout;
factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort, this.sipUsername, this.sipPassword);
}
+ private ManagerConnection getConnection() {
+ DefaultManagerConnection con = (DefaultManagerConnection)factory.createManagerConnection(); // TODO secure
+ con.setDefaultEventTimeout(timeout);
+ con.setDefaultResponseTimeout(timeout);
+ con.setSocketReadTimeout((int)timeout);
+ con.setSocketTimeout((int)timeout);
+ return con;
+ }
+
private ManagerResponse exec(ManagerAction action) {
if (factory == null) {
log.warn("There is no Asterisk configured");
return null;
}
- ManagerConnection con = factory.createManagerConnection(); // TODO secure
+ ManagerConnection con = getConnection();
try {
con.login();
ManagerResponse r = con.sendAction(action);
- if (log.isDebugEnabled() && r != null) {
+ if (r != null) {
log.debug(r.toString());
}
return (r instanceof ManagerError) ? null : r;
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- log.error("Error while executing ManagerAction: " + action, e);
- }
+ log.error("Error while executing ManagerAction: " + action, e);
} finally {
try {
con.logoff();
@@ -90,18 +100,16 @@ public class SipDao {
log.warn("There is no Asterisk configured");
return null;
}
- ManagerConnection con = factory.createManagerConnection(); // TODO secure
+ ManagerConnection con = getConnection();
try {
con.login("on");
ResponseEvents r = con.sendEventGeneratingAction(action);
- if (log.isDebugEnabled() && r != null) {
+ if (r != null) {
log.debug(r.getResponse().toString());
}
return (r == null || r.getResponse() instanceof ManagerError) ? null : r;
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- log.error("Error while executing EventGeneratingAction: " + action, e);
- }
+ log.error("Error while executing EventGeneratingAction: " + action, e);
} finally {
try {
con.logoff();
@@ -173,6 +181,7 @@ public class SipDao {
OriginateAction oa = new OriginateAction();
oa.setChannel(String.format("Local/%s@rooms-out", number));
+ //oa.setContext("rooms-out");
oa.setExten(String.format("%s@rooms-originate", sipNumber));
oa.setPriority(1);
oa.setTimeout(30000L);