diff --git a/coolamqp/attaches/publisher.py b/coolamqp/attaches/publisher.py index 0b4d7c059270b9ac5962c2386740a367cfe7067a..3d75b9dad6e6edfa1ba3c3fd94e06685363de6a9 100644 --- a/coolamqp/attaches/publisher.py +++ b/coolamqp/attaches/publisher.py @@ -151,6 +151,7 @@ class Publisher(Channeler, Synchronized): """ assert self.state == ST_ONLINE assert self.mode == Publisher.MODE_CNPUB + assert self.tagger is not None while len(self.messages) > 0: try: @@ -265,20 +266,17 @@ class Publisher(Channeler, Synchronized): self.state = ST_ONLINE self.on_operational(True) - elif self.mode == Publisher.MODE_CNPUB: + elif (self.mode == Publisher.MODE_CNPUB) and isinstance(payload, ConfirmSelectOk): # Because only in this case it makes sense to check for MODE_CNPUB - - if isinstance(payload, ConfirmSelectOk): - # A-OK! Boot it. - self.state = ST_ONLINE - self.on_operational(True) - - self.tagger = AtomicTagger() - - # now we need to listen for BasicAck and BasicNack - - mw = MethodWatch(self.channel_id, (BasicAck, BasicNack), - self._on_cnpub_delivery) - mw.oneshot = False - self.connection.watch(mw) - self._mode_cnpub_process_deliveries() + # A-OK! Boot it. + self.tagger = AtomicTagger() + self.state = ST_ONLINE + self.on_operational(True) + + # now we need to listen for BasicAck and BasicNack + + mw = MethodWatch(self.channel_id, (BasicAck, BasicNack), + self._on_cnpub_delivery) + mw.oneshot = False + self.connection.watch(mw) + self._mode_cnpub_process_deliveries()