Can somebody give me an advice about what to learn?

Chris Angelico rosuav at gmail.com
Sun Sep 30 19:11:01 EDT 2012


On Mon, Oct 1, 2012 at 8:14 AM, Roy Smith <roy at panix.com> wrote:
> Yeah, that's a problem.  There's nothing fundamental about a TCP
> connection endpoint which precludes it being serialized and passed
> around.  The amount of state involved is pretty small.  Unless I've
> forgotten something, 2 IP addresses, 2 port numbers, a few bits worth of
> TCP protocol state, and, for open connections, 2 sequence numbers.
> Maybe a couple of timers, but I don't think they're strictly necessary.
> The problem is, most of that state is private to the kernel.

And can change at a moment's notice, with no userspace interaction.
The socket connection also needs to retain sent-but-not-acknowledged
and received-but-not-in-order data, so those buffers need to exist.
The only way would be for the kernel to export something representing
a socket - which would be the file handle.

And then you have to worry about any other state, eg if you're reading
line by line and are retaining a partial line... not really something
that can be patched in five seconds, and not IMHO worth trying to do.
Easier to simply retain the process ID.

Oh, and if the pid changes on a live connection, what will that do
with iptables controls, which can look at the originating process's
user id and such? Hrm.

ChrisA



More information about the Python-list mailing list