Return-Path: Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: (qmail 77131 invoked from network); 2 Sep 2007 12:59:46 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Sep 2007 12:59:46 -0000 Received: (qmail 96945 invoked by uid 500); 2 Sep 2007 12:59:39 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 96889 invoked by uid 500); 2 Sep 2007 12:59:39 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 96878 invoked by uid 99); 2 Sep 2007 12:59:39 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 02 Sep 2007 05:59:39 -0700 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [199.203.54.245] (HELO vl654.host245.netvision.net.il) (199.203.54.245) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 02 Sep 2007 13:00:42 +0000 Received: from [192.168.210.240] (85-250-41-250.bb.netvision.net.il [85.250.41.250]) (authenticated bits=0) by mail1.mirimar.net (8.13.4/8.13.4/Debian-3sarge3) with ESMTP id l82Cx0Jt007906 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sun, 2 Sep 2007 15:59:03 +0300 Message-ID: <46DAB391.303@beamartyr.net> Date: Sun, 02 Sep 2007 15:58:57 +0300 From: Issac Goldstand User-Agent: Thunderbird 2.0.0.6 (Windows/20070728) MIME-Version: 1.0 To: dev@httpd.apache.org Subject: Revisiting UDP support (for trunk) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/4131/Sun Sep 2 11:47:51 2007 on hector.mirimar.net X-Virus-Status: Clean X-Virus-Checked: Checked by ClamAV on apache.org Hi all, I've been quietly hacking away at getting UDP support working with trunk (prefork/unix only, for starters). While I had a decent amount of success, I eventually got stuck: my original naive plan had been to poll, recvfrom (to get peer address), dup the socket, connect the dup-ed socket and close the dup-ed socket after processing a single request (as defined by the connection/protocol handlers). The hope was that since we never connected the original socket, it would still do something useful. To make a long story short, I found that it wasn't doing anything of the sort. Before I launch into a new tactic, I wanted to see if someone has a better idea than me - the only thing that pops into my mind is moving some sort of pointers to the UDP listeners into the scoreboard (or some other R/W shared area) and simply letting the children/workers lock used sockets (so other children/workers don't poll it), and completely replace them after they're used. There are a lot of disadvantages to doing that, I think, but I can't dream up a smarter solution. Anyone have any ideas? Issac