diff -Naurp a/modules/md/md_curl.c b/modules/md/md_curl.c --- a/modules/md/md_curl.c 2021-05-12 12:14:42.000000000 +0200 +++ b/modules/md/md_curl.c 2021-09-15 15:37:32.716291831 +0200 @@ -493,7 +493,7 @@ static apr_status_t md_curl_multi_perfor else if (APR_STATUS_IS_ENOENT(rv)) { md_log_perror(MD_LOG_MARK, MD_LOG_TRACE3, 0, p, "multi_perform[%d reqs]: no more requests", requests->nelts); - if (!running) { + if (!requests->nelts) { goto leave; } break; @@ -526,13 +526,13 @@ static apr_status_t md_curl_multi_perfor } /* process status messages, e.g. that a request is done */ - while (1) { + while (running < requests->nelts) { curlmsg = curl_multi_info_read(curlm, &msgcount); if (!curlmsg) break; if (curlmsg->msg == CURLMSG_DONE) { req = find_curl_request(requests, curlmsg->easy_handle); if (req) { - md_log_perror(MD_LOG_MARK, MD_LOG_TRACE3, 0, p, + md_log_perror(MD_LOG_MARK, MD_LOG_TRACE2, 0, p, "multi_perform[%d reqs]: req[%d] done", requests->nelts, req->id); update_status(req); @@ -548,7 +548,6 @@ static apr_status_t md_curl_multi_perfor } } } - assert(running == requests->nelts); }; leave: diff -Naurp a/modules/md/md_ocsp.c b/modules/md/md_ocsp.c --- a/modules/md/md_ocsp.c 2021-05-12 12:14:42.000000000 +0200 +++ b/modules/md/md_ocsp.c 2021-09-15 15:37:32.717291832 +0200 @@ -633,7 +633,11 @@ static apr_status_t ostat_on_resp(const if (NULL == (ocsp_resp = d2i_OCSP_RESPONSE(NULL, (const unsigned char**)&der.data, (long)der.len))) { rv = APR_EINVAL; - md_result_set(update->result, rv, "response body does not parse as OCSP response"); + + md_result_set(update->result, rv, + apr_psprintf(req->pool, "req[%d] response body does not parse as " + "OCSP response, status=%d, body brigade length=%ld", + resp->req->id, resp->status, (long)der.len)); md_result_log(update->result, MD_LOG_DEBUG); goto cleanup; } @@ -659,7 +663,7 @@ static apr_status_t ostat_on_resp(const * to accept it. */ switch ((n = OCSP_check_nonce(ostat->ocsp_req, basic_resp))) { case 1: - md_log_perror(MD_LOG_MARK, MD_LOG_DEBUG, 0, req->pool, + md_log_perror(MD_LOG_MARK, MD_LOG_TRACE3, 0, req->pool, "req[%d]: OCSP respoonse nonce does match", req->id); break; case 0: @@ -669,7 +673,7 @@ static apr_status_t ostat_on_resp(const goto cleanup; case -1: - md_log_perror(MD_LOG_MARK, MD_LOG_TRACE1, 0, req->pool, + md_log_perror(MD_LOG_MARK, MD_LOG_TRACE3, 0, req->pool, "req[%d]: OCSP respoonse did not return the nonce", req->id); break; default: @@ -827,6 +831,9 @@ static apr_status_t next_todo(md_http_re md_http_set_on_status_cb(req, ostat_on_req_status, update); md_http_set_on_response_cb(req, ostat_on_resp, update); rv = APR_SUCCESS; + md_log_perror(MD_LOG_MARK, MD_LOG_TRACE2, 0, req->pool, + "scheduling OCSP request for %s, %d request in flight", + ostat->md_name, in_flight); } } cleanup: