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

Reply via email to