| 621 | } |
| 622 | |
| 623 | apr_status_t md_reg_get_pubcert(const md_pubcert_t **ppubcert, md_reg_t *reg, |
| 624 | const md_t *md, int i, apr_pool_t *p) |
| 625 | { |
| 626 | apr_status_t rv = APR_SUCCESS; |
| 627 | const md_pubcert_t *pubcert; |
| 628 | const char *name; |
| 629 | |
| 630 | name = apr_psprintf(p, "%s[%d]", md->name, i); |
| 631 | pubcert = apr_hash_get(reg->certs, name, (apr_ssize_t)strlen(name)); |
| 632 | if (!pubcert && !reg->domains_frozen) { |
| 633 | rv = md_util_pool_vdo(pubcert_load, reg, reg->p, &pubcert, MD_SG_DOMAINS, md, i, NULL); |
| 634 | if (APR_STATUS_IS_ENOENT(rv)) { |
| 635 | /* We cache it missing with an empty record */ |
| 636 | pubcert = apr_pcalloc(reg->p, sizeof(*pubcert)); |
| 637 | } |
| 638 | else if (APR_SUCCESS != rv) goto leave; |
| 639 | if (p != reg->p) name = apr_pstrdup(reg->p, name); |
| 640 | apr_hash_set(reg->certs, name, (apr_ssize_t)strlen(name), pubcert); |
| 641 | } |
| 642 | leave: |
| 643 | if (APR_SUCCESS == rv && (!pubcert || !pubcert->certs)) { |
| 644 | rv = APR_ENOENT; |
| 645 | } |
| 646 | *ppubcert = (APR_SUCCESS == rv)? pubcert : NULL; |
| 647 | return rv; |
| 648 | } |
| 649 | |
| 650 | apr_status_t md_reg_get_cred_files(const char **pkeyfile, const char **pcertfile, |
| 651 | md_reg_t *reg, md_store_group_t group, |
no test coverage detected