X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=apps%2Focsp.c;h=5d3e646f81339ad8ffed7fb99a7199748876844c;hp=4c3aa394104e0db34f5aa47fcbddde639c9cefaf;hb=366e2a60b2fcc727b061f1459343245476ad6c3b;hpb=f20bb4eb18b01979cb23b2ae4a60675c83c4ba91 diff --git a/apps/ocsp.c b/apps/ocsp.c index 4c3aa39410..5d3e646f81 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -1010,22 +1010,27 @@ static BIO *init_responder(const char *port) { BIO *acbio = NULL, *bufbio = NULL; - bufbio = BIO_new(BIO_f_buffer()); - if (!bufbio) - goto err; -# ifndef OPENSSL_NO_SOCK - acbio = BIO_new_accept(port); -# else +# ifdef OPENSSL_NO_SOCK BIO_printf(bio_err, "Error setting up accept BIO - sockets not supported.\n"); + return NULL; # endif - if (!acbio) + bufbio = BIO_new(BIO_f_buffer()); + if (!bufbio) goto err; + acbio = BIO_new(BIO_s_accept()); + if (acbio == NULL + || BIO_set_bind_mode(acbio, BIO_BIND_REUSEADDR) < 0 + || BIO_set_accept_port(acbio, port) < 0) { + BIO_printf(bio_err, "Error setting up accept BIO\n"); + ERR_print_errors(bio_err); + goto err; + } + BIO_set_accept_bios(acbio, bufbio); bufbio = NULL; - if (BIO_do_accept(acbio) <= 0) { - BIO_printf(bio_err, "Error setting up accept BIO\n"); + BIO_printf(bio_err, "Error starting accept\n"); ERR_print_errors(bio_err); goto err; }