Generates the latest/greatest Maven-based artifacts for the Openfire project, every night.

Build: #3214 was successful Scheduled with changes by daryl herzmann and Guus der Kinderen

Stages & jobs

  1. Build and Package

Code commits

Openfire (master)

  • daryl herzmann

    daryl herzmann 8be466d16a8c17580645bb1517f2029694d35391

    Merge pull request #3179 from guusdk/OF-3201_Robust-outgoing-session-registration
    OF-3201: Fix orphaned routing table entry when outgoingServerSessionCreated fails

  • daryl herzmann

    daryl herzmann 65bf7d4647ce508091dff17da32ab68bdf012a37

    Merge pull request #3154 from Fishbowler/fix-authcheckfilter
    OF-3187: Make AuthCheckFilter's destroy a no-op

  • daryl herzmann

    daryl herzmann 35beffe613c3f983e853cca93bb55f3806d6b9e8

    Merge pull request #3180 from guusdk/OF-3202_PacketsProcessor-isDone-robustness
    OF-3202: PacketsProcessor.isDone() reporting completion based on explicit completion state

  • Guus der Kinderen

    Guus der Kinderen 2ad76247058f8aaec8c0c1448030c93538d52817

    Update xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalOutgoingServerSession.java
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalOutgoingServerSession.java (version 2ad76247058f8aaec8c0c1448030c93538d52817)
  • daryl herzmann

    daryl herzmann 3dc512e779f3f63fc54bc9e6aca220ed2a96f0c1

    Merge pull request #3178 from guusdk/OF-3176_Async-connection-closure-follow-ups
    OF-3176: Ensure session initializer stops on timeout

  • daryl herzmann

    daryl herzmann 27d041818586cd85e21e72a0ad8728f91b9e51d1

    Merge pull request #3173 from guusdk/OF-3199_pubsub-single-node-load-with-parent
    OF-3199: Resolve NPE when loading a child node via the single-node code path

  • Guus der Kinderen

    Guus der Kinderen a541bf3cf2a22cb577c7ef27b682d0c77cf30492

    OF-3176: Ensure session initializer stops on timeout
    When creating an outgoing server to server session, various exceptions can be thrown. Handling of all but the TimeoutException call `sessionInitializer.stop()`. The omission here means the Netty channel stays open after a timeout, leaking a connection. Since addOutgoingDomainPair and outgoingServerSessionCreated are never called for it, the session is invisible to routing and cleanup infrastructure.

    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalOutgoingServerSession.java (version a541bf3cf2a22cb577c7ef27b682d0c77cf30492)
  • Guus der Kinderen

    Guus der Kinderen b2de58986b13785c116b448f4323e28499b9de76

    OF-3202: PacketsProcessor.isDone() reporting completion based on explicit completion state
    isDone() previously returned true whenever the packet queue was empty, which could incorrectly indicate that a processor was done during the initialisation window before the first packet was added, or while the queue was being drained but before the processor had removed itself from packetsProcessors. Fix by replacing the queue-emptiness check with an explicit volatile boolean flag that is set only after the queue has been fully drained and the processor has been removed from packetsProcessors.

    • xmppserver/src/main/java/org/jivesoftware/openfire/server/OutgoingSessionPromise.java (version b2de58986b13785c116b448f4323e28499b9de76)
  • Guus der Kinderen

    Guus der Kinderen d5b5df7aeaaf4f89b8ab30ab184f6f42b91072d6

    OF-3201: Fix orphaned routing table entry when outgoingServerSessionCreated fails
    If outgoingServerSessionCreated() threw an exception after addOutgoingDomainPair() had already registered the route, the close listener responsible for removing the route would never be registered, leaving a permanent orphaned routing table entry. All subsequent stanzas to the affected remote domain would then be dropped with no possibility of recovery short of a server restart.

    Fix by explicitly removing all routes added by addOutgoingDomainPair() if outgoingServerSessionCreated() throws, before re-throwing so that the outer catch block can close the session.

    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalOutgoingServerSession.java (version d5b5df7aeaaf4f89b8ab30ab184f6f42b91072d6)
  • Guus der Kinderen

    Guus der Kinderen 037965b35aa91c00d72f76834c2b0bb663e693e2

    OF-3196: Resolve O(n²) node lookup causing multi-hour startup at scale
    DefaultPubSubPersistenceProvider.loadNodes() called lookupNode() once per row when processing result sets for JIDs, groups, affiliations, and subscriptions. The original lookupNode() ignored the map's existing Node.UniqueIdentifier key and instead performed a full linear scan of all map values, making each call O(n).

    With 600,000 nodes and one affiliation each, this produced approximately 180 billion string comparisons for affiliations alone, resulting in startup times exceeding two hours.

    Fix by constructing the Node.UniqueIdentifier key directly and delegating to Map.get(), reducing each lookup from O(n) to O(1) and overall loading complexity from O(n²) to O(n). Thread the required serviceId parameter through all four affected callers: loadAssociatedJIDs, loadAssociatedGroups, loadAffiliations, and loadSubscriptions.

    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/DefaultPubSubPersistenceProvider.java (version 037965b35aa91c00d72f76834c2b0bb663e693e2)
  • Guus der Kinderen

    Guus der Kinderen 0ea28bc0bdca6f2d852dae91bca60583981319d2 m

    OF-3199: Resolve NPE when loading a child node via the single-node code path
    When loadNode(PubSubService, Node.UniqueIdentifier) loaded a node that had a parent, it attempted to resolve the parent-child relationship by looking up the parent ID in the local nodes map. That map only ever contained the one node being loaded, so nodes.get(parentId) always returned null, causing an NPE on the subsequent changeParent() call.

    Fix by issuing a second LOAD_NODE query on the same open connection to hydrate the parent node into the map before calling changeParent(). Any grandparent mapping discovered while loading the parent is discarded via a fresh HashMap, as resolving the full ancestry chain is the responsibility of loadNodes(), not this single-node path.

    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/DefaultPubSubPersistenceProvider.java (version 0ea28bc0bdca6f2d852dae91bca60583981319d2)
  • Dan Caseley

    Dan Caseley b8cf466169ee943a7b8e1ee941a1312e11e9779d m

    OF-3187: Make AuthCheckFilter's destroy a no-op
    This is called when the AdminConsolePlugin restarts (by PluginServlet). It wipes all exclusions that have been registered, requiring plugins to re-register them. This change retains the static list of excludes. Plugins remain responsible for unregistering their excludes, which they should have been doing anyway, rather than relying on an eventual restart of the AdminConsole.

    • xmppserver/src/main/java/org/jivesoftware/admin/AuthCheckFilter.java (version b8cf466169ee943a7b8e1ee941a1312e11e9779d)
    • xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java (version b8cf466169ee943a7b8e1ee941a1312e11e9779d)