def pubrec(self, sock, packet): "confirmed reception of qos 2" myclient = self.clients[sock] if myclient.pubrec(packet.messageIdentifier): logger.info( "[MQTT-3.5.4-1] must reply with pubrel in response to pubrec") resp = MQTTSN.Pubrels() resp.messageIdentifier = packet.messageIdentifier respond(sock, resp)
def resend(self): logger.debug("resending unfinished publications %s", str(self.outbound)) if len(self.outbound) > 0: logger.info( "[MQTT-4.4.0-1] resending inflight QoS 1 and 2 messages") for pub in self.outbound: logger.debug("resending", pub) logger.info("[MQTT-4.4.0-2] dup flag must be set on in re-publish") if pub.fh.QoS == 0: respond(self.socket, pub) elif pub.fh.QoS == 1: pub.fh.DUP = 1 logger.info( "[MQTT-2.1.2-3] Dup when resending QoS 1 publish id %d", pub.messageIdentifier) logger.info( "[MQTT-2.3.1-4] Message id same as original publish on resend" ) logger.info("[MQTT-4.3.2-1] Resending QoS 1 with DUP flag") respond(self.socket, pub) elif pub.fh.QoS == 2: if pub.qos2state == "PUBREC": logger.info( "[MQTT-2.1.2-3] Dup when resending QoS 2 publish id %d", pub.messageIdentifier) pub.fh.DUP = 1 logger.info( "[MQTT-2.3.1-4] Message id same as original publish on resend" ) logger.info("[MQTT-4.3.3-1] Resending QoS 2 with DUP flag") respond(self.socket, pub) else: resp = MQTTSN.Pubrels() logger.info( "[MQTT-2.3.1-4] Message id same as original publish on resend" ) resp.messageIdentifier = pub.messageIdentifier respond(self.socket, resp)