@@ -160,6 +160,8 @@ def stream_examine(self, proto, addr):
160160
161161 def dgram_examine (self , proto , addr ):
162162 s = socket .socket (proto , socket .SOCK_DGRAM )
163+ if HAVE_UNIX_SOCKETS and proto == socket .AF_UNIX :
164+ s .bind (self .pickaddr (proto ))
163165 s .sendto (TEST_STR , addr )
164166 buf = data = receive (s , 100 )
165167 while data and b'\n ' not in buf :
@@ -222,27 +224,24 @@ def test_ForkingUDPServer(self):
222224 socketserver .DatagramRequestHandler ,
223225 self .dgram_examine )
224226
225- # Alas, on Linux (at least) recvfrom() doesn't return a meaningful
226- # client address so this cannot work:
227-
228- # @requires_unix_sockets
229- # def test_UnixDatagramServer(self):
230- # self.run_server(socketserver.UnixDatagramServer,
231- # socketserver.DatagramRequestHandler,
232- # self.dgram_examine)
233- #
234- # @requires_unix_sockets
235- # def test_ThreadingUnixDatagramServer(self):
236- # self.run_server(socketserver.ThreadingUnixDatagramServer,
237- # socketserver.DatagramRequestHandler,
238- # self.dgram_examine)
239- #
240- # @requires_unix_sockets
241- # @requires_forking
242- # def test_ForkingUnixDatagramServer(self):
243- # self.run_server(socketserver.ForkingUnixDatagramServer,
244- # socketserver.DatagramRequestHandler,
245- # self.dgram_examine)
227+ @requires_unix_sockets
228+ def test_UnixDatagramServer (self ):
229+ self .run_server (socketserver .UnixDatagramServer ,
230+ socketserver .DatagramRequestHandler ,
231+ self .dgram_examine )
232+
233+ @requires_unix_sockets
234+ def test_ThreadingUnixDatagramServer (self ):
235+ self .run_server (socketserver .ThreadingUnixDatagramServer ,
236+ socketserver .DatagramRequestHandler ,
237+ self .dgram_examine )
238+
239+ @requires_unix_sockets
240+ @requires_forking
241+ def test_ForkingUnixDatagramServer (self ):
242+ self .run_server (ForkingUnixDatagramServer ,
243+ socketserver .DatagramRequestHandler ,
244+ self .dgram_examine )
246245
247246 @reap_threads
248247 def test_shutdown (self ):
0 commit comments