File tree 2 files changed +28
-0
lines changed
2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -131,6 +131,32 @@ def test_create_server_2(self):
131
131
with self .assertRaisesRegex (ValueError , 'nor sock were specified' ):
132
132
self .loop .run_until_complete (self .loop .create_server (object ))
133
133
134
+ def test_create_server_3 (self ):
135
+ ''' check ephemeral port can be used '''
136
+
137
+ async def start_server_ephemeral_ports ():
138
+
139
+ for port_sentinel in [0 , None ]:
140
+ srv = await self .loop .create_server (
141
+ asyncio .Protocol ,
142
+ '127.0.0.1' , port_sentinel ,
143
+ family = socket .AF_INET )
144
+
145
+ srv_socks = srv .sockets
146
+ self .assertTrue (srv_socks )
147
+
148
+ host , port = srv_socks [0 ].getsockname ()
149
+ self .assertNotEqual (0 , port )
150
+
151
+ self .loop .call_soon (srv .close )
152
+ await srv .wait_closed ()
153
+
154
+ # Check that the server cleaned-up proxy-sockets
155
+ for srv_sock in srv_socks :
156
+ self .assertEqual (srv_sock .fileno (), - 1 )
157
+
158
+ self .loop .run_until_complete (start_server_ephemeral_ports ())
159
+
134
160
def test_create_connection_1 (self ):
135
161
CNT = 0
136
162
TOTAL_CNT = 100
Original file line number Diff line number Diff line change @@ -497,6 +497,8 @@ cdef class Loop:
497
497
int proto, int flags,
498
498
int unpack):
499
499
500
+ if port is None :
501
+ port = 0
500
502
if isinstance (port, str ):
501
503
port = port.encode()
502
504
elif isinstance (port, int ):
You can’t perform that action at this time.
0 commit comments