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