1. 09 Nov, 2015 1 commit
  2. 29 Oct, 2015 1 commit
  3. 13 Oct, 2015 1 commit
  4. 28 Jul, 2015 1 commit
    • Tom Evans's avatar
      OF-903: Simplify backup packet delivery · 477aee88
      Tom Evans authored
      Original issue (OF-857) has been addressed by providing an alternate
      packet deliverer (to offline storage). This additional logic was an
      ill-advised "belt-and-suspenders" attempt to prevent the recursion which
      was occurring before the backup deliverer was implemented.
      477aee88
  5. 08 Jul, 2015 1 commit
    • Dave Cridland's avatar
      Do not synchronize on isClosed() · 51b22088
      Dave Cridland authored
      There is a deadlock while reading the state variable if close() is running.
      
      This switches the state to be volatile instead - it's only written to inside
      the lengthy close() lock, so this should be reasonable.
      51b22088
  6. 10 Jun, 2015 2 commits
  7. 29 May, 2015 3 commits
    • Guus der Kinderen's avatar
      OF-883: Prevent sending data to known disconnected peers. · 0d75703d
      Guus der Kinderen authored
      By closing a session when the new MINA inputClosed() handler is triggered, we run
      the risk of sending data to the peer. As that peer is known to be dead, this is
      pointless (and potentially dangerous - deadlocks have been observed that are likely
      related to this scenario).
      
      To prevent sending data during session closure, the close() method has been
      overloaded with an argument that indicates if the peer is known to be dead. When
      set, its implementation will not attempt to send data.
      0d75703d
    • Guus der Kinderen's avatar
      OF-883 & OF-881: Avoid potential deadlock with close listeners. · 1b2dd66e
      Guus der Kinderen authored
      The close listeners should not be called from within a synchronized block.
      1b2dd66e
    • Guus der Kinderen's avatar
      OF-883: Prevent multiple closes of the same connection. · c51067b8
      Guus der Kinderen authored
      When a connection is closed, several events can be involved (and can be triggered).
      Some of these events will attempt to close the connection (if it hadn't been already).
      This, at best, least to multiple invocations of close-listeners. At worst, a loop of
      close-calls is created.
      
      This commit replaces the two-way boolean that guards closure (isClosed) with a
      three-way guard. Now, a distinction is made between between a connection that is
      closed, and one that is closing.
      
      Additionally, some null pointer guards have been added, as I've seen those pop up in
      my local logs during development.
      c51067b8
  8. 28 May, 2015 1 commit
    • Guus der Kinderen's avatar
      OF-883: Compensate for new half-duplex close of TCP channel in MINA · be6ee20f
      Guus der Kinderen authored
      MINA 2.0.8 introduces support for half-duplex close of TCP channels (see DIRMINA-785).
      As part of this change, IoHandlers got a new method. The default behavior of the
      IoHandlerAdapter closes the MINA session when this handler is triggered. However,
      without an Openfire-specific extension (in ConnectionHandler), this fails to close
      Openfire-maintained resources. As a result, CPUs could start to spin in NIO code,
      resulting in 100% CPU cycles.
      
      To fix this issue, ConnectionHandler now overrides the default functionality and
      triggers a normal closure of the session (both in Openfire as well as MINA context).
      
      Additionally, to prevent the CPU spin, MINA sessions need to be closed synchronously
      (as opposed to the async closure Openfire had up until now). I cannot quite explain
      the need for this change, other than a suspision of race conditions in the async
      setup.
      be6ee20f
  9. 26 May, 2015 2 commits
  10. 01 May, 2015 1 commit
  11. 14 Feb, 2015 1 commit
  12. 13 Jan, 2015 2 commits
    • Tom Evans's avatar
      OF-857: Added offline packet deliverer · 9205a2f1
      Tom Evans authored
      When a connection is closed, any further packets to be delivered need to
      be handled by the "backup" packet deliverer. The original implementation
      simply tried to reuse the primary delivery/routing mechanism, which
      resulted in a recursive call. This has been replaced with a packet
      deliverer that will route undeliverable message packets into the offline
      store.
      9205a2f1
    • Tom Evans's avatar
      OF-857: Mark connection closed before notifying · 4c4949eb
      Tom Evans authored
      The connection close listener initiates a presence broadcast to
      advertise its "unavailable" status. The current connection must be
      marked closed before this occurs, so the presence stanza will not be
      delivered to the newly closed connection.
      
      Note that the synchronized block alone does not accomplish this because
      the presence broadcast is delivered via that same thread that is
      currently closing the connection, thus it already possesses the sync
      object lock.
      
      Also, note that the SessionManager should exclude the originating JID
      when sending presence broadcasts to the user's other available
      session(s).
      4c4949eb
  13. 12 Jan, 2015 1 commit
    • Tom Evans's avatar
      OF-857: Synchronize connection/session cleanup · 348d5bdc
      Tom Evans authored
      This patch is to prevent a stack overflow in certain exception cases
      where a connection has been closed, but its corresponding session is
      still present in the routing table.
      348d5bdc
  14. 11 Jan, 2015 2 commits
  15. 17 Dec, 2014 1 commit
  16. 09 Dec, 2014 1 commit
  17. 07 Aug, 2014 1 commit
    • jackrabbit128's avatar
      Fix for OF-835: · 18fffdac
      jackrabbit128 authored
      - install ReadThrottleFilterBuilder into filter chains
      - adjust SSLFilter positioning in chain so that ReadThrottleFilter works correctly
      18fffdac
  18. 31 May, 2014 1 commit
  19. 26 Apr, 2014 1 commit
  20. 19 Feb, 2012 1 commit
  21. 22 Aug, 2010 1 commit
  22. 07 Feb, 2010 1 commit
  23. 09 Nov, 2009 1 commit
  24. 30 Sep, 2009 1 commit
  25. 16 Jul, 2008 1 commit
  26. 11 Jun, 2008 1 commit
  27. 11 Apr, 2008 1 commit
  28. 04 Dec, 2007 1 commit
  29. 15 Nov, 2007 1 commit
  30. 22 Oct, 2007 1 commit
  31. 12 Sep, 2007 1 commit
  32. 22 Jun, 2007 1 commit
  33. 30 May, 2007 1 commit
  34. 19 May, 2007 1 commit