summaryrefslogtreecommitdiff
path: root/daemon/bd.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/bd.c')
-rw-r--r--daemon/bd.c40
1 files changed, 13 insertions, 27 deletions
diff --git a/daemon/bd.c b/daemon/bd.c
index 5519cfa..9c3b429 100644
--- a/daemon/bd.c
+++ b/daemon/bd.c
@@ -174,8 +174,7 @@ static int do_basic_response(ha_request_t* rq, bd_context_t* ctx, const char* he
{
ha_messagex(rq, LOG_NOTICE, "validated basic user against cache: %s",
basic.user);
- ret = HA_OK;
- goto finally;
+ RETURN(HA_OK);
}
/* If we have a user name and password */
@@ -183,8 +182,7 @@ static int do_basic_response(ha_request_t* rq, bd_context_t* ctx, const char* he
!basic.password || !basic.password[0])
{
ha_messagex(rq, LOG_NOTICE, "no valid basic auth info");
- ret = HA_FALSE;
- goto finally;
+ RETURN(HA_FALSE);
}
ASSERT(ctx->f_validate_basic);
@@ -266,7 +264,7 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
if(!dg.client.username)
{
ha_messagex(rq, LOG_WARNING, "digest response contains no user name");
- goto finally;
+ RETURN(HA_FALSE);
}
#ifdef _DEBUG
@@ -275,7 +273,7 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
if(dg.client.nonce && strcmp(dg.client.nonce, rq->context->digest_debugnonce) != 0)
{
ha_messagex(rq, LOG_WARNING, "digest response contains invalid nonce");
- goto finally;
+ RETURN(HA_FALSE);
}
/* Do a rough hash into the real nonce, for use as a key */
@@ -305,7 +303,7 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
if(r == HA_FALSE)
ha_messagex(rq, LOG_WARNING, "digest response contains invalid nonce");
- goto finally;
+ RETURN(r);
}
/* Check to see if we're stale */
@@ -315,7 +313,7 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
dg.client.username);
stale = 1;
- goto finally;
+ RETURN(HA_FALSE);
}
}
@@ -340,7 +338,7 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
rq->resp_code = HA_SERVER_BADREQ;
}
- goto finally;
+ RETURN(ret);
}
/*
@@ -359,19 +357,13 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
rec = make_digest_rec(nonce, dg.client.username);
if(!rec)
- {
- ret = HA_CRITERROR;
- goto finally;
- }
+ RETURN(HA_CRITERROR);
ASSERT(ctx->f_validate_digest);
r = ctx->f_validate_digest(rq, dg.client.username, &dg);
if(r != HA_OK)
- {
- ret = r;
- goto finally;
- }
+ RETURN(r);
/* Save away pertinent information when successful*/
memcpy(rec->ha1, dg.ha1, MD5_LEN);
@@ -387,8 +379,7 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
if(md5_strcmp(rec->userhash, dg.client.username) != 0)
{
ha_messagex(NULL, LOG_ERR, "digest response contains invalid username");
- ret = HA_FALSE;
- goto finally;
+ RETURN(HA_FALSE);
}
/* And do the validation ourselves */
@@ -408,7 +399,7 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
ha_messagex(NULL, LOG_WARNING, "digest re-authentication failed for user: %s",
dg.client.username);
- goto finally;
+ RETURN(ret);
}
}
@@ -429,10 +420,7 @@ static int do_digest_response(ha_request_t* rq, bd_context_t* ctx, const char* h
t = digest_respond(&dg, rq->buf, stale ? nonce : NULL);
if(!t)
- {
- ret = HA_CRITERROR;
- goto finally;
- }
+ RETURN(HA_CRITERROR);
if(t[0])
ha_addheader(rq, "Authentication-Info", t);
@@ -450,7 +438,7 @@ finally:
free(rec);
/* If nobody above responded then challenge the client again */
- if(rq->resp_code == -1)
+ if(ret == HA_FALSE && rq->resp_code == -1)
return do_digest_challenge(rq, ctx, stale);
return ret;
@@ -552,8 +540,6 @@ int bd_init(ha_context_t* context)
htc.f_freeval = free_hash_object;
htc.arg = NULL;
hsh_set_table_calls(ctx->cache, &htc);
-
- ha_messagex(NULL, LOG_INFO, "initialized handler");
}
return HA_OK;