Path: csiph.com!usenet.pasdenom.info!dedibox.gegeweb.org!gegeweb.eu!nntpfeed.proxad.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!nerim.net!novso.com!news2.euro.net!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.009 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'socket': 0.05; 'bits': 0.07; 'notice,': 0.07; 'exist.': 0.09; 'oh,': 0.09; 'yeah,': 0.09; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'hrm.': 0.16; 'kernel.': 0.16; 'oct': 0.16; 'roy': 0.16; 'seconds,': 0.16; 'tcp': 0.16; 'mon,': 0.16; 'wrote:': 0.17; 'changes': 0.20; 'trying': 0.21; 'do.': 0.21; 'received:209.85.214.174': 0.21; "i've": 0.23; 'header:In-Reply- To:1': 0.25; 'am,': 0.27; 'necessary.': 0.27; 'message- id:@mail.gmail.com': 0.27; 'buffers': 0.29; 'subject:what': 0.29; 'maybe': 0.29; 'connection': 0.30; 'problem.': 0.32; 'file': 0.32; 'retain': 0.33; 'problem': 0.33; 'to:addr:python-list': 0.33; 'received:google.com': 0.34; 'data,': 0.35; 'protocol': 0.35; 'sequence': 0.35; 'open': 0.35; 'subject:?': 0.35; 'received:209.85': 0.35; 'something': 0.35; 'really': 0.36; 'but': 0.36; 'being': 0.37; 'passed': 0.37; 'received:209': 0.37; 'subject:: ': 0.38; 'easier': 0.38; 'nothing': 0.38; 'to:addr:python.org': 0.39; 'received:209.85.214': 0.39; 'header:Received:5': 0.40; 'think': 0.40; 'most': 0.61; 'export': 0.62; 'worth': 0.63; 'state,': 0.65; 'connection,': 0.71; 'smith': 0.71; 'interaction.': 0.84; 'subject:learn': 0.84; 'forgotten': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=wYtstJaY0CBPGOPWT+9GhOfW2g8/aYxmOpsUgqce2PU=; b=puCKP3gy71gzmGvT59654vRcrKS/r9YNA6y5cuk4397VHKnGT1gM+ryJa2jcTqHkXm 9tqgkLC0ELhRywTkaJTsYDJCdCcOYRG/+8HS4oIEg2q+eunFvNIhv60SFLGKdSa1BrA2 cA6QWAPzTbeV+mR13HQkd4XtuCBQs9YRcPS9PZsfwI54zmUIH21Ww6nuSwJ/P1CGWxDP 6A+7+ly4l0af6NDx9D89EOK6+DecQIkiLkxL38DqM9hzYNCgqvPKGhJpWp1oXyIggr0e D1axvn3wTGRKEVrcFA8Rf8SKD5uNA+9HhMYH7LnHbSb0MhLyO671G6BGWG4Qy6WZVZi9 QQOA== MIME-Version: 1.0 In-Reply-To: References: <15f76508-437a-4d18-ac9b-16174ef172e8@googlegroups.com> Date: Mon, 1 Oct 2012 09:11:01 +1000 Subject: Re: Can somebody give me an advice about what to learn? From: Chris Angelico To: python-list@python.org Content-Type: text/plain; charset=ISO-8859-1 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 25 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1349046663 news.xs4all.nl 6867 [2001:888:2000:d::a6]:60201 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:30573 On Mon, Oct 1, 2012 at 8:14 AM, Roy Smith 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