mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Ludovic Poitou
06.47.2010 663607ff7d0d0e884c4273b4f8a2b0ba488a1d47
Fix potential race condition between handleClose and handleRead events in server filter that can lead to NPEs.
(Sync from OpenDS, matthew_swift)
1 files modified
85 ■■■■ changed files
opendj-sdk/sdk/src/com/sun/opends/sdk/ldap/LDAPServerFilter.java 85 ●●●● patch | view | raw | blame | history
opendj-sdk/sdk/src/com/sun/opends/sdk/ldap/LDAPServerFilter.java
@@ -844,10 +844,15 @@
        final int messageID, final AbandonRequest request)
        throws UnexpectedRequestException
    {
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
      conn.handleAbandon(messageID, request);
    }
    }
@@ -855,11 +860,17 @@
    public void addRequest(final FilterChainContext ctx, final int messageID,
        final AddRequest request) throws UnexpectedRequestException
    {
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      final AddHandler handler = new AddHandler(messageID, ctx.getConnection());
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
        final AddHandler handler = new AddHandler(messageID,
            ctx.getConnection());
      conn.handleAdd(messageID, request, handler, handler);
    }
    }
@@ -868,12 +879,17 @@
        final int version, final GenericBindRequest bindContext)
        throws UnexpectedRequestException
    {
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
      final BindHandler handler = new BindHandler(messageID,
          ctx.getConnection());
      conn.handleBind(messageID, version, bindContext, handler, handler);
    }
    }
@@ -882,12 +898,17 @@
        final int messageID, final CompareRequest request)
        throws UnexpectedRequestException
    {
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
      final CompareHandler handler = new CompareHandler(messageID,
          ctx.getConnection());
      conn.handleCompare(messageID, request, handler, handler);
    }
    }
@@ -896,12 +917,17 @@
        final int messageID, final DeleteRequest request)
        throws UnexpectedRequestException
    {
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
      final DeleteHandler handler = new DeleteHandler(messageID,
          ctx.getConnection());
      conn.handleDelete(messageID, request, handler, handler);
    }
    }
@@ -910,13 +936,17 @@
        final FilterChainContext ctx, final int messageID,
        final ExtendedRequest<R> request) throws UnexpectedRequestException
    {
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
      final ExtendedHandler<R> handler = new ExtendedHandler<R>(messageID,
          ctx.getConnection());
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      conn.handleExtendedRequest(messageID, request, handler, handler);
    }
    }
@@ -925,12 +955,17 @@
        final int messageID, final ModifyDNRequest request)
        throws UnexpectedRequestException
    {
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
      final ModifyDNHandler handler = new ModifyDNHandler(messageID,
          ctx.getConnection());
      conn.handleModifyDN(messageID, request, handler, handler);
    }
    }
@@ -939,12 +974,17 @@
        final int messageID, final ModifyRequest request)
        throws UnexpectedRequestException
    {
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
      final ModifyHandler handler = new ModifyHandler(messageID,
          ctx.getConnection());
      conn.handleModify(messageID, request, handler, handler);
    }
    }
@@ -953,12 +993,17 @@
        final int messageID, final SearchRequest request)
        throws UnexpectedRequestException
    {
      final ServerConnection<Integer> conn = LDAP_CONNECTION_ATTR.get(
          ctx.getConnection()).getServerConnection();
      final ClientContextImpl clientContext = LDAP_CONNECTION_ATTR.get(ctx
          .getConnection());
      if (clientContext != null)
      {
        final ServerConnection<Integer> conn = clientContext
            .getServerConnection();
      final SearchHandler handler = new SearchHandler(messageID,
          ctx.getConnection());
      conn.handleSearch(messageID, request, handler, handler);
    }
    }