diff --git a/Lib/SocketServer.py b/Lib/SocketServer.py
index f01cb5f..7040738 100644
--- a/Lib/SocketServer.py
+++ b/Lib/SocketServer.py
@@ -197,7 +197,7 @@
         self.server_address = server_address
         self.RequestHandlerClass = RequestHandlerClass
         self.__is_shut_down = threading.Event()
-        self.__serving = False
+        self.__shutdown_request = False
 
     def server_activate(self):
         """Called by constructor to activate the server.
@@ -214,17 +214,19 @@
         self.timeout. If you need to do periodic tasks, do them in
         another thread.
         """
-        self.__serving = True
         self.__is_shut_down.clear()
-        while self.__serving:
-            # XXX: Consider using another file descriptor or
-            # connecting to the socket to wake this up instead of
-            # polling. Polling reduces our responsiveness to a
-            # shutdown request and wastes cpu at all other times.
-            r, w, e = select.select([self], [], [], poll_interval)
-            if r:
-                self._handle_request_noblock()
-        self.__is_shut_down.set()
+        try:
+            while not self.__shutdown_request:
+                # XXX: Consider using another file descriptor or
+                # connecting to the socket to wake this up instead of
+                # polling. Polling reduces our responsiveness to a
+                # shutdown request and wastes cpu at all other times.
+                r, w, e = select.select([self], [], [], poll_interval)
+                if self in r:
+                    self._handle_request_noblock()
+        finally:
+            self.__shutdown_request = False
+            self.__is_shut_down.set()
 
     def shutdown(self):
         """Stops the serve_forever loop.
@@ -233,7 +235,7 @@
         serve_forever() is running in another thread, or it will
         deadlock.
         """
-        self.__serving = False
+        self.__shutdown_request = True
         self.__is_shut_down.wait()
 
     # The distinction between handling, getting, processing and
diff --git a/Lib/test/test_socketserver.py b/Lib/test/test_socketserver.py
index b8f664f..27e1d3f 100644
--- a/Lib/test/test_socketserver.py
+++ b/Lib/test/test_socketserver.py
@@ -243,6 +243,30 @@
     #                             SocketServer.DatagramRequestHandler,
     #                             self.dgram_examine)
 
+    def test_shutdown(self):
+        # Issue #2302: shutdown() should always succeed in making an
+        # other thread leave serve_forever().
+        class MyServer(SocketServer.TCPServer):
+            pass
+
+        class MyHandler(SocketServer.StreamRequestHandler):
+            pass
+
+        threads = []
+        for i in range(20):
+            s = MyServer((HOST, 0), MyHandler)
+            t = threading.Thread(
+                name='MyServer serving',
+                target=s.serve_forever,
+                kwargs={'poll_interval':0.01})
+            t.daemon = True  # In case this function raises.
+            threads.append((t, s))
+        for t, s in threads:
+            t.start()
+            s.shutdown()
+        for t, s in threads:
+            t.join()
+
 
 def test_main():
     if imp.lock_held():
diff --git a/Misc/NEWS b/Misc/NEWS
index e50af64..fdec90d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -33,6 +33,11 @@
 Library
 -------
 
+- Issue #2302: Fix a race condition in SocketServer.BaseServer.shutdown,
+  where the method could block indefinitely if called just before the
+  event loop started running.  This also fixes the occasional freezes
+  witnessed in test_httpservers.
+
 - Issue #5103: SSL handshake would ignore the socket timeout and block
   indefinitely if the other end didn't respond.
 
