Hi Robert,

On Tue, Jan 30, 2007 at 10:03:08PM +0100, Robert S. van der Boon wrote:
> I'm using subversion against a repository with mod_auth_sspi (allowing 
> only NTLM authentication). If during a session the connection is 
> closed, then the next request in the session fails. So far I've seen 
> this in 2 scenarios: - when the server set the keepalive to false 
> (because the MaxKeepAlives is exceeded) - on non-idempotent messages 
> (because neon closes the connection before doing such a request).

I had wondered whether this would show up.  The problem is really that 
the Negotiate/NTLM auth scheme is completely broken.

> I tracked the problem down to this:
>
> 1. neon doesnot clear its sspi context / token if a connection is 
> closed. Therefore the old token is used on the new connection, and the 
> server does not accept that.

This can be fixed by adding a new hook, I suppose.

> 2. neon should not close the connection if it is in the sspi/auth 
> negotiation for the non-idempotent messages (line 1216 in 
> ne_request.c). The NTLM authentication is a multi-leg authentication, 
> meaning we need at least 2 requests to do authentication. neon closes 
> the connection after the first request, resulting in problem 1..

For SSPI the flag could just be cleared, it loses some reliability but 
that's going to be tough luck - can you try this patch?

Index: src/ne_auth.c
===================================================================
--- src/ne_auth.c       (revision 1148)
+++ src/ne_auth.c       (working copy)
@@ -1240,6 +1240,11 @@
            ne_free(value);
        }
 
+#ifdef HAVE_SSPI
+        if (sess->sspi_token) {
+            ne_set_request_flag(req, NE_REQFLAG_IDEMPOTENT, 1);
+        }
+#endif
     }
 
 }
_______________________________________________
neon mailing list
[email protected]
http://mailman.webdav.org/mailman/listinfo/neon

Reply via email to