diff options
Diffstat (limited to 'daemon/bd.c')
| -rw-r--r-- | daemon/bd.c | 40 | 
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; | 
