Hi Eric., First of all i am a she :) and I took a maternity break off from work..which is why I am jobless..but busy feeding and diapering my little one :)..sure I can take up your offer, please email me at suraj...@gmail.com.
harsh., The thing is as Eric says, you really have to rewrite ur server code once you make the fd non blocking..a simple fcntl is enuf. Also I would personally prefer sys poll over select on Linux..u could research about the former. Select is boring to me. the whole idea of non blocking is that a single call to ssl accept is not going to finish the complete ssl handshake. If you read the rfc you will know the multiple messages that are exchanged for a single ssl handshake, so in-between every read and write for the ssl handshake the non blocking fd would actually give you time to do "something else" . So what you really need is a state machine, which is noting but a array of function pointers (2d) in this case. I would write something like this States: ssl accept pending, ssl accepted, ssl read blocked on write, ssl read, ssl write blocked on read, ssl write, ssl renegotiate Have a function for each state specified above which would do ssl_accept, ssl_read, ssl_write and so on. Thanks --Gayathri On Monday, May 9, 2011, Eric S. Eberhard <fl...@vicsmba.com> wrote: > Harsh, > > I would take up his offer of help. Socket control over multiple sockets is > tricky code and very specific to what you are trying to do. My environment > is single threaded and does similar things to yours -- but as Gayathri said, > there are many details and exceptions and although with some online help or > books I am sure with enough time you could do it (took me forever the first > time) I suspect that this offer is as good as they get. I am not jobless > (lucky me) so I can't put in the time he can. > > Gayathri -- would you be interested in pure C coding on a contract basis > (intermittent, not really a job, more like occasional tasks) -- the code we > write runs on AIX, Linux, OS/X, SCO, HP/UX, Centos, etc. so it is a little > tricky to make work. If you have interest let me know your rates and real > email and so forth. > > Thanks, Eric > > > At 08:33 PM 5/6/2011, you 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 > > > > Eric S. Eberhard > (928) 567-3727 Voice > (928) 567-6122 Fax > (928) 301-7537 Cell > > Vertical Integrated Computer Systems, LLC > Metropolis Support, LLC > > For Metropolis support and VICS MBA Support!!!! http://www.vicsmba.com > > Pictures of Snake in Spring > > http://www.facebook.com/album.php?aid=115547&id=1409661701&l=1c375e1f49 > > Pictures of Camp Verde > > http://www.facebook.com/album.php?aid=12771&id=1409661701&l=fc0e0a2bcf > > Pictures of Land Cruiser in Sedona > > http://www.facebook.com/album.php?aid=50953&id=1409661701 > > Pictures of Flagstaff area near our cabin > > http://www.facebook.com/album.php?aid=12750&id=1409661701 > > Pictures of Cheryl in a Horse Show > > http://www.facebook.com/album.php?aid=32484&id=1409661701 > > > Pictures of the AZ Desert > > http://www.facebook.com/album.php?aid=58827&id=1409661701 > > (You can see why we love this state :-) ) > > > > > > > > > ______________________________________________________________________ > OpenSSL Project http://www.openssl.org > User Support Mailing List openssl-users@openssl.org > Automated List Manager majord...@openssl.org > ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org