Supply client connection and IDENT information to peer_cache_access ACL check.

Among other things, this enables SSL client certificate ACL checks (user_cert
and ca_cert) when making peering decisions

=== modified file 'src/neighbors.cc'
--- src/neighbors.cc	2012-07-20 15:31:04 +0000
+++ src/neighbors.cc	2012-08-03 09:55:28 +0000
@@ -177,50 +177,48 @@
     bool do_ping = false;
     for (d = p->peer_domain; d; d = d->next) {
         if (0 == matchDomainName(request->GetHost(), d->domain)) {
             do_ping = d->do_ping;
             break;
         }
 
         do_ping = !d->do_ping;
     }
 
     if (p->peer_domain && !do_ping)
         return false;
 
     if (p->access == NULL)
         return do_ping;
 
     ACLFilledChecklist checklist(p->access, request, NULL);
     checklist.src_addr = request->client_addr;
     checklist.my_addr = request->my_addr;
 
-#if 0 && USE_IDENT
-    /*
-     * this is currently broken because 'request->user_ident' has been
-     * moved to conn->rfc931 and we don't have access to the parent
-     * ConnStateData here.
-     */
-    if (request->user_ident[0])
-        xstrncpy(checklist.rfc931, request->user_ident, USER_IDENT_SZ);
-
+    if (request->clientConnectionManager.valid()) {
+        checklist.conn(request->clientConnectionManager.get());
+#if USE_IDENT
+        if (request->clientConnectionManager->clientConnection != NULL
+            && request->clientConnectionManager->clientConnection->rfc931[0])
+            xstrncpy(checklist.rfc931, request->clientConnectionManager->clientConnection->rfc931, USER_IDENT_SZ);
 #endif
+    }
 
     return (checklist.fastCheck() == ACCESS_ALLOWED);
 }
 
 /* Return TRUE if it is okay to send an ICP request to this peer.   */
 static int
 peerWouldBePinged(const peer * p, HttpRequest * request)
 {
     if (p->icp.port == 0)
         return 0;
 
     if (p->options.no_query)
         return 0;
 
     if (p->options.mcast_responder)
         return 0;
 
     if (p->n_addresses == 0)
         return 0;