Re: Seeing issue with BIO_free call
"'Samiya Khanum' via openssl-users" <[email protected]> Mon, 22 Sep 2025 17:40:19 +0530
| Newsgroups | gmane.comp.encryption.openssl.user |
|---|---|
| Message-ID | <CADmX34oo7vbuCJVhhqH9ZXMK_F3w90AFOtnruU28i1t35r-pxA@mail.gmail.com> |
Hi, I would be grateful if someone could please provide some assistance or insights into this issue. Thanks & Regards, Samiya khanum On Fri, Sep 19, 2025 at 6:34 PM Samiya Khanum <[email protected]> wrote: > Hi, > > I'm encountering an issue with the `BIO_free` call in the following code > snippet. > > When `sslCleanupTask` is triggered and `BIO_free` is called, we > occasionally receive data on `listen_s`. This subsequently causes a hang > because `BIO_do_accept` in `sslListenTask` is then called on a file > descriptor that has already been freed or closed by `BIO_free`. > > Could you please explain why `listen_s` is set in `readfds` when > `BIO_free` is called? > I've attempted to set the `BIO_CLOSE` flag, but the issue persists. > > Do we need to set any other APIs or flags to prevent this? Please note > that we are not initiating any connections here. > > *sslListenTask()* > *{* > * BIO *ppBio = NULL;* > > * if ((ppBio = BIO_new_accept("[::]:443")) == NULL)* > * {* > * BIO_free(ppBio);* > * return;* > * }* > * BIO_set_bind_mode(ppBio, BIO_BIND_REUSEADDR);* > * /* First call sets up the BIO listening socket */* > * if (BIO_do_accept(ppBio) <= NULL)* > * {* > * BIO_free(ppBio);* > * return;* > * }* > * if( (listen_s = BIO_get_fd(ppBio,0)) <=0 )* > * {* > * BIO_free(ppBio);* > * return;* > * }* > * /** > * ** Loop waiting for SSLT connections* > * */* > * while (1)* > * {* > * fd_set readfds;* > * struct timeval tmout;* > * int num,max_fd;* > > * tmout.tv_sec = 3;* > * tmout.tv_usec = 0;* > * FD_ZERO(&readfds);* > * FD_SET(listen_s,&readfds);* > * max_fd = listen_s;* > > * num = select(max_fd + 1, &readfds, NULL, NULL, &tmout);* > > * if (num <= 0)* > * {* > * if (!((num < 0) && (EINTR == errno)))* > * {* > * /* Set cancellation point for timeout and other errors except > EINTR */* > * pthread_testcancel();* > * }* > > * continue;* > * }* > * if (FD_ISSET(listen_s, &readfds))* > * {* > * if (BIO_do_accept(rdy_acc) <= L7_NULL)* > * {* > * //err* > * }* > > * client = BIO_pop(rdy_acc);* > * //Rest of the program for SSL* > * } * > * } /* while */* > *}* > > *There is one more task doing the BIO_free if the SSL port changes.* > *sslCleanupTask()* > *{* > * BIO_free(ppBio);* > *}* > > Thanks & Regards, > Samiya khanum > -- You received this message because you are subscribed to the Google Groups "openssl-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to openssl-users+unsubscribe-MCmKBN63+Bmbup2nOX2J7Q@public.gmane.org To view this discussion visit https://groups.google.com/a/openssl.org/d/msgid/openssl-users/CADmX34oo7vbuCJVhhqH9ZXMK_F3w90AFOtnruU28i1t35r-pxA%40mail.gmail.com.
smime.p7s
(application/pkcs7-signature, 4.1 KB) - not displayed