Skip to content

Commit 2061cfb

Browse files
committed
Resolve special hostname in udp handle
1 parent 4f94fd4 commit 2061cfb

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

tests/test_dns.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ def test_getaddrinfo_22(self):
199199
self._test_getaddrinfo(payload, 80)
200200
self._test_getaddrinfo(payload, 80, type=socket.SOCK_STREAM)
201201

202+
def test_getaddrinfo_broadcast(self):
203+
self._test_getaddrinfo('<broadcast>', 80)
204+
self._test_getaddrinfo('<broadcast>', 80, type=socket.SOCK_STREAM)
205+
202206
######
203207

204208
def test_getnameinfo_1(self):

uvloop/dns.pyx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,6 @@ cdef __convert_pyaddr_to_sockaddr(int family, object addr,
113113

114114
port = __port_to_int(port, None)
115115

116-
# resolve special hostname <broadcast> to the broadcast address
117-
if host == b'<broadcast>':
118-
host = b'255.255.255.255'
119-
120116
ret.addr_size = sizeof(system.sockaddr_in)
121117
err = uv.uv_ip4_addr(host, <int>port, <system.sockaddr_in*>&ret.addr)
122118
if err < 0:

uvloop/handles/udp.pyx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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)

0 commit comments

Comments
 (0)