Hi,
    I used the following code to change the socket to non blocking, but its
still not successful, now its not even able to complete SSL_Accept. I am
changing the socket option for the accepted socket.

         unsigned long iMode = 1;
         int nReturn = ioctlsocket(sock, FIONBIO, &iMode);
         if(nReturn != NO_ERROR)
         {
             printf(("ioctlsocket failed with error: %ld\n", nReturn));
         }

    Also i suspect, that if i change the socket to non blocking, then my
current read write code will not work. i mean the one in which i use FD_SET
and select to perform operations.

Thanks.

// Harshvir

On Fri, May 6, 2011 at 10:33 PM, Gayathri Sundar <suraj...@gmail.com> wrote:

> Harsh.,
>
> If u have any specific doubts in writing this asynchronous state
> machine email me privately at suraj...@gmail.com.
> I am pretty much jobless right now and can spend some time on this.
>
> Thanks
> --Gayathri
>
>
> On Friday, May 6, 2011, Harshvir Sidhu <hvssi...@gmail.com> wrote:
> > Thanks, I will give this a try.
> > // Harshvir
> >
> > On Fri, May 6, 2011 at 6:44 PM, Eric S. Eberhard <fl...@vicsmba.com>
> wrote:
> > Change the sockets.  This is what I use:
> >
> > int setblock(fd, mode)
> > int fd;
> > int mode;                       /* True - blocking, False - non blocking
> */
> > {
> >         int flags;
> >         int prevmode;
> >
> >         flags = fcntl(fd, F_GETFL, 0);
> >         prevmode = !(flags & O_NDELAY);
> >         if (mode)
> >                 flags &= ~O_NDELAY;             /* turn blocking on */
> >         else
> >                 flags |= O_NDELAY;              /* turn blocking off */
> >         fcntl(fd, F_SETFL, flags);
> >
> >         return prevmode;
> > }
> >
> > Since it returns the existing mode you can use as such:
> >
> > prevmode = setblock(fd,0)                       /* turn of blocking */
> > /* do your thing */
> > (void)setblock(fd,prevmode);                    /* restore to original
> condition */
> >
> > At 04:15 PM 5/6/2011, you wrote:
> >
> > Thanks for the reply Gayathri.
> > Do you mean to changing the sockets to non blocking, or when i create bio
> for ssl to make that as non blocking?
> >
> > Thanks.
> >
> >
> > On Fri, May 6, 2011 at 6:03 PM, Gayathri Sundar <<mailto:
> suraj...@gmail.com>suraj...@gmail.com> wrote:
> > Harsh,
> >
> > Okay from what I can understand, if you make ur underlying fd non
> blocking then it would work fine. Blocking FDs, unless and until one client
> is finished with its processing the other client will not be able to
> communicate with the server as the previous fd is blocked. The server is
> waiting on the 1st client to finish. When you have 3 ports and 3 clients
> then ofcourse it will work.
> >
> > thanks
> > --Gayathri
> >
> >
> >
> > On Fri, May 6, 2011 at 5:50 PM, Harshvir Sidhu <<mailto:
> hvssi...@gmail.com>hvssi...@gmail.com> wrote:
> > Gayatri,
> > My server code is single threaded and i am using blocking sockets, i am
> using fd_set and select to wait for event on socket, and then performing
> operation based on the event that acts on a socket.
> > I have an array of sockets to listen. So if i start listening on 3
> different ports and from my client machien, i try to connect on them at
> different ports then it works fine, but when i use 1 listen port then it
> dont work properly. What i mean to say by work properly is that the
> connection is established, but when i am waiting for select to return event,
> then it dont show any activity when i send data from client, only 1 of them
> works, 2 dont work.
> > In addition to that, when i use WireShark to see packets, then it shows
> that machine has received the packet from client. But server dont show that
> alert.
> > Thats why i think it could be some socket option which is affecting it.
> >
> > // Harshvir
> >
> >
> >
> > On Fri, May 6, 2011 at 5:37 PM, Gayathri Sundar <<mailto:
> suraj...@gmail.com>suraj...@gmail.com> wrote:
> > Harshvir,
> >
> > SO_REUSEADDR sock option has noting to do with ur problem, please go thro
> the socket ops man page to get a better understanding. First find out if ur
> server code is a blocking i/o or non blocking I/O..if former then
> connections will be handled sequentially..only after the 1st client is
> finished will the server be able to respond to the 2nd connect request. If
> non blocking then there should be no problem. Check the code if you see and
> O_NONBLOCK flag set in some fcntl call or check for FIONBIO flag.
> >
> > Thanks
> > --Gayathri
> >
> >
> >
> > On Fri, May 6, 2011 at 5:29 PM, Harshvir Sidhu <<mailto:
> hvssi...@gmail.com>hvssi...@gmail.com> wrote:
> > Well i think this link is for my question.
> > I have already done 1-5 from the Before you ask list.
> > Number 6, i dont know anyone who use openssl.
> > Number 7, it will take a lot of time to go through all the code, i was
> just trying to save some time. I thought user discussion forums are for this
> only. I apologize for my understanding.
> >
>  ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
>

Reply via email to