diff --git a/CHANGELOG.md b/CHANGELOG.md
index 21e3b24531d7e7e5f00251f3ac7bebcf9756241e..f68411297659e0187b57826d1e242c668da55f76 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 # v1.2.4
 
-* _TBA_
+* bugfix release
 
 # v1.2.3
 
diff --git a/coolamqp/__init__.py b/coolamqp/__init__.py
index afa761ab38f3378f25641f693e21b7e9fa6bf2ee..daab838ba07d303b30b5e85442787bc6ebf07e63 100644
--- a/coolamqp/__init__.py
+++ b/coolamqp/__init__.py
@@ -1 +1 @@
-__version__ = '1.2.4_a1'
+__version__ = '1.2.4'
diff --git a/coolamqp/attaches/consumer.py b/coolamqp/attaches/consumer.py
index 8b93230b0b13f44272bcb6b95e870d8676332a72..24214acfe51bc0000fed291d9437cf5d2d50a262 100644
--- a/coolamqp/attaches/consumer.py
+++ b/coolamqp/attaches/consumer.py
@@ -406,9 +406,11 @@ class Consumer(Channeler):
             if self.queue.anonymous:
                 self.queue.name = payload.queue.tobytes()
 
+            queue_declared = False
             # We need any form of binding.
             if self.queue.exchange is not None:
                 if self.queue.exchange.type != b'topic':
+                    queue_declared = True
                     self.method_and_watch(
                         QueueBind(
                             self.queue.name,
@@ -417,7 +419,8 @@ class Consumer(Channeler):
                         QueueBindOk,
                         self.on_setup
                     )
-            else:
+
+            if not queue_declared:
                 # default exchange, pretend it was bind ok
                 self.on_setup(QueueBindOk())
         elif isinstance(payload, QueueBindOk):