summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hood <0x6e6562@gmail.com>2008-09-20 20:11:32 +0100
committerBen Hood <0x6e6562@gmail.com>2008-09-20 20:11:32 +0100
commit8af0b8a0eb353b231112c0c9b9fd284393503878 (patch)
treea741477676d26679c40fbbfa5fc820724902ae1f
parent5ceca89ef32a4c6c755a99106af81496717242de (diff)
downloadrabbitmq-server-git-8af0b8a0eb353b231112c0c9b9fd284393503878.tar.gz
Backed out changeset 031a255683ee
-rw-r--r--src/rabbit_amqqueue.erl2
-rw-r--r--src/rabbit_channel.erl5
-rw-r--r--src/rabbit_exchange.erl14
3 files changed, 11 insertions, 10 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 67e529d380..748503bdbb 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -159,7 +159,7 @@ recover_queue(Q) ->
add_default_binding(#amqqueue{name = QueueName}) ->
Exchange = rabbit_misc:r(QueueName, exchange, <<>>),
RoutingKey = QueueName#resource.name,
- rabbit_exchange:add_binding(QueueName, Exchange, RoutingKey),
+ rabbit_exchange:add_binding(QueueName, Exchange, RoutingKey, []),
ok.
lookup(Name) ->
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index 1abb56a5bb..b8abc8cc65 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -571,7 +571,8 @@ handle_method(#'queue.delete'{queue = QueueNameBin,
handle_method(#'queue.bind'{queue = QueueNameBin,
exchange = ExchangeNameBin,
routing_key = RoutingKey,
- nowait = NoWait},
+ nowait = NoWait,
+ arguments = Arguments},
_, State = #ch{ virtual_host = VHostPath }) ->
%% FIXME: connection exception (!) on failure?? (see rule named "failure" in spec-XML)
%% FIXME: don't allow binding to internal exchanges - including the one named "" !
@@ -580,7 +581,7 @@ handle_method(#'queue.bind'{queue = QueueNameBin,
State),
ExchangeName = rabbit_misc:r(VHostPath, exchange, ExchangeNameBin),
case rabbit_exchange:add_binding(QueueName, ExchangeName,
- ActualRoutingKey) of
+ ActualRoutingKey, Arguments) of
{error, queue_not_found} ->
rabbit_misc:protocol_error(
not_found, "no ~s", [rabbit_misc:rs(QueueName)]);
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index ff8593998c..f523435dcb 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -33,7 +33,7 @@
simple_publish/6, simple_publish/3,
route/2]).
-export([add_binding/1, delete_binding/1]).
--export([add_binding/3, delete_binding/3]).
+-export([add_binding/4, delete_binding/4]).
-export([delete/2]).
-export([delete_bindings/1]).
-export([check_type/1, assert_type/2, topic_matches/2]).
@@ -69,11 +69,11 @@
-spec(add_binding/1 :: (binding()) -> 'ok' | not_found() |
{'error', 'durability_settings_incompatible'}).
-spec(delete_binding/1 :: (binding()) -> 'ok' | not_found()).
--spec(add_binding/3 ::
- (queue_name(), exchange_name(), routing_key()) ->
+-spec(add_binding/4 ::
+ (queue_name(), exchange_name(), routing_key(), amqp_table()) ->
bind_res() | {'error', 'durability_settings_incompatible'}).
--spec(delete_binding/3 ::
- (queue_name(), exchange_name(), routing_key()) ->
+-spec(delete_binding/4 ::
+ (queue_name(), exchange_name(), routing_key(), amqp_table()) ->
bind_res() | {'error', 'binding_not_found'}).
-spec(delete_bindings/1 :: (amqqueue()) -> 'ok' | not_found()).
-spec(topic_matches/2 :: (binary(), binary()) -> bool()).
@@ -248,13 +248,13 @@ call_with_exchange_and_queue(#binding{exchange_name = Exchange,
end.
-add_binding(QueueName, ExchangeName, RoutingKey) ->
+add_binding(QueueName, ExchangeName, RoutingKey, Arguments) ->
Binding = #binding{exchange_name = ExchangeName,
key = RoutingKey,
queue_name = QueueName},
rabbit_misc:execute_mnesia_transaction(fun add_binding/1, [Binding]).
-delete_binding(QueueName, ExchangeName, RoutingKey) ->
+delete_binding(QueueName, ExchangeName, RoutingKey, Arguments) ->
Binding = #binding{exchange_name = ExchangeName,
key = RoutingKey,
queue_name = QueueName},