diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 1d2ae2bafb591287b63f10c8661b7bfb29642871..7c05cdd8ecc6c020bf0338f3faaf1d48b3d75142 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -1707,6 +1707,7 @@ void DLLCALL services_thread(void* arg) struct timeval tv; service_client_t* client; char ssl_estr[SSL_ESTR_LEN]; + BOOL need_cert = FALSE; services_ver(); @@ -1841,11 +1842,7 @@ void DLLCALL services_thread(void* arg) continue; } if(scfg.tls_certificate == -1) { - get_ssl_cert(&scfg, ssl_estr); - if (scfg.tls_certificate == -1) { - lprintf(LOG_ERR, "Error creating TLS certificate: %s", ssl_estr); - continue; - } + need_cert = TRUE; } } service[i].set=xpms_create(startup->bind_retry_count, startup->bind_retry_delay, lprintf); @@ -1911,6 +1908,12 @@ void DLLCALL services_thread(void* arg) if(startup->started!=NULL) startup->started(startup->cbdata); + if (need_cert) { + get_ssl_cert(&scfg, ssl_estr); + if (scfg.tls_certificate == -1) + lprintf(LOG_ERR, "Error creating TLS certificate: %s", ssl_estr); + } + lprintf(LOG_INFO,"0000 Services thread started (%u service sockets bound)", total_sockets); /* Main Server Loop */