| 96 | } |
| 97 | |
| 98 | apr_status_t md_reg_create(md_reg_t **preg, apr_pool_t *p, struct md_store_t *store, |
| 99 | const char *proxy_url, const char *ca_file, |
| 100 | apr_time_t min_delay, int retry_failover, |
| 101 | int use_store_locks, apr_time_t lock_wait_timeout) |
| 102 | { |
| 103 | md_reg_t *reg; |
| 104 | apr_status_t rv; |
| 105 | |
| 106 | reg = apr_pcalloc(p, sizeof(*reg)); |
| 107 | reg->p = p; |
| 108 | reg->store = store; |
| 109 | reg->protos = apr_hash_make(p); |
| 110 | reg->certs = apr_hash_make(p); |
| 111 | reg->can_http = 1; |
| 112 | reg->can_https = 1; |
| 113 | reg->proxy_url = proxy_url? apr_pstrdup(p, proxy_url) : NULL; |
| 114 | reg->ca_file = (ca_file && apr_cstr_casecmp("none", ca_file))? |
| 115 | apr_pstrdup(p, ca_file) : NULL; |
| 116 | reg->min_delay = min_delay; |
| 117 | reg->retry_failover = retry_failover; |
| 118 | reg->use_store_locks = use_store_locks; |
| 119 | reg->lock_wait_timeout = lock_wait_timeout; |
| 120 | |
| 121 | md_timeslice_create(®->renew_window, p, MD_TIME_LIFE_NORM, MD_TIME_RENEW_WINDOW_DEF); |
| 122 | md_timeslice_create(®->warn_window, p, MD_TIME_LIFE_NORM, MD_TIME_WARN_WINDOW_DEF); |
| 123 | |
| 124 | if (APR_SUCCESS == (rv = md_acme_protos_add(reg->protos, p))) { |
| 125 | rv = load_props(reg, p); |
| 126 | } |
| 127 | |
| 128 | *preg = (rv == APR_SUCCESS)? reg : NULL; |
| 129 | return rv; |
| 130 | } |
| 131 | |
| 132 | struct md_store_t *md_reg_store_get(md_reg_t *reg) |
| 133 | { |
no test coverage detected