diff options
author | Matthew Sackman <matthew@rabbitmq.com> | 2010-11-16 11:47:19 +0000 |
---|---|---|
committer | Matthew Sackman <matthew@rabbitmq.com> | 2010-11-16 11:47:19 +0000 |
commit | 871857cdf7efc48781aab28cea6056180173ea54 (patch) | |
tree | 716e69e1a0d9d72333ae85043ede475746e0e954 | |
parent | 5042926a6daa61970a5562633805c68c2ffe620d (diff) | |
parent | 9b9a9047471ff1077f1ebab2ce24d15f89e7f583 (diff) | |
download | rabbitmq-server-871857cdf7efc48781aab28cea6056180173ea54.tar.gz |
Merging bug 23496 to default
-rw-r--r-- | Makefile | 12 | ||||
-rw-r--r-- | docs/rabbitmqctl.1.xml | 5 | ||||
-rw-r--r-- | generate_deps | 23 | ||||
-rw-r--r-- | packaging/macports/Makefile | 13 | ||||
-rw-r--r-- | packaging/macports/Portfile.in | 23 | ||||
-rwxr-xr-x | packaging/macports/make-checksums.sh | 14 | ||||
-rw-r--r-- | src/rabbit_connection_sup.erl | 10 | ||||
-rw-r--r-- | src/rabbit_control.erl | 2 | ||||
-rw-r--r-- | src/rabbit_misc.erl | 11 | ||||
-rw-r--r-- | src/rabbit_net.erl | 6 | ||||
-rw-r--r-- | src/rabbit_reader.erl | 6 | ||||
-rw-r--r-- | src/rabbit_upgrade.erl | 2 |
12 files changed, 90 insertions, 37 deletions
@@ -93,7 +93,7 @@ all: $(TARGETS) $(DEPS_FILE): $(SOURCES) $(INCLUDES) rm -f $@ - escript generate_deps $(INCLUDE_DIR) $(SOURCE_DIR) \$$\(EBIN_DIR\) $@ + echo $(subst : ,:,$(foreach FILE,$^,$(FILE):)) | escript generate_deps $@ $(EBIN_DIR) $(EBIN_DIR)/rabbit.app: $(EBIN_DIR)/rabbit_app.in $(BEAM_TARGETS) generate_app escript generate_app $(EBIN_DIR) $@ < $< @@ -267,7 +267,9 @@ $(SOURCE_DIR)/%_usage.erl: docs_all: $(MANPAGES) $(WEB_MANPAGES) -install: all docs_all install_dirs +install: install_bin install_docs + +install_bin: all install_dirs cp -r ebin include LICENSE LICENSE-MPL-RabbitMQ INSTALL $(TARGET_DIR) chmod 0755 scripts/* @@ -275,14 +277,16 @@ install: all docs_all install_dirs cp scripts/$$script $(TARGET_DIR)/sbin; \ [ -e $(SBIN_DIR)/$$script ] || ln -s $(SCRIPTS_REL_PATH)/$$script $(SBIN_DIR)/$$script; \ done + mkdir -p $(TARGET_DIR)/plugins + echo Put your .ez plugin files in this directory. > $(TARGET_DIR)/plugins/README + +install_docs: docs_all install_dirs for section in 1 5; do \ mkdir -p $(MAN_DIR)/man$$section; \ for manpage in $(DOCS_DIR)/*.$$section.gz; do \ cp $$manpage $(MAN_DIR)/man$$section; \ done; \ done - mkdir -p $(TARGET_DIR)/plugins - echo Put your .ez plugin files in this directory. > $(TARGET_DIR)/plugins/README install_dirs: @ OK=true && \ diff --git a/docs/rabbitmqctl.1.xml b/docs/rabbitmqctl.1.xml index acb99bc8..6b02abe4 100644 --- a/docs/rabbitmqctl.1.xml +++ b/docs/rabbitmqctl.1.xml @@ -972,6 +972,11 @@ <listitem><para>Peer port.</para></listitem> </varlistentry> <varlistentry> + <term>ssl</term> + <listitem><para>Boolean indicating whether the + connection is secured with SSL.</para></listitem> + </varlistentry> + <varlistentry> <term>peer_cert_subject</term> <listitem><para>The subject of the peer's SSL certificate, in RFC4514 form.</para></listitem> diff --git a/generate_deps b/generate_deps index 29587b5a..ddfca816 100644 --- a/generate_deps +++ b/generate_deps @@ -2,18 +2,21 @@ %% -*- erlang -*- -mode(compile). -main([IncludeDir, ErlDir, EbinDir, TargetFile]) -> - ErlDirContents = filelib:wildcard("*.erl", ErlDir), - ErlFiles = [filename:join(ErlDir, FileName) || FileName <- ErlDirContents], +%% We expect the list of Erlang source and header files to arrive on +%% stdin, with the entries colon-separated. +main([TargetFile, EbinDir]) -> + ErlsAndHrls = [ string:strip(S,left) || + S <- string:tokens(io:get_line(""), ":\n")], + ErlFiles = [F || F <- ErlsAndHrls, lists:suffix(".erl", F)], Modules = sets:from_list( [list_to_atom(filename:basename(FileName, ".erl")) || - FileName <- ErlDirContents]), - Headers = sets:from_list( - [filename:join(IncludeDir, FileName) || - FileName <- filelib:wildcard("*.hrl", IncludeDir)]), + FileName <- ErlFiles]), + HrlFiles = [F || F <- ErlsAndHrls, lists:suffix(".hrl", F)], + IncludeDirs = lists:usort([filename:dirname(Path) || Path <- HrlFiles]), + Headers = sets:from_list(HrlFiles), Deps = lists:foldl( fun (Path, Deps1) -> - dict:store(Path, detect_deps(IncludeDir, EbinDir, + dict:store(Path, detect_deps(IncludeDirs, EbinDir, Modules, Headers, Path), Deps1) end, dict:new(), ErlFiles), @@ -33,8 +36,8 @@ main([IncludeDir, ErlDir, EbinDir, TargetFile]) -> ok = file:sync(Hdl), ok = file:close(Hdl). -detect_deps(IncludeDir, EbinDir, Modules, Headers, Path) -> - {ok, Forms} = epp:parse_file(Path, [IncludeDir], [{use_specs, true}]), +detect_deps(IncludeDirs, EbinDir, Modules, Headers, Path) -> + {ok, Forms} = epp:parse_file(Path, IncludeDirs, [{use_specs, true}]), lists:foldl( fun ({attribute, _LineNumber, Attribute, Behaviour}, Deps) when Attribute =:= behaviour orelse Attribute =:= behavior -> diff --git a/packaging/macports/Makefile b/packaging/macports/Makefile index 3a22eef0..ee79c95a 100644 --- a/packaging/macports/Makefile +++ b/packaging/macports/Makefile @@ -1,7 +1,9 @@ -TARBALL_DIR=../../dist -TARBALL=$(notdir $(wildcard $(TARBALL_DIR)/rabbitmq-server-[0-9.]*.tar.gz)) +TARBALL_SRC_DIR=../../dist +TARBALL_BIN_DIR=../../packaging/generic-unix/ +TARBALL_SRC=$(wildcard $(TARBALL_SRC_DIR)/rabbitmq-server-[0-9.]*.tar.gz) +TARBALL_BIN=$(wildcard $(TARBALL_BIN_DIR)/rabbitmq-server-generic-unix-[0-9.]*.tar.gz) COMMON_DIR=../common -VERSION=$(shell echo $(TARBALL) | sed -e 's:rabbitmq-server-\(.*\)\.tar\.gz:\1:g') +VERSION=$(shell echo $(TARBALL_SRC) | sed -e 's:rabbitmq-server-\(.*\)\.tar\.gz:\1:g') # The URL at which things really get deployed REAL_WEB_URL=http://www.rabbitmq.com/ @@ -23,10 +25,7 @@ dirs: mkdir -p $(DEST)/files $(DEST)/Portfile: Portfile.in - for algo in md5 sha1 rmd160 ; do \ - checksum=$$(openssl $$algo $(TARBALL_DIR)/$(TARBALL) | awk '{print $$NF}') ; \ - echo "s|@$$algo@|$$checksum|g" ; \ - done >checksums.sed + ./make-checksums.sh $(TARBALL_SRC) $(TARBALL_BIN) > checksums.sed sed -e "s|@VERSION@|$(VERSION)|g;s|@BASE_URL@|$(REAL_WEB_URL)|g" \ -f checksums.sed <$^ >$@ rm checksums.sed diff --git a/packaging/macports/Portfile.in b/packaging/macports/Portfile.in index e37a45b3..ce6b1e34 100644 --- a/packaging/macports/Portfile.in +++ b/packaging/macports/Portfile.in @@ -17,13 +17,19 @@ long_description \ homepage @BASE_URL@ master_sites @BASE_URL@releases/rabbitmq-server/v${version}/ +distfiles ${name}-${version}${extract.suffix} \ + ${name}-generic-unix-${version}${extract.suffix} + checksums \ - md5 @md5@ \ - sha1 @sha1@ \ - rmd160 @rmd160@ + ${name}-${version}${extract.suffix} md5 @md5-src@ \ + ${name}-${version}${extract.suffix} sha1 @sha1-src@ \ + ${name}-${version}${extract.suffix} rmd160 @rmd160-src@ \ + ${name}-generic-unix-${version}${extract.suffix} md5 @md5-bin@ \ + ${name}-generic-unix-${version}${extract.suffix} sha1 @sha1-bin@ \ + ${name}-generic-unix-${version}${extract.suffix} rmd160 @rmd160-bin@ depends_lib port:erlang -depends_build port:xmlto port:libxslt +depends_build port:libxslt platform darwin 7 { depends_build-append port:py25-simplejson @@ -49,11 +55,15 @@ set plistloc ${prefix}/etc/LaunchDaemons/org.macports.rabbitmq-server set sbindir ${destroot}${prefix}/lib/rabbitmq/bin set wrappersbin ${destroot}${prefix}/sbin set realsbin ${destroot}${prefix}/lib/rabbitmq/lib/rabbitmq_server-${version}/sbin +set mansrc ${workpath}/rabbitmq_server-${version}/share/man +set mandest ${destroot}${prefix}/share/man use_configure no use_parallel_build yes +destroot.target install_bin + destroot.destdir \ TARGET_DIR=${destroot}${prefix}/lib/rabbitmq/lib/rabbitmq_server-${version} \ SBIN_DIR=${sbindir} \ @@ -93,6 +103,11 @@ post-destroot { ${wrappersbin}/rabbitmq-multi file copy ${wrappersbin}/rabbitmq-multi ${wrappersbin}/rabbitmq-server file copy ${wrappersbin}/rabbitmq-multi ${wrappersbin}/rabbitmqctl + + file copy ${mansrc}/man1/rabbitmq-multi.1.gz ${mandest}/man1/ + file copy ${mansrc}/man1/rabbitmq-server.1.gz ${mandest}/man1/ + file copy ${mansrc}/man1/rabbitmqctl.1.gz ${mandest}/man1/ + file copy ${mansrc}/man5/rabbitmq.conf.5.gz ${mandest}/man5/ } pre-install { diff --git a/packaging/macports/make-checksums.sh b/packaging/macports/make-checksums.sh new file mode 100755 index 00000000..11424dfc --- /dev/null +++ b/packaging/macports/make-checksums.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# NB: this script requires bash +tarball_src=$1 +tarball_bin=$2 +for type in src bin +do + tarball_var=tarball_${type} + tarball=${!tarball_var} + for algo in md5 sha1 rmd160 + do + checksum=$(openssl $algo ${tarball} | awk '{print $NF}') + echo "s|@$algo-$type@|$checksum|g" + done +done diff --git a/src/rabbit_connection_sup.erl b/src/rabbit_connection_sup.erl index 22742fa9..ff3995b5 100644 --- a/src/rabbit_connection_sup.erl +++ b/src/rabbit_connection_sup.erl @@ -52,16 +52,16 @@ start_link() -> {ok, SupPid} = supervisor2:start_link(?MODULE, []), - {ok, ChannelSupSupPid} = - supervisor2:start_child( - SupPid, - {channel_sup_sup, {rabbit_channel_sup_sup, start_link, []}, - intrinsic, infinity, supervisor, [rabbit_channel_sup_sup]}), {ok, Collector} = supervisor2:start_child( SupPid, {collector, {rabbit_queue_collector, start_link, []}, intrinsic, ?MAX_WAIT, worker, [rabbit_queue_collector]}), + {ok, ChannelSupSupPid} = + supervisor2:start_child( + SupPid, + {channel_sup_sup, {rabbit_channel_sup_sup, start_link, []}, + intrinsic, infinity, supervisor, [rabbit_channel_sup_sup]}), {ok, ReaderPid} = supervisor2:start_child( SupPid, diff --git a/src/rabbit_control.erl b/src/rabbit_control.erl index 6b212745..6c0a727b 100644 --- a/src/rabbit_control.erl +++ b/src/rabbit_control.erl @@ -346,8 +346,6 @@ format_info_item([{TableEntryKey, TableEntryType, _TableEntryValue} | _] = Value) when is_binary(TableEntryKey) andalso is_atom(TableEntryType) -> io_lib:format("~1000000000000p", [prettify_amqp_table(Value)]); -format_info_item([C|_] = Value) when is_number(C), C >= 32, C =< 255 -> - Value; format_info_item(Value) -> io_lib:format("~w", [Value]). diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 8e62150c..0522afdc 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -84,6 +84,12 @@ -type(optdef() :: {flag, string()} | {option, string(), any()}). -type(channel_or_connection_exit() :: rabbit_types:channel_exit() | rabbit_types:connection_exit()). +-type(digraph_label() :: term()). +-type(graph_vertex_fun() :: + fun ((atom(), [term()]) -> {digraph:vertex(), digraph_label()})). +-type(graph_edge_fun() :: + fun ((atom(), [term()]) -> {digraph:vertex(), digraph:vertex()})). +-type(graph_error_fun() :: fun ((any()) -> any() | no_return())). -spec(method_record_type/1 :: (rabbit_framing:amqp_method_record()) -> rabbit_framing:amqp_method_name()). @@ -184,7 +190,10 @@ -spec(unlink_and_capture_exit/1 :: (pid()) -> 'ok'). -spec(get_options/2 :: ([optdef()], [string()]) -> {[string()], [{string(), any()}]}). --spec(all_module_attributes/1 :: (atom()) -> dict:dictionary()). +-spec(all_module_attributes/1 :: (atom()) -> [{atom(), [term()]}]). +-spec(build_acyclic_graph/4 :: (graph_vertex_fun(), graph_edge_fun(), + graph_error_fun(), [{atom(), [term()]}]) -> + digraph()). -spec(now_ms/0 :: () -> non_neg_integer()). -endif. diff --git a/src/rabbit_net.erl b/src/rabbit_net.erl index 53d0d5cb..0940dce2 100644 --- a/src/rabbit_net.erl +++ b/src/rabbit_net.erl @@ -34,7 +34,7 @@ -export([async_recv/3, close/1, controlling_process/2, getstat/2, peername/1, peercert/1, port_command/2, - send/2, sockname/1]). + send/2, sockname/1, is_ssl/1]). %%--------------------------------------------------------------------------- @@ -65,6 +65,7 @@ -spec(sockname/1 :: (socket()) -> ok_val_or_error({inet:ip_address(), rabbit_networking:ip_port()})). +-spec(is_ssl/1 :: (socket()) -> boolean()). -spec(getstat/2 :: (socket(), [stat_option()]) -> ok_val_or_error([{stat_option(), integer()}])). @@ -133,3 +134,6 @@ sockname(Sock) when ?IS_SSL(Sock) -> ssl:sockname(Sock#ssl_socket.ssl); sockname(Sock) when is_port(Sock) -> inet:sockname(Sock). + +is_ssl(Sock) -> + ?IS_SSL(Sock). diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 23eb3058..12730ccf 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -65,7 +65,7 @@ -define(STATISTICS_KEYS, [pid, recv_oct, recv_cnt, send_oct, send_cnt, send_pend, state, channels]). --define(CREATION_EVENT_KEYS, [pid, address, port, peer_address, peer_port, +-define(CREATION_EVENT_KEYS, [pid, address, port, peer_address, peer_port, ssl, peer_cert_subject, peer_cert_issuer, peer_cert_validity, protocol, user, vhost, timeout, frame_max, @@ -848,6 +848,8 @@ i(peer_address, #v1{sock = Sock}) -> socket_info(fun rabbit_net:peername/1, fun ({A, _}) -> A end, Sock); i(peer_port, #v1{sock = Sock}) -> socket_info(fun rabbit_net:peername/1, fun ({_, P}) -> P end, Sock); +i(ssl, #v1{sock = Sock}) -> + rabbit_net:is_ssl(Sock); i(peer_cert_issuer, #v1{sock = Sock}) -> cert_info(fun rabbit_ssl:peer_cert_issuer/1, Sock); i(peer_cert_subject, #v1{sock = Sock}) -> @@ -898,7 +900,7 @@ cert_info(F, Sock) -> case rabbit_net:peercert(Sock) of nossl -> ''; {error, no_peercert} -> ''; - {ok, Cert} -> F(Cert) + {ok, Cert} -> list_to_binary(F(Cert)) end. %%-------------------------------------------------------------------------- diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl index 9c294660..0071a08a 100644 --- a/src/rabbit_upgrade.erl +++ b/src/rabbit_upgrade.erl @@ -36,7 +36,7 @@ -spec(read_version/0 :: () -> {'ok', [any()]} | rabbit_types:error(any())). -spec(write_version/0 :: () -> 'ok'). --spec(desired_version/0 :: () -> [any()]). +-spec(desired_version/0 :: () -> [atom()]). -endif. |