lkml.org 
[lkml]   [2002]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectAccept -- still confused.
Hello,

I've been trying to implement queuing and 'accept' in my protocol for few
weeks.
The way 'accept' should work is still not clear for me:
We have a socket s and we do the following in the server:
1. listen(s) -- thus s->sk_state = TCP_LISTEN.
2. accept(s) -- put a process into sleep.
...
3. receiving function gets an 'init' packet and looks for a socket which
matches packet's destination. The lookup returns s (!).
4. I put s on a queue (sk->tp_pinfo.af_tcp.accept_queue) and wake up the
process (why to put s itself on it's own queue?).
5. accept resumes, grabs first socket from the queue (s) and changes its'
state to TCP_ESTABLISHED and returns it to inet_accpet. (but this is the
same socket we've been listening on:( ).
6. inet_accept grafts s into a new socket(ok), but s is now in
TCP_ESTABLISHED state, instead of TCP_LISTEN, which ruins next connection.

How to keep the listening state and return the valid socket to
inet_accept, without messing with inet_accept itself?
My problem is the socket I am listening on and to which the 'init' packet
is destinated are the same.

Thanks for anything.
-marek


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:21    [W:0.054 / U:3.888 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site