]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Merge from trunk
authorAmos Jeffries <squid3@treenet.co.nz>
Sat, 17 Apr 2010 10:38:50 +0000 (22:38 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Sat, 17 Apr 2010 10:38:50 +0000 (22:38 +1200)
27 files changed:
1  2 
src/CompositePoolNode.h
src/HttpRequest.h
src/Makefile.am
src/acl/FilledChecklist.h
src/adaptation/icap/ModXact.cc
src/auth/AclMaxUserIp.cc
src/auth/AclMaxUserIp.h
src/auth/User.cc
src/auth/User.h
src/auth/UserRequest.cc
src/auth/UserRequest.h
src/cache_cf.cc
src/cf.data.pre
src/client_side.cc
src/client_side.h
src/client_side_reply.cc
src/client_side_reply.h
src/client_side_request.cc
src/errorpage.h
src/external_acl.cc
src/http.cc
src/main.cc
src/protos.h
src/redirect.cc
src/stat.cc
src/structs.h
src/tests/testAuth.h

index 6318c8233bf0a8f30b74c4f222534657f0c5a273,c8b4649f804d4d6a96b8683356c7dc275c7719c0..826b148ccedf45f45e399e20f8b95429df89e58a
@@@ -75,8 -76,8 +75,8 @@@ public
      public:
          CompositeSelectionDetails() {}
  
-         IpAddress src_addr;
+         Ip::Address src_addr;
 -        AuthUserRequest *user;
 +        AuthUserRequest::Pointer user;
          String tag;
      };
  
index bd26f3e9ec9c397ef7e226a9a62af707b7917446,27c9600f9daa62bdc387f46fa7f7dae745cda2cc..4e78882aea3a418702b8eb2e3dd98b9ed13666a8
@@@ -148,9 -149,9 +148,9 @@@ private
  #endif
  
  public:
-     IpAddress host_addr;
+     Ip::Address host_addr;
  
 -    AuthUserRequest *auth_user_request;
 +    AuthUserRequest::Pointer auth_user_request;
  
      u_short port;
  
diff --cc src/Makefile.am
index 88f93ab971f55a5f0fcfe4862de8b08ae7b3f4a3,554fbde8230a4b30f7bfabba2fc3f5ead88916f5..5f7981ff0de7dd9cbcac7b5f730622e1458db1ff
@@@ -753,23 -753,23 +753,23 @@@ DEFS += -DDEFAULT_CONFIG_FILE=\"$(DEFAU
  snmp_core.o snmp_agent.o: ../snmplib/libsnmp.a $(top_srcdir)/include/cache_snmp.h
  
  globals.cc: globals.h mk-globals-c.awk
-       $(AWK) -f $(srcdir)/mk-globals-c.awk < $(srcdir)/globals.h > $@
+       $(AWK) -f $(srcdir)/mk-globals-c.awk < $(srcdir)/globals.h > $@ || $(RM) -f $@
  
 -## Generate files containing strng arrays for various enums....
 +## Generate files containing string arrays for various enums....
  hier_code.cc: hier_code.h mk-string-arrays.awk
-       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/hier_code.h > $@
+       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/hier_code.h > $@ || $(RM) -f $@
  
  err_type.cc: err_type.h mk-string-arrays.awk
-       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/err_type.h > $@
+       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/err_type.h > $@ || $(RM) -f $@
  
  lookup_t.cc: lookup_t.h mk-string-arrays.awk
-       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/lookup_t.h > $@
+       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/lookup_t.h > $@ || $(RM) -f $@
  
  icp_opcode.cc: icp_opcode.h mk-string-arrays.awk
-       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/icp_opcode.h > $@
+       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/icp_opcode.h > $@ || $(RM) -f $@
  
  swap_log_op.cc: swap_log_op.h mk-string-arrays.awk
-       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/swap_log_op.h > $@
+       $(AWK) -f $(srcdir)/mk-string-arrays.awk < $(srcdir)/swap_log_op.h > $@ || $(RM) -f $@
  
  
  ## other generated files...
Simple merge
Simple merge
index 571268726a03d161616858aa9c0b293adfecdf14,c447271b1ab31ae932b6b225a9b8816674dc1d69..20e9d22f545504827ecea69dd49aeb78e30fb5cb
@@@ -112,7 -112,7 +112,7 @@@ ACLMaxUserIP::parse(
   * 1 : Match
   */
  int
- ACLMaxUserIP::match(AuthUserRequest::Pointer auth_user_request, IpAddress const &src_addr)
 -ACLMaxUserIP::match(AuthUserRequest * auth_user_request, Ip::Address const &src_addr)
++ACLMaxUserIP::match(AuthUserRequest::Pointer auth_user_request, Ip::Address const &src_addr)
  {
      /*
       * the logic for flush the ip list when the limit is hit vs keep
index feb45428c9afb95880e351c78a5e2e3629170d63,ad8ade899582310e0dcd1782edeb07706cb9dfa6..35a62feafeb9ef289b56ed7fb0d286de14301a76
@@@ -68,7 -69,7 +68,7 @@@ private
      static Prototype RegistryProtoype;
      static ACLMaxUserIP RegistryEntry_;
  
-     int match(AuthUserRequest::Pointer, IpAddress const &);
 -    int match(AuthUserRequest *, Ip::Address const &);
++    int match(AuthUserRequest::Pointer, Ip::Address const &);
      char const *class_;
      int maximum;
  
index d8732ea09f4b123a48a9e7208bf1aca4877102f9,c95ab0db75933b11a49205e01525a86e1b5dccff..65caa3d5cbd7a9db999a6323a5371a2f233d918d
@@@ -42,9 -42,8 +42,9 @@@
  #include "acl/Gadgets.h"
  #include "event.h"
  #include "SquidTime.h"
 +#include "Store.h"
  
- #ifndef _USE_INLINE_
+ #if !_USE_INLINE_
  #include "auth/User.cci"
  #endif
  
@@@ -305,9 -240,9 +305,9 @@@ AuthUser::clearIp(
  }
  
  void
- AuthUser::removeIp(IpAddress ipaddr)
+ AuthUser::removeIp(Ip::Address ipaddr)
  {
 -    auth_user_ip_t *ipdata = (auth_user_ip_t *) ip_list.head;
 +    AuthUserIP *ipdata = (AuthUserIP *) ip_list.head;
  
      while (ipdata) {
          /* walk the ip list */
  }
  
  void
- AuthUser::addIp(IpAddress ipaddr)
+ AuthUser::addIp(Ip::Address ipaddr)
  {
 -    auth_user_ip_t *ipdata = (auth_user_ip_t *) ip_list.head;
 +    AuthUserIP *ipdata = (AuthUserIP *) ip_list.head;
      int found = 0;
  
 -    CBDATA_INIT_TYPE(auth_user_ip_t);
 +    CBDATA_INIT_TYPE(AuthUserIP);
  
      /*
       * we walk the entire list to prevent the first item in the list
diff --cc src/auth/User.h
index 72ebdffe612d33489d9779235815670d76424c88,1f38e40aac3bf5b494a48023cf98c6f8b4c53eb9..47e4654d1de54996b696e42221a550992ccd8db2
@@@ -83,40 -84,21 +83,40 @@@ public
      virtual ~AuthUser();
      _SQUID_INLINE_ char const *username() const;
      _SQUID_INLINE_ void username(char const *);
 +
 +    /**
 +     * How long these credentials are still valid for.
 +     * Negative numbers means already expired.
 +     */
 +    virtual int32_t ttl() const = 0;
 +
 +    /* Manage list of IPs using this username */
      void clearIp();
-     void removeIp(IpAddress);
-     void addIp(IpAddress);
+     void removeIp(Ip::Address);
+     void addIp(Ip::Address);
 -    _SQUID_INLINE_ void addRequest(AuthUserRequest *);
  
 -    void lock();
 -    void unlock();
 +#if USER_REQUEST_LOOP_DEAD
 +protected:
 +    /* manage list of active authentication requests for this username */
 +    /** the auth_user_request structures that link to this. Yes it could be a splaytree
 +     * but how many requests will a single username have in parallel? */
 +    dlink_list requests;
 +
 +    /* AYJ: why? do we need this here? it forms the core of a circular refcount. */
 +
 +public:
 +    _SQUID_INLINE_ void addRequest(AuthUserRequest::Pointer);
 +    _SQUID_INLINE_ void doneRequest(AuthUserRequest::Pointer);
 +#endif /* USER_REQUEST_LOOP_DEAD */
  
      void addToNameCache();
 +    static void UsernameCacheStats(StoreEntry * output);
  
  protected:
 -    AuthUser (AuthConfig *);
 +    AuthUser(AuthConfig *);
  
  private:
 -    static void cacheCleanup (void *unused);
 +    static void cacheCleanup(void *unused);
  
      /**
       * DPW 2007-05-08
index c514ca54ebcf593be2c4e8c0bf1d333fd88579e6,f936e1016f560b68aea60b0720aa8c05d93fd5e1..830ed008c270d06abdba04e1ed394eea5f6fda36
@@@ -179,9 -200,9 +179,9 @@@ AuthUserRequest::denyMessage(char cons
  }
  
  static void
- authenticateAuthUserRequestSetIp(AuthUserRequest::Pointer auth_user_request, IpAddress &ipaddr)
 -authenticateAuthUserRequestSetIp(AuthUserRequest * auth_user_request, Ip::Address &ipaddr)
++authenticateAuthUserRequestSetIp(AuthUserRequest::Pointer auth_user_request, Ip::Address &ipaddr)
  {
 -    AuthUser *auth_user = auth_user_request->user();
 +    AuthUser::Pointer auth_user = auth_user_request->user();
  
      if (!auth_user)
          return;
  }
  
  void
- authenticateAuthUserRequestRemoveIp(AuthUserRequest::Pointer auth_user_request, IpAddress const &ipaddr)
 -authenticateAuthUserRequestRemoveIp(AuthUserRequest * auth_user_request, Ip::Address const &ipaddr)
++authenticateAuthUserRequestRemoveIp(AuthUserRequest::Pointer auth_user_request, Ip::Address const &ipaddr)
  {
 -    AuthUser *auth_user = auth_user_request->user();
 +    AuthUser::Pointer auth_user = auth_user_request->user();
  
      if (!auth_user)
          return;
@@@ -306,8 -327,8 +306,8 @@@ authTryGetUser(AuthUserRequest::Pointe
   *
   * Caller is responsible for locking and unlocking their *auth_user_request!
   */
 -auth_acl_t
 -AuthUserRequest::authenticate(AuthUserRequest ** auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, Ip::Address &src_addr)
 +AuthAclState
- AuthUserRequest::authenticate(AuthUserRequest::Pointer * auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, IpAddress &src_addr)
++AuthUserRequest::authenticate(AuthUserRequest::Pointer * auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, Ip::Address &src_addr)
  {
      const char *proxy_auth;
      assert(headertype != 0);
      return AUTH_AUTHENTICATED;
  }
  
 -auth_acl_t
 -
 -AuthUserRequest::tryToAuthenticateAndSetAuthUser(AuthUserRequest ** auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, Ip::Address &src_addr)
 +AuthAclState
- AuthUserRequest::tryToAuthenticateAndSetAuthUser(AuthUserRequest::Pointer * auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, IpAddress &src_addr)
++AuthUserRequest::tryToAuthenticateAndSetAuthUser(AuthUserRequest::Pointer * auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, Ip::Address &src_addr)
  {
      /* If we have already been called, return the cached value */
 -    AuthUserRequest *t = authTryGetUser (auth_user_request, conn, request);
 +    AuthUserRequest::Pointer t = authTryGetUser(*auth_user_request, conn, request);
  
 -    if (t && t->lastReply != AUTH_ACL_CANNOT_AUTHENTICATE
 -            && t->lastReply != AUTH_ACL_HELPER) {
 -        if (!*auth_user_request)
 +    if (t != NULL && t->lastReply != AUTH_ACL_CANNOT_AUTHENTICATE && t->lastReply != AUTH_ACL_HELPER) {
 +        if (*auth_user_request == NULL)
              *auth_user_request = t;
  
 -        if (!request->auth_user_request && t->lastReply == AUTH_AUTHENTICATED) {
 +        if (request->auth_user_request == NULL && t->lastReply == AUTH_AUTHENTICATED) {
              request->auth_user_request = t;
 -            AUTHUSERREQUESTLOCK(request->auth_user_request, "request");
          }
          return t->lastReply;
      }
index cfc6a945ac720b40be6d27c129c4c90fb1bc1f38,a08066626e76d112778c5a0c9df3cdccce58c792..c8dad5cdfcae5d17ba5f3c44f9b137502f49253c
@@@ -113,14 -102,14 +113,14 @@@ public
       */
      virtual void module_start(RH *handler, void *data) = 0;
  
 -    virtual AuthUser *user() {return _auth_user;}
 +    virtual AuthUser::Pointer user() {return _auth_user;}
  
 -    virtual const AuthUser *user() const {return _auth_user;}
 +    virtual const AuthUser::Pointer user() const {return _auth_user;}
  
 -    virtual void user(AuthUser *aUser) {_auth_user=aUser;}
 +    virtual void user(AuthUser::Pointer aUser) {_auth_user=aUser;}
  
-     static AuthAclState tryToAuthenticateAndSetAuthUser(AuthUserRequest::Pointer *, http_hdr_type, HttpRequest *, ConnStateData *, IpAddress &);
 -    static auth_acl_t tryToAuthenticateAndSetAuthUser(AuthUserRequest **, http_hdr_type, HttpRequest *, ConnStateData *, Ip::Address &);
 -    static void addReplyAuthHeader(HttpReply * rep, AuthUserRequest * auth_user_request, HttpRequest * request, int accelerated, int internal);
++    static AuthAclState tryToAuthenticateAndSetAuthUser(AuthUserRequest::Pointer *, http_hdr_type, HttpRequest *, ConnStateData *, Ip::Address &);
 +    static void addReplyAuthHeader(HttpReply * rep, AuthUserRequest::Pointer auth_user_request, HttpRequest * request, int accelerated, int internal);
  
      AuthUserRequest();
  
  
  private:
  
-     static AuthAclState authenticate(AuthUserRequest::Pointer * auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, IpAddress &src_addr);
 -    static auth_acl_t authenticate(AuthUserRequest ** auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, Ip::Address &src_addr);
++    static AuthAclState authenticate(AuthUserRequest::Pointer * auth_user_request, http_hdr_type headertype, HttpRequest * request, ConnStateData * conn, Ip::Address &src_addr);
  
      /** return a message on the 407 error pages */
      char *message;
  
  /* AuthUserRequest */
  
 -/**
 - \ingroup AuthAPI
 - \deprecated Use AuthUserRequest::refCount() instead.
 - */
 -extern size_t authenticateRequestRefCount (AuthUserRequest *);
 -
  /// \ingroup AuthAPI
 -extern void authenticateFixHeader(HttpReply *, AuthUserRequest *, HttpRequest *, int, int);
 +extern void authenticateFixHeader(HttpReply *, AuthUserRequest::Pointer, HttpRequest *, int, int);
  /// \ingroup AuthAPI
 -extern void authenticateAddTrailer(HttpReply *, AuthUserRequest *, HttpRequest *, int);
 +extern void authenticateAddTrailer(HttpReply *, AuthUserRequest::Pointer, HttpRequest *, int);
  
  /// \ingroup AuthAPI
- extern void authenticateAuthUserRequestRemoveIp(AuthUserRequest::Pointer, IpAddress const &);
 -extern void authenticateAuthUserRequestRemoveIp(AuthUserRequest *, Ip::Address const &);
++extern void authenticateAuthUserRequestRemoveIp(AuthUserRequest::Pointer, Ip::Address const &);
  /// \ingroup AuthAPI
 -extern void authenticateAuthUserRequestClearIp(AuthUserRequest *);
 +extern void authenticateAuthUserRequestClearIp(AuthUserRequest::Pointer);
  /// \ingroup AuthAPI
 -extern int authenticateAuthUserRequestIPCount(AuthUserRequest *);
 +extern int authenticateAuthUserRequestIPCount(AuthUserRequest::Pointer);
  /// \ingroup AuthAPI
  /// \deprecated Use AuthUserRequest::direction() instead.
 -extern int authenticateDirection(AuthUserRequest *);
 +extern int authenticateDirection(AuthUserRequest::Pointer);
  
  /// \ingroup AuthAPI
  /// See AuthUserRequest::authenticated()
diff --cc src/cache_cf.cc
Simple merge
diff --cc src/cf.data.pre
Simple merge
Simple merge
Simple merge
index 23c71908b5adbacad3a11489f10b7fbc029ecb7d,6962571c1318c5edd52d2b3ee1352fd3214fbda4..7e60fb5192250807ed3615d5844d42add28f42a2
@@@ -94,10 -95,11 +95,10 @@@ clientReplyContext::clientReplyContext(
  void
  clientReplyContext::setReplyToError(
      err_type err, http_status status, const HttpRequestMethod& method, char const *uri,
-     IpAddress &addr, HttpRequest * failedrequest, const char *unparsedrequest,
+     Ip::Address &addr, HttpRequest * failedrequest, const char *unparsedrequest,
 -    AuthUserRequest * auth_user_request)
 +    AuthUserRequest::Pointer auth_user_request)
  {
 -    ErrorState *errstate =
 -        clientBuildError(err, status, uri, addr, failedrequest);
 +    ErrorState *errstate = clientBuildError(err, status, uri, addr, failedrequest);
  
      if (unparsedrequest)
          errstate->request_hdrs = xstrdup(unparsedrequest);
index 1bee5ced9a5145680ed036567b87c82d55d6a7de,760c86255ea200c5de31c26cd9abef33c47f8fa5..51e2a6434cd82bc6bbff68253de6854541bb3468
@@@ -72,7 -72,7 +72,7 @@@ public
      int storeOKTransferDone() const;
      int storeNotOKTransferDone() const;
  
-     void setReplyToError(err_type, http_status, const HttpRequestMethod&, char const *, IpAddress &, HttpRequest *, const char *, AuthUserRequest::Pointer);
 -    void setReplyToError(err_type, http_status, const HttpRequestMethod&, char const *, Ip::Address &, HttpRequest *, const char *, AuthUserRequest *);
++    void setReplyToError(err_type, http_status, const HttpRequestMethod&, char const *, Ip::Address &, HttpRequest *, const char *, AuthUserRequest::Pointer);
      void createStoreEntry(const HttpRequestMethod& m, request_flags flags);
      void removeStoreReference(store_client ** scp, StoreEntry ** ep);
      void removeClientStoreReference(store_client **scp, ClientHttpRequest *http);
Simple merge
diff --cc src/errorpage.h
Simple merge
Simple merge
diff --cc src/http.cc
Simple merge
diff --cc src/main.cc
Simple merge
diff --cc src/protos.h
Simple merge
diff --cc src/redirect.cc
Simple merge
diff --cc src/stat.cc
Simple merge
diff --cc src/structs.h
Simple merge
index 406fdbfb44a95e0c541c3c98c34c619444fd18b2,44086e760a1494b6d0cb78d965be4039a41fbd35..dfd442f483d2f81b6c15d1b32fb5a173087d2a8f
@@@ -47,8 -47,7 +47,8 @@@ protected
      void construction();
  };
  
- #ifdef HAVE_AUTH_MODULE_BASIC
+ #if HAVE_AUTH_MODULE_BASIC
 +#include "auth/basic/basicUserRequest.h"
  class testAuthBasicUserRequest : public CPPUNIT_NS::TestFixture
  {
      CPPUNIT_TEST_SUITE( testAuthBasicUserRequest );
@@@ -64,8 -63,7 +64,8 @@@ protected
  };
  #endif
  
- #ifdef HAVE_AUTH_MODULE_DIGEST
+ #if HAVE_AUTH_MODULE_DIGEST
 +#include "auth/digest/digestUserRequest.h"
  class testAuthDigestUserRequest : public CPPUNIT_NS::TestFixture
  {
      CPPUNIT_TEST_SUITE( testAuthDigestUserRequest );
@@@ -81,8 -79,7 +81,8 @@@ protected
  };
  #endif
  
- #ifdef HAVE_AUTH_MODULE_NTLM
+ #if HAVE_AUTH_MODULE_NTLM
 +#include "auth/ntlm/ntlmUserRequest.h"
  class testAuthNTLMUserRequest : public CPPUNIT_NS::TestFixture
  {
      CPPUNIT_TEST_SUITE( testAuthNTLMUserRequest );
@@@ -98,8 -95,7 +98,8 @@@ protected
  };
  #endif
  
- #ifdef HAVE_AUTH_MODULE_NEGOTIATE
+ #if HAVE_AUTH_MODULE_NEGOTIATE
 +#include "auth/negotiate/negotiateUserRequest.h"
  class testAuthNegotiateUserRequest : public CPPUNIT_NS::TestFixture
  {
      CPPUNIT_TEST_SUITE( testAuthNegotiateUserRequest );