0.1.8 Feedback

I’ve just deployed 0.1.8 of the plugin onto openfire. My experience was mostly positive, though I noticed a few things that should be fixed, and have a few questions.

  1. If i specify a room name in mixed case (e.g. ?r=FooBar) the room is created on OpenFire as its lowercase analogue (e.g. foobar), and the focus user joins, but the conference never starts - the invite button is perpetually listed as “Conference is being created”.

Nothing interesting is written to the debug log when this happens. Entirely lowercase room names work absolutely fine.

  1. The ephemeral users (ofmeetXXXX@) are queried against my AD. While this doesn’t cause a problem, it does slow things down quite a bit and causes unnecessary load on my directory (stack trace follows at the end of this message).

  2. Specifying the resolution as 1080 in the admin console causes my client to be unable to start:

failed to obtain audio/video stream - trying audio only NavigatorUserMediaError {} @ strophe.jingle.adapter.js?v=3:766
    constraintName: "minWidth"
    message: ""
    name: "ConstraintNotSatisfiedError"

I suspect this may be because my camera is only 720p capable.

  1. With no clear pattern, it will sometimes take a user an inordinately long time to join a room - the delay is between the users browser loading and a nickname being requested. Sometimes it will take up to a minute for the nickname prompt.

With “require nicknames” disabled, users join rooms almost instantaneously.

Questions:

The video quality is very very low, even on a high bandwidth (gigabit) network - I estimate it to be ~260p. No loss is recorded, and changing the bandwidth setting in the admin console doesn’t seem to change this. Is this expected?

What is candy.html supposed to look like/do? When I load the page all I see is a flicker of a “loading” box, and then a grey screen. Nothing is logged at all on the client, and there are no errors in the server logs.

If you need any more information to assist fixing/diagnosing these, please let me know.

2015.06.18 14:37:58 org.jivesoftware.openfire.ldap.LdapManager - LdapManager: Trying to find a user's DN based on their username. sAMAccountName: ofmeet6262, Base DN: OU="Humans,"...
2015.06.18 14:37:58 org.jivesoftware.openfire.ldap.LdapManager - LdapManager: Creating a DirContext in LdapManager.getContext()...
2015.06.18 14:37:58 org.jivesoftware.openfire.ldap.LdapManager - LdapManager: Created hashtable with context values, attempting to create context...
2015.06.18 14:37:58 org.jivesoftware.openfire.ldap.LdapManager - LdapManager: ... context created successfully, returning.
2015.06.18 14:37:58 org.jivesoftware.openfire.ldap.LdapManager - LdapManager: Starting LDAP search...
2015.06.18 14:37:58 org.jivesoftware.openfire.ldap.LdapManager - LdapManager: ... search finished
2015.06.18 14:37:58 org.jivesoftware.openfire.ldap.LdapManager - LdapManager: User DN based on username 'ofmeet6262' not found.
2015.06.18 14:37:58 org.jivesoftware.openfire.ldap.LdapManager - LdapManager: Exception thrown when searching for userDN based on username 'ofmeet6262'
org.jivesoftware.openfire.user.UserNotFoundException: Username ofmeet6262 not found
  at org.jivesoftware.openfire.ldap.LdapManager.findUserDN(LdapManager.java:988)
  at org.jivesoftware.openfire.ldap.LdapManager.findUserDN(LdapManager.java:912)
  at org.jivesoftware.openfire.ldap.LdapUserProvider.loadUser(LdapUserProvider.java:106)
  at org.jivesoftware.openfire.user.UserManager.getUser(UserManager.java:240)
  at org.jivesoftware.openfire.user.UserManager.isRegisteredUser(UserManager.java:371)
  at org.jivesoftware.openfire.spi.PresenceManagerImpl.userAvailable(PresenceManagerImpl.java:195)
  at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:159)
  at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:137)
  at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:201)
  at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:148)
  at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:84)
  at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:84)
  at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:120)
  at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:75)
  at org.ifsoft.websockets.XMPPServlet$XMPPWebSocket.onTextMethod(XMPPServlet.java:321)
  at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(CallableMethod.java:70)
  at org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(OptionalSessionCallableMethod.java:72)
  at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onTextMessage(JettyAnnotatedEventDriver.java:225)
  at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69)
  at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:64)
  at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onTextFrame(JettyAnnotatedEventDriver.java:217)
  at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:160)
  at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:309)
  at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:214)
  at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220)
  at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:258)
  at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:628)
  at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:476)
  at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
  at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
  at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
  at java.lang.Thread.run(Thread.java:745)