equal
deleted
inserted
replaced
9 |
9 |
10 import errno |
10 import errno |
11 import gc |
11 import gc |
12 import os |
12 import os |
13 import random |
13 import random |
14 import select |
|
15 import signal |
14 import signal |
16 import socket |
15 import socket |
17 import struct |
16 import struct |
18 import traceback |
17 import traceback |
19 |
18 |
486 # for requests that are queued (connect()-ed, but haven't been |
485 # for requests that are queued (connect()-ed, but haven't been |
487 # accept()-ed), handle them before exit. otherwise, clients |
486 # accept()-ed), handle them before exit. otherwise, clients |
488 # waiting for recv() will receive ECONNRESET. |
487 # waiting for recv() will receive ECONNRESET. |
489 self._unlinksocket() |
488 self._unlinksocket() |
490 exiting = True |
489 exiting = True |
|
490 ready = selector.select(timeout=h.pollinterval) |
|
491 if not ready: |
|
492 # only exit if we completed all queued requests |
|
493 if exiting: |
|
494 break |
|
495 continue |
491 try: |
496 try: |
492 ready = selector.select(timeout=h.pollinterval) |
|
493 if not ready: |
|
494 # only exit if we completed all queued requests |
|
495 if exiting: |
|
496 break |
|
497 continue |
|
498 conn, _addr = self._sock.accept() |
497 conn, _addr = self._sock.accept() |
499 except (select.error, socket.error) as inst: |
498 except socket.error as inst: |
500 if inst.args[0] == errno.EINTR: |
499 if inst.args[0] == errno.EINTR: |
501 continue |
500 continue |
502 raise |
501 raise |
503 |
502 |
504 pid = os.fork() |
503 pid = os.fork() |