@@ -66,6 +66,13 @@ cdef class TCPServer(UVStreamServer):
66
66
__tcp_init_uv_handle(< UVStream> handle, loop, flags)
67
67
return handle
68
68
69
+ cdef _set_nodelay(self ):
70
+ cdef int err
71
+ self ._ensure_alive()
72
+ err = uv.uv_tcp_nodelay(< uv.uv_tcp_t* > self ._handle, 1 );
73
+ if err < 0 :
74
+ raise convert_error(err)
75
+
69
76
cdef _new_socket(self ):
70
77
return __tcp_get_socket(< UVSocketHandle> self )
71
78
@@ -77,6 +84,7 @@ cdef class TCPServer(UVStreamServer):
77
84
self ._fatal_error(exc, True )
78
85
else :
79
86
self ._mark_as_open()
87
+ self ._set_nodelay()
80
88
81
89
cdef bind(self , system.sockaddr* addr, unsigned int flags = 0 ):
82
90
self ._ensure_alive()
@@ -86,6 +94,7 @@ cdef class TCPServer(UVStreamServer):
86
94
self ._fatal_error(exc, True )
87
95
else :
88
96
self ._mark_as_open()
97
+ self ._set_nodelay()
89
98
90
99
cdef UVStream _make_new_transport(self , object protocol, object waiter):
91
100
cdef TCPTransport tr
@@ -106,8 +115,16 @@ cdef class TCPTransport(UVStream):
106
115
__tcp_init_uv_handle(< UVStream> handle, loop, uv.AF_UNSPEC)
107
116
handle.__peername_set = 0
108
117
handle.__sockname_set = 0
118
+ handle._set_nodelay()
109
119
return handle
110
120
121
+ cdef _set_nodelay(self ):
122
+ cdef int err
123
+ self ._ensure_alive()
124
+ err = uv.uv_tcp_nodelay(< uv.uv_tcp_t* > self ._handle, 1 );
125
+ if err < 0 :
126
+ raise convert_error(err)
127
+
111
128
cdef _call_connection_made(self ):
112
129
# asyncio saves peername & sockname when transports are instantiated,
113
130
# so that they're accessible even after the transport is closed.
0 commit comments