}
void
-ProxyAuthLookup::LookupDone(void *data, char *result)
+ProxyAuthLookup::LookupDone(void *data)
{
ACLFilledChecklist *checklist = Filled(static_cast<ACLChecklist*>(data));
assert (checklist->asyncState() == ProxyAuthLookup::Instance());
- if (result != NULL)
- fatal("AclLookupProxyAuthDone: Old code floating around somewhere.\nMake clean and if that doesn't work, report a bug to the squid developers.\n");
-
if (checklist->auth_user_request == NULL || !checklist->auth_user_request->valid() || checklist->conn() == NULL) {
/* credentials could not be checked either way
* restart the whole process */
private:
static ProxyAuthLookup instance_;
- static void LookupDone(void *data, char *result);
+ static void LookupDone(void *data);
};
class ACLProxyAuth : public ACL
class StateData
{
public:
- StateData(const UserRequest::Pointer &r, RH *h, void *d) :
+ StateData(const UserRequest::Pointer &r, AUTHCB *h, void *d) :
data(cbdataReference(d)),
auth_user_request(r),
handler(h) {}
void *data;
UserRequest::Pointer auth_user_request;
- RH *handler;
+ AUTHCB *handler;
private:
CBDATA_CLASS2(StateData);
/* send the initial data to an authenticator module */
void
-Auth::UserRequest::start(RH * handler, void *data)
+Auth::UserRequest::start(AUTHCB * handler, void *data)
{
assert(handler);
assert(data);
time_t ip_expiretime;
};
+// TODO: make auth schedule AsyncCalls?
+typedef void AUTHCB(void*);
+
namespace Auth
{
* \param handler Handler to process the callback when its run
* \param data CBDATA for handler
*/
- virtual void module_start(RH *handler, void *data) = 0;
+ virtual void module_start(AUTHCB *handler, void *data) = 0;
// User credentials object this UserRequest is managing
virtual User::Pointer user() {return _auth_user;}
/// Add the appropriate [Proxy-]Authenticate header to the given reply
static void addReplyAuthHeader(HttpReply * rep, UserRequest::Pointer auth_user_request, HttpRequest * request, int accelerated, int internal);
- void start( RH * handler, void *data);
+ void start(AUTHCB *handler, void *data);
char const * denyMessage(char const * const default_message = NULL);
/** Possibly overrideable in future */
/* send the initial data to a basic authenticator module */
void
-Auth::Basic::UserRequest::module_start(RH * handler, void *data)
+Auth::Basic::UserRequest::module_start(AUTHCB * handler, void *data)
{
assert(user()->auth_type == Auth::AUTH_BASIC);
Auth::Basic::User *basic_auth = dynamic_cast<Auth::Basic::User *>(user().getRaw());
if (static_cast<Auth::Basic::Config*>(Auth::Config::Find("basic"))->authenticateProgram == NULL) {
debugs(29, DBG_CRITICAL, "ERROR: No Basic authentication program configured.");
- handler(data, NULL);
+ handler(data);
return;
}
int sz = snprintf(buf, sizeof(buf), "%s %s\n", username, pass);
if (sz<=0) {
debugs(9, DBG_CRITICAL, "ERROR: Basic Authentication Failure. Can not build helper validation request.");
- handler(data, NULL);
+ handler(data);
} else if (static_cast<size_t>(sz) >= sizeof(buf)) {
debugs(9, DBG_CRITICAL, "ERROR: Basic Authentication Failure. user:password exceeds " << sizeof(buf) << " bytes.");
- handler(data, NULL);
+ handler(data);
} else
helperSubmit(basicauthenticators, buf, Auth::Basic::UserRequest::HandleReply,
new Auth::StateData(this, handler, data));
basic_auth->expiretime = squid_curtime;
if (cbdataReferenceValidDone(r->data, &cbdata))
- r->handler(cbdata, NULL);
+ r->handler(cbdata);
cbdataReferenceDone(r->data);
tmpnode = basic_auth->auth_queue->next;
if (cbdataReferenceValidDone(basic_auth->auth_queue->data, &cbdata))
- basic_auth->auth_queue->handler(cbdata, NULL);
+ basic_auth->auth_queue->handler(cbdata);
xfree(basic_auth->auth_queue);
virtual int authenticated() const;
virtual void authenticate(HttpRequest * request, ConnStateData *conn, http_hdr_type type);
virtual Auth::Direction module_direction();
- virtual void module_start(RH *, void *);
+ virtual void module_start(AUTHCB *, void *);
private:
static HLPCB HandleReply;
public:
BasicAuthQueueNode *next;
Auth::UserRequest::Pointer auth_user_request;
- RH *handler;
+ AUTHCB *handler;
void *data;
};
/* send the initial data to a digest authenticator module */
void
-Auth::Digest::UserRequest::module_start(RH * handler, void *data)
+Auth::Digest::UserRequest::module_start(AUTHCB * handler, void *data)
{
char buf[8192];
if (static_cast<Auth::Digest::Config*>(Auth::Config::Find("digest"))->authenticateProgram == NULL) {
debugs(29, DBG_CRITICAL, "ERROR: No Digest authentication program configured.");
- handler(data, NULL);
+ handler(data);
return;
}
}
if (cbdataReferenceValidDone(replyData->data, &cbdata))
- replyData->handler(cbdata, NULL);
+ replyData->handler(cbdata);
delete replyData;
}
virtual void addAuthenticationInfoTrailer(HttpReply * rep, int accel);
#endif
- virtual void module_start(RH *, void *);
+ virtual void module_start(AUTHCB *, void *);
char *nonceb64; /* "dcd98b7102dd2f0e8b11d0f600bfb0c093" */
char *cnonce; /* "0a4f113b" */
}
void
-Auth::Negotiate::UserRequest::module_start(RH * handler, void *data)
+Auth::Negotiate::UserRequest::module_start(AUTHCB * handler, void *data)
{
static char buf[MAX_AUTHTOKEN_LEN];
if (static_cast<Auth::Negotiate::Config*>(Auth::Config::Find("negotiate"))->authenticateProgram == NULL) {
debugs(29, DBG_CRITICAL, "ERROR: No Negotiate authentication program configured.");
- handler(data, NULL);
+ handler(data);
return;
}
}
lm_request->request = NULL;
- r->handler(r->data, NULL);
+ r->handler(r->data);
delete r;
}
virtual void authenticate(HttpRequest * request, ConnStateData * conn, http_hdr_type type);
virtual Direction module_direction();
virtual void onConnectionClose(ConnStateData *);
- virtual void module_start(RH *, void *);
+ virtual void module_start(AUTHCB *, void *);
virtual void addAuthenticationInfoHeader(HttpReply * rep, int accel);
}
void
-Auth::Ntlm::UserRequest::module_start(RH * handler, void *data)
+Auth::Ntlm::UserRequest::module_start(AUTHCB * handler, void *data)
{
static char buf[MAX_AUTHTOKEN_LEN];
if (static_cast<Auth::Ntlm::Config*>(Auth::Config::Find("ntlm"))->authenticateProgram == NULL) {
debugs(29, DBG_CRITICAL, "ERROR: NTLM Start: no NTLM program configured.");
- handler(data, NULL);
+ handler(data);
return;
}
HTTPMSGUNLOCK(lm_request->request);
lm_request->request = NULL;
}
- r->handler(r->data, NULL);
+ r->handler(r->data);
delete r;
}
virtual void authenticate(HttpRequest * request, ConnStateData * conn, http_hdr_type type);
virtual Auth::Direction module_direction();
virtual void onConnectionClose(ConnStateData *);
- virtual void module_start(RH *, void *);
+ virtual void module_start(AUTHCB *, void *);
virtual const char * connLastHeader();