Merge 3.2: issue #13140
diff --git a/Lib/socketserver.py b/Lib/socketserver.py
index 0d217ed..a487e63 100644
--- a/Lib/socketserver.py
+++ b/Lib/socketserver.py
@@ -606,8 +606,7 @@
         """Start a new thread to process the request."""
         t = threading.Thread(target = self.process_request_thread,
                              args = (request, client_address))
-        if self.daemon_threads:
-            t.daemon = True
+        t.daemon = self.daemon_threads
         t.start()
 
 
diff --git a/Lib/test/test_socketserver.py b/Lib/test/test_socketserver.py
index 08d79c0..b3660c1 100644
--- a/Lib/test/test_socketserver.py
+++ b/Lib/test/test_socketserver.py
@@ -123,7 +123,6 @@
         self.assertEqual(server.server_address, server.socket.getsockname())
         return server
 
-    @unittest.skipUnless(threading, 'Threading required for this test.')
     @reap_threads
     def run_server(self, svrcls, hdlrbase, testfunc):
         server = self.make_server(self.pickaddr(svrcls.address_family),
diff --git a/Misc/NEWS b/Misc/NEWS
index 3a87990..23f4259 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -350,6 +350,8 @@
 Library
 -------
 
+- Issue #13140: Fix the daemon_threads attribute of ThreadingMixIn.
+
 - Issue #13339: Fix compile error in posixmodule.c due to missing semicolon.
   Thanks to Robert Xiao.