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


Reply via email to