The -t option goes way; we listen on both TCP and UDP.
authorEric S. Raymond <esr@thyrsus.com>
Tue, 28 Aug 2012 10:49:51 +0000 (06:49 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Tue, 28 Aug 2012 10:49:51 +0000 (06:49 -0400)
irker.py
irker.xml

index 5f95a2f431f18cc884328e0489969fe75721ae8d..792ee16f1e09cdcc5b8e941d2f4144c0f9c706c7 100755 (executable)
--- a/irker.py
+++ b/irker.py
@@ -12,16 +12,11 @@ a list of such strings; in the latter case the message is broadcast to
 all listed channels.  Note that the channel portion of the URL will
 *not* have a leading '#' unless the channel name itself does.
 
-Message transmission is normally via UDP, optimizing for lowest
-latency and network load by avoiding TCP connection setup time; the
-cost is that delivery is not reliable in the face of packet loss.
-The -t option changes this, telling the daemon to use TCP instead.
-
-Other options: -p sets the listening port, -n sets the name suffix
-for the nicks that irker uses.  The default suffix is derived from the
-FQDN of the site on which irker is running; the intent is to avoid
-nick collisions by instances running on different sites. The -V
-option prints the program version and exits.
+Options: -p sets the listening port, -n sets the name suffix for the
+nicks that irker uses.  The default suffix is derived from the FQDN of
+the site on which irker is running; the intent is to avoid nick
+collisions by instances running on different sites. The -V option
+prints the program version and exits.
 
 Requires Python 2.6 and the irc.client library: see
 
@@ -242,8 +237,7 @@ if __name__ == '__main__':
     port = PORT
     namesuffix = None
     debuglevel = 0
-    tcp = False
-    (options, arguments) = getopt.getopt(sys.argv[1:], "d:p:n:t:V")
+    (options, arguments) = getopt.getopt(sys.argv[1:], "d:p:n:V")
     for (opt, val) in options:
         if opt == '-d':                # Enable debug/progress messages
             debuglevel = int(val)
@@ -253,19 +247,13 @@ if __name__ == '__main__':
             port = int(val)
         elif opt == '-n':      # Set the name suffix for irker nicks
             namesuffix = val
-        elif opt == '-t':      # Use TCP rather than UDP
-            tcp = True
         elif opt == '-V':      # Emit version and exit
             sys.stdout.write("irker version %s\n" % version)
             sys.exit(0)
     irker = Irker(debuglevel=debuglevel, namesuffix=namesuffix)
-    if tcp:
-        server = SocketServer.TCPServer((host, port), IrkerTCPHandler)
-    else:
-        server = SocketServer.UDPServer((host, port), IrkerUDPHandler)
-    try:
-        server.serve_forever()
-    except KeyboardInterrupt:
-        pass
+    tcpserver = SocketServer.TCPServer((host, port), IrkerTCPHandler)
+    udpserver = SocketServer.UDPServer((host, port), IrkerUDPHandler)
+    threading.Thread(target=tcpserver.serve_forever).start()
+    threading.Thread(target=udpserver.serve_forever).start()
 
 # end
index c67c5e74b766726ca26e5143aebd05e3050a84bc..5d284b9ed825aaa618b201b0611b72b99138e4f2 100644 (file)
--- a/irker.xml
+++ b/irker.xml
@@ -17,8 +17,7 @@
 <refsynopsisdiv id='synopsis'>
 
 <cmdsynopsis>
-  <command>irker</command>
-     <arg>-t</arg>
+  <command>irker.py</command>
      <arg>-p <replaceable>number</replaceable></arg>
      <arg>-n <replaceable>namesuffix</replaceable></arg>
      <arg>-d <replaceable>debuglevel</replaceable></arg>
@@ -69,11 +68,6 @@ nick collisions by instances running on different sites.</para></listitem>
 daemon will listen.</para></listitem>
 </varlistentry>
 <varlistentry>
-<term>-t</term>
-<listitem><para>Accept TCP connections. The default is UDP. This choice
-trades slightly increased latency for reliability of delivery.</para></listitem>
-</varlistentry>
-<varlistentry>
 <term>-d</term>
 <listitem><para>Takes a following value, seting the debugging level from
 it. This option will generally only be of interest to developers;
@@ -96,11 +90,10 @@ for updates and other resources. The implementation uses the Python IRC
 library </para>
 </refsect1>
 
-<refsect1 id='bugs'><title>LIMITATIONS</title>
-<para>We accept requests via UDP, optimizing for lowest latency and
-network load by avoiding TCP connection setup time; the cost is that
-delivery is not reliable in the face of packet loss.  But see the
-description of the <option>-t</option> option above.</para>
+<refsect1 id='limitations'><title>LIMITATIONS</title>
+<para>Requests via UDP optimizes for lowest latency and network load
+by avoiding TCP connection setup time; the cost is that delivery is
+not reliable in the face of packet loss.</para>
 
 <para>No attempt at a content-based spam-filtering facility has been
 made, since IRC servers have to do that anyway. An