=== modified file 'src/auth/State.cc' --- src/auth/State.cc 2010-02-12 10:51:58 +0000 +++ src/auth/State.cc 2011-06-04 11:24:37 +0000 @@ -1,11 +1,4 @@ #include "config.h" #include "auth/State.h" -CBDATA_GLOBAL_TYPE(authenticateStateData); - -void -authenticateStateFree(authenticateStateData * r) -{ - r->auth_user_request = NULL; - cbdataFree(r); -} +CBDATA_NAMESPACED_CLASS_INIT(Auth, StateData); === modified file 'src/auth/State.h' --- src/auth/State.h 2011-02-07 10:27:53 +0000 +++ src/auth/State.h 2011-06-04 11:00:12 +0000 @@ -4,19 +4,36 @@ #if USE_AUTH #include "auth/UserRequest.h" +#include "cbdata.h" + +namespace Auth +{ /** * CBDATA state for NTLM, Negotiate, and Digest stateful authentication. */ -typedef struct { +class StateData { +public: + StateData(const AuthUserRequest::Pointer &r, RH *h, void *d) : + data(cbdataReference(d)), + auth_user_request(r), + handler(h) + {} + + ~StateData() { + auth_user_request = NULL; + cbdataReferenceDone(data); + } + void *data; AuthUserRequest::Pointer auth_user_request; RH *handler; -} authenticateStateData; - -extern CBDATA_GLOBAL_TYPE(authenticateStateData); - -extern void authenticateStateFree(authenticateStateData * r); + +private: + CBDATA_CLASS2(StateData); +}; + +} // namespace Auth #endif /* USE_AUTH */ #endif /* __AUTH_AUTHENTICATE_STATE_T__ */ === modified file 'src/auth/basic/auth_basic.cc' --- src/auth/basic/auth_basic.cc 2011-04-14 02:40:59 +0000 +++ src/auth/basic/auth_basic.cc 2011-06-04 06:00:14 +0000 @@ -138,7 +138,7 @@ static void authenticateBasicHandleReply(void *data, char *reply) { - authenticateStateData *r = static_cast(data); + Auth::StateData *r = static_cast(data); BasicAuthQueueNode *tmpnode; char *t = NULL; void *cbdata; @@ -188,7 +188,7 @@ basic_auth->auth_queue = tmpnode; } - authenticateStateFree(r); + delete r; } void @@ -416,8 +416,6 @@ basicauthenticators->ipc_type = IPC_STREAM; helperOpenServers(basicauthenticators); - - CBDATA_INIT_TYPE(authenticateStateData); } } @@ -450,13 +448,8 @@ { /* mark the user as having verification in progress */ credentials(Auth::Pending); - authenticateStateData *r = NULL; char buf[8192]; char user[1024], pass[1024]; - r = cbdataAlloc(authenticateStateData); - r->handler = handler; - r->data = cbdataReference(data); - r->auth_user_request = auth_user_request; if (static_cast(config)->utf8) { latin1_to_utf8(user, sizeof(user), username()); latin1_to_utf8(pass, sizeof(pass), passwd); @@ -467,5 +460,6 @@ xstrncpy(pass, rfc1738_escape(passwd), sizeof(pass)); } snprintf(buf, sizeof(buf), "%s %s\n", user, pass); - helperSubmit(basicauthenticators, buf, authenticateBasicHandleReply, r); + helperSubmit(basicauthenticators, buf, authenticateBasicHandleReply, + new Auth::StateData(auth_user_request, handler, data)); } === modified file 'src/auth/digest/UserRequest.cc' --- src/auth/digest/UserRequest.cc 2011-05-08 13:53:10 +0000 +++ src/auth/digest/UserRequest.cc 2011-06-04 11:23:03 +0000 @@ -247,7 +247,6 @@ void AuthDigestUserRequest::module_start(RH * handler, void *data) { - authenticateStateData *r = NULL; char buf[8192]; assert(user() != NULL && user()->auth_type == Auth::AUTH_DIGEST); @@ -259,10 +258,6 @@ return; } - r = cbdataAlloc(authenticateStateData); - r->handler = handler; - r->data = cbdataReference(data); - r->auth_user_request = static_cast(this); if (static_cast(Auth::Config::Find("digest"))->utf8) { char userstr[1024]; latin1_to_utf8(userstr, sizeof(userstr), user()->username()); @@ -271,13 +266,14 @@ snprintf(buf, 8192, "\"%s\":\"%s\"\n", user()->username(), realm); } - helperSubmit(digestauthenticators, buf, AuthDigestUserRequest::HandleReply, r); + helperSubmit(digestauthenticators, buf, AuthDigestUserRequest::HandleReply, + new Auth::StateData(this, handler, data)); } void AuthDigestUserRequest::HandleReply(void *data, char *reply) { - authenticateStateData *replyData = static_cast < authenticateStateData * >(data); + Auth::StateData *replyData = static_cast(data); char *t = NULL; void *cbdata; debugs(29, 9, HERE << "{" << (reply ? reply : "") << "}"); @@ -315,7 +311,5 @@ if (cbdataReferenceValidDone(replyData->data, &cbdata)) replyData->handler(cbdata, NULL); - replyData->auth_user_request = NULL; - - cbdataFree(replyData); + delete replyData; } === modified file 'src/auth/digest/auth_digest.cc' --- src/auth/digest/auth_digest.cc 2011-04-14 02:40:59 +0000 +++ src/auth/digest/auth_digest.cc 2011-06-04 05:45:13 +0000 @@ -65,8 +65,6 @@ static int authdigest_initialised = 0; static MemAllocator *digest_nonce_pool = NULL; -// CBDATA_TYPE(DigestAuthenticateStateData); - enum http_digest_attr_type { DIGEST_USERNAME, DIGEST_REALM, @@ -590,8 +588,6 @@ digestauthenticators->ipc_type = IPC_STREAM; helperOpenServers(digestauthenticators); - - CBDATA_INIT_TYPE(authenticateStateData); } } === modified file 'src/auth/negotiate/UserRequest.cc' --- src/auth/negotiate/UserRequest.cc 2011-05-08 13:53:10 +0000 +++ src/auth/negotiate/UserRequest.cc 2011-06-04 06:02:33 +0000 @@ -97,11 +97,6 @@ debugs(29, 8, HERE << "credentials state is '" << user()->credentials() << "'"); - authenticateStateData *r = cbdataAlloc(authenticateStateData); - r->handler = handler; - r->data = cbdataReference(data); - r->auth_user_request = this; - if (user()->credentials() == Auth::Pending) { snprintf(buf, sizeof(buf), "YR %s\n", client_blob); //CHECKME: can ever client_blob be 0 here? } else { @@ -111,7 +106,9 @@ waiting = 1; safe_free(client_blob); - helperStatefulSubmit(negotiateauthenticators, buf, AuthNegotiateUserRequest::HandleReply, r, authserver); + + helperStatefulSubmit(negotiateauthenticators, buf, AuthNegotiateUserRequest::HandleReply, + new Auth::StateData(this, handler, data), authserver); } /** @@ -234,18 +231,15 @@ void AuthNegotiateUserRequest::HandleReply(void *data, void *lastserver, char *reply) { - authenticateStateData *r = static_cast(data); + Auth::StateData *r = static_cast(data); - int valid; char *blob, *arg = NULL; debugs(29, 8, HERE << "helper: '" << lastserver << "' sent us '" << (reply ? reply : "") << "'"); - valid = cbdataReferenceValid(r->data); - if (!valid) { + if (!cbdataReferenceValid(r->data)) { debugs(29, DBG_IMPORTANT, "ERROR: Negotiate Authentication invalid callback data. helper '" << lastserver << "'."); - cbdataReferenceDone(r->data); - authenticateStateFree(r); + delete r; return; } @@ -367,8 +361,7 @@ lm_request->request = NULL; r->handler(r->data, NULL); - cbdataReferenceDone(r->data); - authenticateStateFree(r); + delete r; } void === modified file 'src/auth/negotiate/auth_negotiate.cc' --- src/auth/negotiate/auth_negotiate.cc 2011-04-14 02:40:59 +0000 +++ src/auth/negotiate/auth_negotiate.cc 2011-06-04 05:51:09 +0000 @@ -181,8 +181,6 @@ negotiateauthenticators->ipc_type = IPC_STREAM; helperStatefulOpenServers(negotiateauthenticators); - - CBDATA_INIT_TYPE(authenticateStateData); } } === modified file 'src/auth/ntlm/UserRequest.cc' --- src/auth/ntlm/UserRequest.cc 2011-05-08 13:53:10 +0000 +++ src/auth/ntlm/UserRequest.cc 2011-06-04 05:57:37 +0000 @@ -92,11 +92,6 @@ debugs(29, 8, HERE << "credentials state is '" << user()->credentials() << "'"); - authenticateStateData *r = cbdataAlloc(authenticateStateData); - r->handler = handler; - r->data = cbdataReference(data); - r->auth_user_request = this; - if (user()->credentials() == Auth::Pending) { snprintf(buf, sizeof(buf), "YR %s\n", client_blob); //CHECKME: can ever client_blob be 0 here? } else { @@ -106,7 +101,8 @@ waiting = 1; safe_free(client_blob); - helperStatefulSubmit(ntlmauthenticators, buf, AuthNTLMUserRequest::HandleReply, r, authserver); + helperStatefulSubmit(ntlmauthenticators, buf, AuthNTLMUserRequest::HandleReply, + new Auth::StateData(this, handler, data), authserver); } /** @@ -229,18 +225,14 @@ void AuthNTLMUserRequest::HandleReply(void *data, void *lastserver, char *reply) { - authenticateStateData *r = static_cast(data); - - int valid; + Auth::StateData *r = static_cast(data); char *blob; debugs(29, 8, HERE << "helper: '" << lastserver << "' sent us '" << (reply ? reply : "") << "'"); - valid = cbdataReferenceValid(r->data); - if (!valid) { + if (!cbdataReferenceValid(r->data)) { debugs(29, DBG_IMPORTANT, "ERROR: NTLM Authentication invalid callback data. helper '" << lastserver << "'."); - cbdataReferenceDone(r->data); - authenticateStateFree(r); + delete r; return; } @@ -349,6 +341,5 @@ lm_request->request = NULL; } r->handler(r->data, NULL); - cbdataReferenceDone(r->data); - authenticateStateFree(r); + delete r; } === modified file 'src/auth/ntlm/auth_ntlm.cc' --- src/auth/ntlm/auth_ntlm.cc 2011-04-14 02:40:59 +0000 +++ src/auth/ntlm/auth_ntlm.cc 2011-06-04 05:57:55 +0000 @@ -168,8 +168,6 @@ ntlmauthenticators->ipc_type = IPC_STREAM; helperStatefulOpenServers(ntlmauthenticators); - - CBDATA_INIT_TYPE(authenticateStateData); } }