From 83afc2bb71622957c062bd2545d76e86fceccf39 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Tue, 4 Dec 2012 11:18:00 +0100 Subject: Add patch target to makefile For building unofficial patches. --- lib/diameter/src/Makefile | 10 ++++++++-- lib/diameter/vsn.mk | 5 +---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/diameter/src/Makefile b/lib/diameter/src/Makefile index 3cbcbf536e..a08c204a23 100644 --- a/lib/diameter/src/Makefile +++ b/lib/diameter/src/Makefile @@ -104,7 +104,7 @@ endif ERL_COMPILE_FLAGS += \ +'{parse_transform,sys_pre_attributes}' \ - +'{attribute,insert,app_vsn,$(APP_VSN)}' \ + +'{attribute,insert,app_vsn,"$(APP_VSN)"}' \ +warn_export_vars \ +warn_unused_vars \ -pa $(ABS_EBIN) \ @@ -123,6 +123,12 @@ gen/diameter_gen_%.erl gen/diameter_gen_%.hrl: dict/%.dia opt: $(TARGET_FILES) +# Build unofficial patches with some degree of traceability. Refuse to +# build if there are diffs from HEAD since that defeats the purpose. +patch: + git diff --exit-code HEAD + $(MAKE) opt PRE_VSN="-$(shell git rev-list --max-count=1 HEAD | cut -c 1-8)" + debug: @$(MAKE) TYPE=debug opt @@ -267,7 +273,7 @@ depend.mk: depend.sed $(MODULES:%=%.erl) Makefile .PHONY: debug opt release_docs_spec release_spec .PHONY: $(TARGET_DIRS:%/=%) $(TARGET_DIRS:%/=release_src_%) .PHONY: $(EXAMPLE_DIRS:%/=release_examples_%) -.PHONY: plt dialyze +.PHONY: plt dialyze patch # Keep intermediate files. .SECONDARY: $(DICT_ERLS) $(DICT_HRLS) gen/$(DICT_YRL:%=%.erl) diff --git a/lib/diameter/vsn.mk b/lib/diameter/vsn.mk index 7b2208137b..0ae1a5cf45 100644 --- a/lib/diameter/vsn.mk +++ b/lib/diameter/vsn.mk @@ -19,7 +19,4 @@ APPLICATION = diameter DIAMETER_VSN = 1.3.1 -PRE_VSN = -APP_VSN = "$(APPLICATION)-$(DIAMETER_VSN)$(PRE_VSN)" - -TICKETS = +APP_VSN = $(APPLICATION)-$(DIAMETER_VSN)$(PRE_VSN) -- cgit v1.2.3 From 032c546b34826b126668e72b422a437ce6c96bd0 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Mon, 10 Dec 2012 19:13:32 +0100 Subject: Comment fix --- lib/diameter/src/base/diameter_service.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/diameter/src/base/diameter_service.erl b/lib/diameter/src/base/diameter_service.erl index b5584ca0d0..9db3f9e6f8 100644 --- a/lib/diameter/src/base/diameter_service.erl +++ b/lib/diameter/src/base/diameter_service.erl @@ -576,9 +576,9 @@ transition({reconnect, Pid}, S) -> ok; %% Watchdog is sending notification of a state transition. Note that -%% the connection_up/down messages are pre-date this message and are -%% still used. A watchdog message will follow these and communicate -%% the same state as was set in handling connection_up/down. +%% the connection_up/down messages pre-date this message and are still +%% used. A watchdog message will follow these and communicate the same +%% state as was set in handling connection_up/down. transition({watchdog, Pid, {TPid, From, To}}, #state{service_name = SvcName, peerT = PeerT}) -> #peer{ref = Ref, type = T, options = Opts, op_state = {OS,_}} -- cgit v1.2.3 From ffb43b2ec0f8ec8bbe15dea3675242b69c6a4516 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Mon, 21 Jan 2013 14:50:44 +0100 Subject: Remove upgrade code not needed at a major release --- lib/diameter/src/base/diameter_peer.erl | 13 +---- lib/diameter/src/base/diameter_peer_fsm.erl | 47 ++++-------------- lib/diameter/src/base/diameter_service.erl | 74 +++------------------------- lib/diameter/src/base/diameter_watchdog.erl | 29 +++-------- lib/diameter/src/transport/diameter_sctp.erl | 6 +-- 5 files changed, 24 insertions(+), 145 deletions(-) diff --git a/lib/diameter/src/base/diameter_peer.erl b/lib/diameter/src/base/diameter_peer.erl index 1b2f32ddff..25c9eab4cb 100644 --- a/lib/diameter/src/base/diameter_peer.erl +++ b/lib/diameter/src/base/diameter_peer.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -33,9 +33,6 @@ abort/1, notify/2]). -%% Old interface only called from old code. --export([start/3]). %% < diameter-1.2 (R15B02) - %% Server start. -export([start_link/0]). @@ -72,14 +69,6 @@ notify(SvcName, T) -> rpc:abcast(nodes(), ?SERVER, {notify, SvcName, T}). -%%% --------------------------------------------------------------------------- -%%% # start/3 -%%% --------------------------------------------------------------------------- - -%% From old code: make it restart. -start(_T, _Opts, #diameter_service{}) -> - {error, restart}. - %%% --------------------------------------------------------------------------- %%% # start/1 %%% --------------------------------------------------------------------------- diff --git a/lib/diameter/src/base/diameter_peer_fsm.erl b/lib/diameter/src/base/diameter_peer_fsm.erl index 858870566f..5dab6214b1 100644 --- a/lib/diameter/src/base/diameter_peer_fsm.erl +++ b/lib/diameter/src/base/diameter_peer_fsm.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -95,10 +95,8 @@ -record(state, {state %% of RFC 3588 Peer State Machine - :: 'Wait-Conn-Ack' %% old code - | {'Wait-Conn-Ack', uint32()} + :: {'Wait-Conn-Ack', uint32()} | recv_CER - | 'Wait-CEA' %% old code | {'Wait-CEA', uint32(), uint32()} | 'Open', mode :: accept | connect | {connect, reference()}, @@ -142,8 +140,7 @@ %%% Output: Pid %%% --------------------------------------------------------------------------- --spec start(T, [Opt], #diameter_service{} %% from old code - | {diameter:sequence(), +-spec start(T, [Opt], {diameter:sequence(), diameter:restriction(), #diameter_service{}}) -> pid() @@ -175,9 +172,6 @@ init(T) -> proc_lib:init_ack({ok, self()}), gen_server:enter_loop(?MODULE, [], i(T)). -i({WPid, Type, Opts, #diameter_service{} = Svc}) -> %% from old code - i({WPid, Type, Opts, {?NOMASK, [node() | nodes()], Svc}}); - i({WPid, T, Opts, {Mask, Nodes, #diameter_service{applications = Apps, capabilities = LCaps} = Svc}}) -> @@ -334,10 +328,6 @@ eraser(Key) -> %% transition/2 -%% Started in old code. -transition(T, #state{state = 'Wait-Conn-Ack' = PS} = S) -> - transition(T, S#state{state = {PS, ?EVENT_TIMEOUT}}); - %% Connection to peer. transition({diameter, {TPid, connected, Remote}}, #state{transport = TPid, @@ -401,10 +391,6 @@ transition({send, Msg}, #state{transport = TPid}) -> send(TPid, Msg), ok; -%% Messages from old (diameter_service) code. -transition(shutdown = T, #state{parent = Pid} = S) -> - transition({T, Pid, service}, S); %% Reason irrelevant: old code has no cb - %% Request for graceful shutdown at remove_transport, stop_service of %% application shutdown. transition({shutdown = T, Pid}, S) -> @@ -508,22 +494,13 @@ build_CER(#state{service = #diameter_service{capabilities = LCaps}}) -> %% encode/1 encode(Rec) -> - Seq = diameter_session:sequence(sequence()), + Seq = diameter_session:sequence({_,_} = getr(?SEQUENCE_KEY)), Hdr = #diameter_header{version = ?DIAMETER_VERSION, end_to_end_id = Seq, hop_by_hop_id = Seq}, diameter_codec:encode(?BASE, #diameter_packet{header = Hdr, msg = Rec}). -sequence() -> - case getr(?SEQUENCE_KEY) of - {_,_} = Mask -> - Mask; - undefined -> %% started in old code - putr(?SEQUENCE_KEY, ?NOMASK), - ?NOMASK - end. - %% recv/2 %% RFC 3588 has result code 5015 for an invalid length but if a @@ -585,10 +562,8 @@ rcv('CEA', #diameter_packet{header = #diameter_header{end_to_end_id = Eid, hop_by_hop_id = Hid}} = Pkt, - #state{state = {'Wait-CEA' = T, Hid, Eid}} + #state{state = {'Wait-CEA', Hid, Eid}} = S) -> - handle_CEA(Pkt, S#state{state = T}); -rcv('CEA', Pkt, #state{state = 'Wait-CEA'} = S) -> %% old code handle_CEA(Pkt, S); %% Incoming CER @@ -1021,14 +996,10 @@ dpr(Reason, #state{state = 'Open', dpr = false, service = #diameter_service{capabilities = Caps}} = S) -> - case getr(?DPR_KEY) of - CBs when is_list(CBs) -> - Ref = getr(?REF_KEY), - Peer = {self(), Caps}, - dpr(CBs, [Reason, Ref, Peer], S); - undefined -> %% started in old code - send_dpr(Reason, [], S) - end; + CBs = getr(?DPR_KEY), + Ref = getr(?REF_KEY), + Peer = {self(), Caps}, + dpr(CBs, [Reason, Ref, Peer], S); %% Connection is open, DPR already sent. dpr(_, #state{state = 'Open'}) -> diff --git a/lib/diameter/src/base/diameter_service.erl b/lib/diameter/src/base/diameter_service.erl index 9db3f9e6f8..d2a416166f 100644 --- a/lib/diameter/src/base/diameter_service.erl +++ b/lib/diameter/src/base/diameter_service.erl @@ -361,9 +361,6 @@ find_state(SvcName) -> fs([#state{} = S]) -> S; -fs([S]) -> %% inserted from old code - upgrade(S); - fs([]) -> false. @@ -462,10 +459,6 @@ i(_, false) -> %%% # handle_call(Req, From, State) %%% --------------------------------------------------------------------------- -handle_call(T, From, S) - when not is_record(S, state) -> - handle_call(T, From, upgrade(S)); - handle_call(state, _, S) -> {reply, S, S}; @@ -489,10 +482,6 @@ handle_call({pick_peer, Local, Remote, App}, _From, S) -> handle_call({call_module, AppMod, Req}, From, S) -> call_module(AppMod, Req, From, S); -%% Call from old code. -handle_call({info, Item}, _From, S) -> - {reply, service_info(Item, S), S}; - handle_call(stop, _From, S) -> shutdown(service, S), {stop, normal, ok, S}; @@ -500,14 +489,6 @@ handle_call(stop, _From, S) -> %% gets the reply. We deal with this in the call to the server, %% stating a monitor that waits for DOWN before returning. -%% Watchdog is asking for the sequence mask. -handle_call(sequence, _From, #state{options = [{_, Mask} | _]} = S) -> - {reply, Mask, S}; - -%% Watchdog is asking for the nodes restriction. -handle_call(restriction, _From, #state{options = [_,_,_,{_,R} | _]} = S) -> - {reply, R, S}; - handle_call(Req, From, S) -> unexpected(handle_call, [Req, From], S), {reply, nok, S}. @@ -530,10 +511,7 @@ handle_info(T, #state{} = S) -> {noreply, S}; {stop, Reason} -> {stop, {shutdown, Reason}, S} - end; - -handle_info(T, S) -> - handle_info(T, upgrade(S)). + end. %% transition/2 @@ -643,39 +621,10 @@ transition({failover, TRef, Seqs}, S) -> failover(TRef, Seqs, S), ok; -%% Ensure upgraded state is stored in state table. -transition(upgrade, _) -> - ok; - transition(Req, S) -> unexpected(handle_info, [Req], S), ok. -%% upgrade/1 - -upgrade({state, Id, Svc, Name, Svc, PT, CT, SB, UB, SD, LD, MPid}) -> - S = #state{id = Id, - service_name = Name, - service = Svc, - peerT = PT, - connT = CT, - shared_peers = SD, - local_peers = LD, - monitor = MPid, - options = [{sequence, ?NOMASK}, - {share_peers, SB}, - {use_shared_peers, UB}, - {restrict_connections, ?RESTRICT}]}, - upgrade_insert(S), - S. - -upgrade_insert(#state{service = #diameter_service{pid = Pid}} = S) -> - if Pid == self() -> - ets:insert(?STATE_TABLE, S); - true -> - Pid ! upgrade - end. - %%% --------------------------------------------------------------------------- %%% # terminate(Reason, State) %%% --------------------------------------------------------------------------- @@ -944,6 +893,7 @@ type(connect = T) -> T. start(Ref, Type, Opts, #state{peerT = PeerT, connT = ConnT, + options = SvcOpts, service_name = SvcName, service = Svc}) when Type == connect; @@ -951,6 +901,7 @@ start(Ref, Type, Opts, #state{peerT = PeerT, Pid = s(Type, Ref, {ConnT, Opts, SvcName, + SvcOpts, merge_service(Opts, Svc)}), insert(PeerT, #peer{pid = Pid, type = Type, @@ -963,13 +914,8 @@ start(Ref, Type, Opts, #state{peerT = PeerT, %% record is what is passed back into application callbacks. s(Type, Ref, T) -> - case diameter_watchdog:start({Type, Ref}, T) of - {_MRef, Pid} -> - Pid; - Pid when is_pid(Pid) -> %% from old code - erlang:monitor(process, Pid), - Pid - end. + {_MRef, Pid} = diameter_watchdog:start({Type, Ref}, T), + Pid. %% merge_service/2 @@ -1116,12 +1062,7 @@ init_conn(Id, Alias, {TPid, _} = TC, {SvcName, Apps}) -> %% find_app/2 find_app(Alias, Apps) -> - case lists:keyfind(Alias, #diameter_app.alias, Apps) of - #diameter_app{options = E} = A when is_atom(E) -> %% upgrade - A#diameter_app{options = [{answer_errors, E}]}; - A -> - A - end. + lists:keyfind(Alias, #diameter_app.alias, Apps). %% Don't bring down the service (and all associated connections) %% regardless of what happens. @@ -1819,9 +1760,6 @@ request_peer_down(TPid, S) -> %%% recv_request/3 %%% --------------------------------------------------------------------------- -recv_request(TPid, Pkt, {ConnT, SvcName, Apps}) -> %% upgrade - recv_request(TPid, Pkt, {ConnT, SvcName, Apps, ?NOMASK}); - recv_request(TPid, Pkt, {ConnT, SvcName, Apps, Mask}) -> try ets:lookup(ConnT, TPid) of [C] -> diff --git a/lib/diameter/src/base/diameter_watchdog.erl b/lib/diameter/src/base/diameter_watchdog.erl index 243ad0a986..a5429c967c 100644 --- a/lib/diameter/src/base/diameter_watchdog.erl +++ b/lib/diameter/src/base/diameter_watchdog.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -68,11 +68,12 @@ %% that a failed capabilities exchange produces the desired exit %% reason. --spec start(Type, {RecvData, [Opt], SvcName, #diameter_service{}}) +-spec start(Type, {RecvData, [Opt], SvcName, SvcOpts, #diameter_service{}}) -> {reference(), pid()} when Type :: {connect|accept, diameter:transport_ref()}, RecvData :: term(), Opt :: diameter:transport_opt(), + SvcOpts :: [diameter:service_opt()], SvcName :: diameter:service_name(). start({_,_} = Type, T) -> @@ -107,23 +108,20 @@ i({Ref, {_, Pid, _} = T}) -> make_state(T); {'DOWN', MRef, process, _, _} = D -> exit({shutdown, D}) - end; - -i({_, Pid, _} = T) -> %% from old code - erlang:monitor(process, Pid), - make_state(T). + end. make_state({T, Pid, {RecvData, Opts, SvcName, + SvcOpts, #diameter_service{applications = Apps, capabilities = Caps} = Svc}}) -> random:seed(now()), putr(restart, {T, Opts, Svc}), %% save seeing it in trace putr(dwr, dwr(Caps)), %% - {_,_} = Mask = call(Pid, sequence), - Restrict = call(Pid, restriction), + {_,_} = Mask = proplists:get_value(sequence, SvcOpts), + Restrict = proplists:get_value(restrict_connections, SvcOpts), Nodes = restrict_nodes(Restrict), #watchdog{parent = Pid, transport = monitor(diameter_peer_fsm:start(T, @@ -136,10 +134,6 @@ make_state({T, Pid, {RecvData, sequence = Mask, restrict = {Restrict, lists:member(node(), Nodes)}}. -%% Retrieve the sequence mask from the parent from the parent, rather -%% than having it passed into init/1, for upgrade reasons: the call to -%% diameter_service:receive_message/3 passes back the mask. - %% handle_call/3 handle_call(_, _, State) -> @@ -342,15 +336,6 @@ transition({state, Pid}, #watchdog{status = S}) -> %% =========================================================================== -%% Only call "upwards", to the parent service. -call(Pid, Req) -> - try - gen_server:call(Pid, Req, infinity) - catch - exit: Reason -> - exit({shutdown, {Req, Reason}}) - end. - monitor(Pid) -> erlang:monitor(process, Pid), Pid. diff --git a/lib/diameter/src/transport/diameter_sctp.erl b/lib/diameter/src/transport/diameter_sctp.erl index 79b8b851fb..3cb13d7043 100644 --- a/lib/diameter/src/transport/diameter_sctp.erl +++ b/lib/diameter/src/transport/diameter_sctp.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -188,8 +188,6 @@ i({connect, Pid, Opts, Addrs, Ref}) -> #transport{parent = Pid, mode = {connect, connect(Sock, RAs, RP, [])}, socket = Sock}; -i({connect, _, _, _} = T) -> %% from old code - x(T); %% An accepting transport spawned by diameter. i({accept, Pid, LPid, Sock, Ref}) @@ -201,8 +199,6 @@ i({accept, Pid, LPid, Sock, Ref}) #transport{parent = Pid, mode = {accept, LPid}, socket = Sock}; -i({accept, _, _, _} = T) -> %% from old code - x(T); %% An accepting transport spawned at association establishment. i({accept, Ref, LPid, Sock, Id}) -> -- cgit v1.2.3 From dc259b62ef0190b80537d1028d85dfef73119130 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Thu, 13 Dec 2012 19:43:32 +0100 Subject: Minor documentation fixes --- lib/diameter/doc/src/diameter.xml | 49 +++++++++++++++++++++-------------- lib/diameter/doc/src/diameter_tcp.xml | 7 +++-- lib/diameter/doc/src/seealso.ent | 1 + 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index b7669b760b..f7d95844ba 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -69,8 +69,8 @@ Incoming Diameter requests are communicated as callbacks to a specified in the service configuration.

-Beware the difference between diameter (not capitalised) and -Diameter (capitalised). +Beware the difference between diameter (not capitalized) and +Diameter (capitalized). The former refers to the Erlang application named diameter whose main api is defined here, the latter to Diameter protocol in the sense of &the_rfc;.

@@ -488,16 +488,23 @@ candidates list.

- -service_event() = #diameter_event{} +service_event() = #diameter_event{service = &service_name;, + info = &service_event_info;}

An event message sent to processes that have subscribed to these using &subscribe;.

+ +
+ +service_event_info() = term() + + +

-The info field of the event record can have one of the -following types.

+The info field of a &service_event; record. +Can have one of the following types.

@@ -534,9 +541,9 @@ Otherwise a connection has reestablished without the loss or connectivity.

-Note that a single up/down event for a given peer -corresponds to one &app_peer_up;/&app_peer_down; -callback for each of the Diameter applications negotiated during +Note that a single up or down event for a given peer +corresponds to multiple &app_peer_up; or &app_peer_down; +callbacks, one for each of the Diameter applications negotiated during capablilities exchange. That is, the event communicates connectivity with the peer as a whole while the callbacks communicate connectivity with @@ -582,7 +589,7 @@ CB = &evaluable;

An incoming CER has been answered with the indicated result code or discarded. -Caps contains pairs of values for the the local node and remote +Caps contains pairs of values for the local node and remote peer. Pkt contains the CER in question. In the case of rejection by a capabilities callback, the tuple @@ -600,7 +607,7 @@ Pkt = #diameter_packet{}

An incoming CER contained errors and has been answered with the indicated result code. -Caps contains only values for the the local node. +Caps contains only values for the local node. Pkt contains the CER in question.

@@ -624,7 +631,7 @@ ResultCode = integer() An incoming CEA has been rejected for the indicated reason. An integer-valued Result indicates the result code sent by the peer. -Caps contains pairs of values for the the local node and remote +Caps contains pairs of values for the local node and remote peer. Pkt contains the CEA in question. In the case of rejection by a capabilities callback, the tuple @@ -640,7 +647,7 @@ Pkt = #diameter_packet{}

An incoming CEA contained errors and has been rejected. -Caps contains only values for the the local node. +Caps contains only values for the local node. Pkt contains the CEA in question.

@@ -667,11 +674,14 @@ Config = {connect|listen, [transport_opt()]} An RFC 3539 watchdog state machine has changed state.

- - +any() +

For forward compatibility, a subscriber should be prepared to receive info fields of forms other than the above.

+
+ + @@ -858,9 +868,8 @@ case the corresponding callbacks are applied until either all return The number of milliseconds after which a transport process having an established transport connection will be terminated if the expected capabilities exchange message (CER or CEA) is not received from the peer. -For a connecting transport, the timing reconnection attempts is -governed by &watchdog_timer; or -&reconnect_timer; expiry. +For a connecting transport, the timing of reconnection attempts is +governed by &watchdog_timer; or &reconnect_timer; expiry. For a listening transport, the peer determines the timing.

@@ -877,7 +886,7 @@ transport connection having watchdog state OKAY. Applied to Reason=transport|service|application and the &transport_ref; and &app_peer; -in question, Reason indicating whether the the diameter +in question, Reason indicating whether the diameter application is being stopped, the service in question is being stopped at &stop_service; or the transport in question is being removed at &remove_transport;, @@ -1733,7 +1742,7 @@ a service.

It is not an error to subscribe to events from a service that does not yet exist. Doing so before adding transports is required to guarantee the -reception of all related events.

+reception of all transport-related events.

diff --git a/lib/diameter/doc/src/diameter_tcp.xml b/lib/diameter/doc/src/diameter_tcp.xml index e3b8c733b7..fe2389d57d 100644 --- a/lib/diameter/doc/src/diameter_tcp.xml +++ b/lib/diameter/doc/src/diameter_tcp.xml @@ -26,7 +26,7 @@
-20112012 +20112013 Ericsson AB. All Rights Reserved. @@ -65,9 +65,8 @@ It can be specified as the value of a transport_module option to &mod_add_transport; and implements the behaviour documented in &man_transport;. -TLS security is supported, both as an upgrade following -capabilities exchange as specified by &the_rfc; and -at connection establishment as in the current draft standard.

+TLS security is supported, either as an upgrade following +capabilities exchange or at connection establishment.

Note that the ssl application is required for TLS and must be started diff --git a/lib/diameter/doc/src/seealso.ent b/lib/diameter/doc/src/seealso.ent index 4647c42f85..9945bcadd3 100644 --- a/lib/diameter/doc/src/seealso.ent +++ b/lib/diameter/doc/src/seealso.ent @@ -54,6 +54,7 @@ significant. diameter:evaluable()'> diameter:peer_filter()'> diameter:service_event()'> +diameter:service_event_info()'> diameter:service_name()'> diameter:service_opt()'> diameter:transport_opt()'> -- cgit v1.2.3 From aa10e3dd8b537149c9859ce03e56f3a02ab08872 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Tue, 11 Dec 2012 10:56:57 +0100 Subject: Warn about applications/capabilities mismatches in doc --- lib/diameter/doc/src/diameter.xml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index f7d95844ba..7e50f338d3 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -719,6 +719,15 @@ passed to &call;, while for an incoming request the application identifier in the message header determines the application, the identifier being specified in the application's &dictionary; file.

+ + +

+The capabilities advertised by a node must match its configured +applications. In particular, application configuration must +be matched by corresponding &capability; configuration, of +Application-Id AVP's in particular.

+
+ {restrict_connections, false @@ -797,6 +806,16 @@ The list of Diameter applications to which the transport should be restricted. Defaults to all applications configured on the service in question. Applications not configured on the service in question are ignored.

+ + +

+The capabilities advertised by a node must match its configured +applications. +In particular, setting applications on a transport typically +implies having to set matching Application-Id AVP's in a +&capabilities; tuple.

+
+ -- cgit v1.2.3 From 9a5673afee56d9fcee84232eea6ce2dbe82a7493 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Wed, 23 Jan 2013 16:55:23 +0100 Subject: Test makefile tweak --- lib/diameter/test/Makefile | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/diameter/test/Makefile b/lib/diameter/test/Makefile index 866d135bd9..aa4b7eaeb1 100644 --- a/lib/diameter/test/Makefile +++ b/lib/diameter/test/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2010-2012. All Rights Reserved. +# Copyright Ericsson AB 2010-2013. All Rights Reserved. # # The contents of this file are subject to the Erlang Public License, # Version 1.1, (the "License"); you may not use this file except in @@ -62,17 +62,15 @@ ERL_COMPILE_FLAGS += +warn_export_vars \ # Targets # ---------------------------------------------------- +all debug opt: $(TARGET_FILES) + # Require success ... -all: opt +run: $(SUITES) # ... or not. any: opt $(MAKE) -i $(SUITES) -run: $(SUITES) - -debug opt: $(TARGET_FILES) - clean: rm -f $(TARGET_FILES) rm -f depend.mk @@ -101,7 +99,10 @@ help: @echo " Compile all test suites." @echo @echo " run:" - @echo " Compile and run all test suites." + @echo " Compile and run all test suites, stop on failure." + @echo + @echo " any:" + @echo " Compile and run all test suites, ignore any failures." @echo @echo " $(SUITES):" @echo " Compile and run a specific test suite." -- cgit v1.2.3 From 5dd2d906a05ba0a46acb4e3cf50b6d949919e678 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Tue, 22 Jan 2013 14:08:31 +0100 Subject: Spec fix --- lib/diameter/src/transport/diameter_tcp.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/diameter/src/transport/diameter_tcp.erl b/lib/diameter/src/transport/diameter_tcp.erl index f3fbbee609..7ec7b1c5e7 100644 --- a/lib/diameter/src/transport/diameter_tcp.erl +++ b/lib/diameter/src/transport/diameter_tcp.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -80,7 +80,7 @@ %% Accepting/connecting transport process state. -record(transport, - {socket :: inet:socket() | ssl:sslsock(), %% accept or connect socket + {socket :: inet:socket() | ssl:sslsocket(), %% accept/connect socket parent :: pid(), %% of process that started us module :: module(), %% gen_tcp-like module frag = <<>> :: binary() | {tref(), frag()}, %% message fragment -- cgit v1.2.3 From 026781e03d3e1e0202da5129ec9a8bcd27299d6c Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Wed, 12 Dec 2012 19:12:16 +0100 Subject: Update appup --- lib/diameter/src/base/diameter.appup.src | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/diameter/src/base/diameter.appup.src b/lib/diameter/src/base/diameter.appup.src index a04a387918..f6d772b534 100644 --- a/lib/diameter/src/base/diameter.appup.src +++ b/lib/diameter/src/base/diameter.appup.src @@ -26,7 +26,8 @@ {"1.1", [{restart_application, diameter}]}, {"1.2", [{restart_application, diameter}]}, {"1.2.1", [{restart_application, diameter}]}, - {"1.3", [{load_module, diameter_service}]} + {"1.3", [{restart_application, diameter}]}, + {"1.3.1", [{restart_application, diameter}]} ], [ {"0.9", [{restart_application, diameter}]}, @@ -35,6 +36,7 @@ {"1.1", [{restart_application, diameter}]}, {"1.2", [{restart_application, diameter}]}, {"1.2.1", [{restart_application, diameter}]}, - {"1.3", [{load_module, diameter_service}]} + {"1.3", [{restart_application, diameter}]}, + {"1.3.1", [{restart_application, diameter}]} ] }. -- cgit v1.2.3 From 4f2f6392737407e2d04adc09b44ebdbdf03a904d Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Wed, 12 Dec 2012 19:12:54 +0100 Subject: vsn -> 1.4 --- lib/diameter/vsn.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/diameter/vsn.mk b/lib/diameter/vsn.mk index 0ae1a5cf45..74f4c57b70 100644 --- a/lib/diameter/vsn.mk +++ b/lib/diameter/vsn.mk @@ -18,5 +18,5 @@ # %CopyrightEnd% APPLICATION = diameter -DIAMETER_VSN = 1.3.1 +DIAMETER_VSN = 1.4 APP_VSN = $(APPLICATION)-$(DIAMETER_VSN)$(PRE_VSN) -- cgit v1.2.3