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);