| 1273 | } |
| 1274 | |
| 1275 | static int hook_note_digest_auth_failure(request_rec *r, const char *auth_type) |
| 1276 | { |
| 1277 | request_rec *mainreq; |
| 1278 | digest_header_rec *resp; |
| 1279 | digest_config_rec *conf; |
| 1280 | |
| 1281 | if (ap_cstr_casecmp(auth_type, "Digest")) |
| 1282 | return DECLINED; |
| 1283 | |
| 1284 | /* get the client response and mark */ |
| 1285 | |
| 1286 | mainreq = r; |
| 1287 | while (mainreq->main != NULL) { |
| 1288 | mainreq = mainreq->main; |
| 1289 | } |
| 1290 | while (mainreq->prev != NULL) { |
| 1291 | mainreq = mainreq->prev; |
| 1292 | } |
| 1293 | resp = (digest_header_rec *) ap_get_module_config(mainreq->request_config, |
| 1294 | &auth_digest_module); |
| 1295 | resp->needed_auth = 1; |
| 1296 | |
| 1297 | |
| 1298 | /* get our conf */ |
| 1299 | |
| 1300 | conf = (digest_config_rec *) ap_get_module_config(r->per_dir_config, |
| 1301 | &auth_digest_module); |
| 1302 | |
| 1303 | note_digest_auth_failure(r, conf, resp, 0); |
| 1304 | |
| 1305 | return OK; |
| 1306 | } |
| 1307 | |
| 1308 | |
| 1309 | /* |
nothing calls this directly
no test coverage detected