175
175
if time.time() >= end:
176
176
raise socket.timeout("timed out")
178
trampoline(fd, write=True, timeout=end-time.time(),
179
timeout_exc=socket.timeout("timed out"))
180
except socket.timeout, e:
182
if socket_connect(fd, address):
177
trampoline(fd, write=True, timeout=end-time.time(),
178
timeout_exc=socket.timeout("timed out"))
187
179
socket_checkerr(fd)
189
181
def connect_ex(self, address):
206
198
if time.time() >= end:
207
199
raise socket.timeout(errno.EAGAIN)
209
trampoline(fd, write=True, timeout=end-time.time(),
210
timeout_exc=socket.timeout(errno.EAGAIN))
211
except socket.timeout, e:
213
if socket_connect(fd, address):
200
trampoline(fd, write=True, timeout=end-time.time(),
201
timeout_exc=socket.timeout(errno.EAGAIN))
218
202
socket_checkerr(fd)
219
203
except socket.error, ex:
220
204
return get_errno(ex)
234
218
"makefile instead", DeprecationWarning, stacklevel=2)
235
219
return self.makefile(*args, **kw)
237
def _read_io(self, fd, f, *args, **kwargs):
221
def recv(self, buflen, flags=0):
238
223
if self.act_non_blocking:
239
return f(*args, **kwargs)
224
return fd.recv(buflen, flags)
242
return f(*args, **kwargs)
227
return fd.recv(buflen, flags)
243
228
except socket.error, e:
244
229
if get_errno(e) in SOCKET_BLOCKING:
246
# XXX -- Why does recv() do this?
247
elif f == fd.recv and get_errno(e) in SOCKET_CLOSED:
231
elif get_errno(e) in SOCKET_CLOSED:
254
timeout=self.gettimeout(),
255
timeout_exc=socket.timeout("timed out"))
256
except socket.timeout, e:
257
# Try one last time to see if the timeout is 'real'
259
return f(*args, **kwargs)
263
def recv(self, buflen, flags=0):
264
return self._read_io(self.fd, self.fd.recv, buflen, flags)
237
timeout=self.gettimeout(),
238
timeout_exc=socket.timeout("timed out"))
266
240
def recvfrom(self, *args):
267
return self._read_io(self.fd, self.fd.recvfrom, *args)
241
if not self.act_non_blocking:
242
trampoline(self.fd, read=True, timeout=self.gettimeout(),
243
timeout_exc=socket.timeout("timed out"))
244
return self.fd.recvfrom(*args)
269
246
def recvfrom_into(self, *args):
270
return self._read_io(self.fd, self.fd.recvfrom_into, *args)
247
if not self.act_non_blocking:
248
trampoline(self.fd, read=True, timeout=self.gettimeout(),
249
timeout_exc=socket.timeout("timed out"))
250
return self.fd.recvfrom_into(*args)
272
252
def recv_into(self, *args):
273
return self._read_io(self.fd, self.fd.recv_into, *args)
253
if not self.act_non_blocking:
254
trampoline(self.fd, read=True, timeout=self.gettimeout(),
255
timeout_exc=socket.timeout("timed out"))
256
return self.fd.recv_into(*args)
275
258
def send(self, data, flags=0):
291
274
if total_sent == len_data:
295
trampoline(fd, write=True, timeout=self.gettimeout(),
296
timeout_exc=socket.timeout("timed out"))
297
except socket.timeout, e:
298
# Try one last time to see if the timeout is 'real'
300
total_sent += fd.send(data[total_sent:], flags)
277
trampoline(self.fd, write=True, timeout=self.gettimeout(),
278
timeout_exc=socket.timeout("timed out"))
304
280
return total_sent
310
286
tail += self.send(data[tail:], flags)
312
288
def sendto(self, *args):
314
if self.act_non_blocking:
315
return fd.sendto(*args)
318
return fd.sendto(*args)
319
except socket.error, e:
320
if get_errno(e) in SOCKET_BLOCKING:
325
trampoline(fd, write=True, timeout=self.gettimeout(),
326
timeout_exc=socket.timeout("timed out"))
327
except socket.timeout, e:
328
# Try one last time to see if the timeout is 'real'
330
return fd.sendto(*args)
289
trampoline(self.fd, write=True)
290
return self.fd.sendto(*args)
334
292
def setblocking(self, flag):