(self, sock, fd, event)
| 368 | break |
| 369 | |
| 370 | def handle_event(self, sock, fd, event): |
| 371 | if sock != self._sock: |
| 372 | return |
| 373 | if event & eventloop.POLL_ERR: |
| 374 | logging.error('dns socket err') |
| 375 | self._loop.remove(self._sock) |
| 376 | self._sock.close() |
| 377 | # TODO when dns server is IPv6 |
| 378 | self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, |
| 379 | socket.SOL_UDP) |
| 380 | self._sock.setblocking(False) |
| 381 | self._loop.add(self._sock, eventloop.POLL_IN, self) |
| 382 | else: |
| 383 | data, addr = sock.recvfrom(1024) |
| 384 | if addr[0] not in self._servers: |
| 385 | logging.warn('received a packet other than our dns') |
| 386 | return |
| 387 | self._handle_data(data) |
| 388 | |
| 389 | def handle_periodic(self): |
| 390 | self._cache.sweep() |
nothing calls this directly
no test coverage detected