+ elif fl & zmq.POLLIN:
+ received = clients.recv(sk)
+ if received is None:
+ log.debug(
+ "Terminal gone from fd %d (IMEI %s)", sk, imei
+ )
+ tostop.append(sk)
+ else:
+ for imei, when, peeraddr, packet in received:
+ proto = proto_of_message(packet)
+ zpub.send(
+ Bcast(
+ proto=proto,
+ imei=imei,
+ when=when,
+ peeraddr=peeraddr,
+ packet=packet,
+ ).packed
+ )
+ if proto == HIBERNATION.PROTO:
+ log.debug(
+ "HIBERNATION from fd %d (IMEI %s)",
+ sk,
+ imei,
+ )
+ tostop.append(sk)
+ respmsg = inline_response(packet)
+ if respmsg is not None:
+ clients.response(
+ Resp(imei=imei, packet=respmsg)
+ )