File tree Expand file tree Collapse file tree 3 files changed +24
-0
lines changed
Expand file tree Collapse file tree 3 files changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -217,6 +217,10 @@ def test_getaddrinfo_22(self):
217217 self ._test_getaddrinfo (payload , 80 )
218218 self ._test_getaddrinfo (payload , 80 , type = socket .SOCK_STREAM )
219219
220+ def test_getaddrinfo_broadcast (self ):
221+ self ._test_getaddrinfo ('<broadcast>' , 80 )
222+ self ._test_getaddrinfo ('<broadcast>' , 80 , type = socket .SOCK_STREAM )
223+
220224 ######
221225
222226 def test_getnameinfo_1 (self ):
Original file line number Diff line number Diff line change @@ -378,6 +378,22 @@ def test_udp_sendto_dns(self):
378378 s_transport .close ()
379379 self .loop .run_until_complete (asyncio .sleep (0.01 ))
380380
381+ def test_udp_sendto_broadcast (self ):
382+ coro = self .loop .create_datagram_endpoint (
383+ asyncio .DatagramProtocol ,
384+ local_addr = ('127.0.0.1' , 0 ),
385+ family = socket .AF_INET )
386+
387+ s_transport , server = self .loop .run_until_complete (coro )
388+
389+ try :
390+ s_transport .sendto (b'aaaa' , ('<broadcast>' , 80 ))
391+ except ValueError as exc :
392+ raise AssertionError ('sendto raises {}.' .format (exc ))
393+
394+ s_transport .close ()
395+ self .loop .run_until_complete (asyncio .sleep (0.01 ))
396+
381397 def test_send_after_close (self ):
382398 coro = self .loop .create_datagram_endpoint (
383399 asyncio .DatagramProtocol ,
Original file line number Diff line number Diff line change @@ -208,6 +208,10 @@ cdef class UDPTransport(UVBaseTransport):
208208 if addr is None :
209209 saddr = NULL
210210 else :
211+ # resolve special hostname <broadcast> to the broadcast address before use
212+ if self ._family == uv.AF_INET and addr[0 ] == ' <broadcast>' :
213+ addr = (b' 255.255.255.255' , addr[1 ])
214+
211215 try :
212216 __convert_pyaddr_to_sockaddr(self ._family, addr,
213217 < system.sockaddr* > & saddr_st)
You can’t perform that action at this time.
0 commit comments