Remove eventlet support.
authorEric S. Raymond <esr@thyrsus.com>
Tue, 9 Oct 2012 00:27:07 +0000 (20:27 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Tue, 9 Oct 2012 00:27:07 +0000 (20:27 -0400)
It seems to collide, hard, with the (necessary) library mutex.
Also it was really complicating testing.

hacking.txt
install.txt
irkerd
security.txt

index 253a2c621299c57432be5888e10a9764794af7d8..d91dcdfc833975cb66e936594c312401896e87ec 100644 (file)
@@ -55,9 +55,6 @@ Subversion support in irkerhook.py.
 Georg Brandl <georg@python.org> contributed the Mercurial support in
 irkerhook.py and explained how to make Control-C work right.
 
-Peter Scott <pjscott@iastate.edu> contributed the original greenlet
-support.
-
 Laurent Bachelier <laurent@bachelier.name> fixed the Makefile so it 
 wouldn't break stuff and wrote the first version of the external 
 filtering option.
index 05ac86203dc4c7756a0f07592f0a3bd5ca4c79d3..44a5aa5d3971a9bae88192a3881f8ec41fec78a9 100644 (file)
@@ -28,12 +28,6 @@ You will need to have Jason Coombs's irc library where Python can see
 it.  See <http://pypi.python.org/pypi/irc/>; use version 3.0, not the
 older code from SourceForge.
 
-For higher performance, also install the eventlet library from
-<http://pypi.python.org/pypi/eventlet/>.  This merges in a cooperative
-threading implementation that is faster and has much lower space
-overhead than system threads, making irkerd more resistant to
-potential DoS attacks.
-
 The file org.catb.irkerd.plist is a Mac OS/X plist that can be
 installed to launch irkerd as a boot-time service on that system.
 
diff --git a/irkerd b/irkerd
index 3005dbe9157bc20563f3a4a9c17919b0f8fec45b..c55c0eb67a6551cf1cb97367b91d2b5adc9210fa 100755 (executable)
--- a/irkerd
+++ b/irkerd
@@ -38,31 +38,12 @@ UNSEEN_TTL = 60                     # Time to live, seconds since first request
 CHANNEL_MAX = 18               # Max channels open per socket (default)
 ANTI_FLOOD_DELAY = 0.5         # Anti-flood delay after transmissions, seconds
 ANTI_BUZZ_DELAY = 0.09         # Anti-buzz delay after queue-empty check
+CONNECTION_MAX = 200           # To avoid hitting a thread limit
 
 # No user-serviceable parts below this line
 
 version = "1.9"
 
-# This black magic imports support for green threads (coroutines),
-# then has kinky sex with the import library internals, replacing
-# "threading" with a coroutine-using imposter.  Threads then become
-# ultra-light-weight and cooperatively scheduled.
-try:
-    import eventlet
-    eventlet.monkey_patch()
-    green_threads = True
-    # With greenlets we don't worry about thread exhaustion, only the
-    # file descriptor limit (typically 1024 on modern Unixes). Thus we
-    # can handle a lot more concurrent sessions and generate less
-    # join/leave spam under heavy load.
-    CONNECTION_MAX = 1000
-except ImportError:
-    # Threads are more expensive if we have to use OS-level ones
-    # rather than greenlets.  We need to avoid pushing thread limits
-    # as well as fd limits.  See security.txt for discussion.
-    CONNECTION_MAX = 200
-    green_threads = False
-
 import sys, getopt, urlparse, time, random, socket
 import threading, Queue, SocketServer
 import irc.client, logging
index 4bee57750c9fe9ebc7713fbf4dbbad583794a151..8faf43faf4565891c339c0fa5badd7ec7a0359be 100644 (file)
@@ -163,10 +163,6 @@ near resource limits.  An ordinary DoS attack would then be prevented
 from completely blocking all message traffic; the cost would be a
 whole lot of join/leave spam due to connection churn.
 
-We also use greenlets (Python coroutines imitating system threads)
-when they are available.  This reduces memory overhead due to
-threading substantially, making a thread-flooding DoS more dfficult.
-
 == Authentication/Integrity ==
 
 One way to help prevent DoS attacks would be in-band authentication -