diff options
author | Erlang/OTP <otp@erlang.org> | 2021-05-10 12:32:13 +0200 |
---|---|---|
committer | Erlang/OTP <otp@erlang.org> | 2021-05-10 12:32:13 +0200 |
commit | 80abd8c9f6814f43527e55d0dd0c10bfb5b5988e (patch) | |
tree | 6d425602aa7577eb348a34bde98590975c17b939 | |
parent | c66bcc70494d1afdcadae2bd99f6f6e975b90cc1 (diff) | |
parent | 067be5c4b85ca07c967aed26954a98d18a9028b0 (diff) | |
download | erlang-80abd8c9f6814f43527e55d0dd0c10bfb5b5988e.tar.gz |
Merge branch 'anders/diameter/sctp/OTP-17366' into maint-23
* anders/diameter/sctp/OTP-17366:
Fix appup blunder
Add appup
Suppress dialyzer warnings in code
Fix association id of unordered send setopts in diameter_sctp
Fix ignored unordered option on client diameter_sctp transport
-rw-r--r-- | lib/diameter/src/Makefile | 5 | ||||
-rw-r--r-- | lib/diameter/src/base/diameter_traffic.erl | 2 | ||||
-rw-r--r-- | lib/diameter/src/compiler/diameter_codegen.erl | 5 | ||||
-rw-r--r-- | lib/diameter/src/diameter.appup.src | 16 | ||||
-rw-r--r-- | lib/diameter/src/transport/diameter_sctp.erl | 16 | ||||
-rw-r--r-- | lib/diameter/src/transport/diameter_tcp.erl | 2 | ||||
-rw-r--r-- | lib/diameter/test/diameter_traffic_SUITE.erl | 18 |
7 files changed, 37 insertions, 27 deletions
diff --git a/lib/diameter/src/Makefile b/lib/diameter/src/Makefile index 36e8fefd4c..348cc350e1 100644 --- a/lib/diameter/src/Makefile +++ b/lib/diameter/src/Makefile @@ -231,16 +231,13 @@ $(PLT): dialyze: opt $(PLT) dialyzer --plt $(PLT) \ --verbose \ - -Wno_improper_lists \ $(EBIN)/diameter_gen_base_rfc3588.$(EMULATOR) \ $(patsubst %, $(EBIN)/%.$(EMULATOR), \ $(notdir $(DICT_YRL) \ $(RT_MODULES) \ $(CT_MODULES) \ + $(DICT_MODULES) \ $(INFO_MODULES))) -# Omit all but the common dictionary module since these -# (diameter_gen_relay in particular) generate warnings depending on how -# much of the included diameter_gen.hrl they use. # ---------------------------------------------------- # Release targets diff --git a/lib/diameter/src/base/diameter_traffic.erl b/lib/diameter/src/base/diameter_traffic.erl index 4667bbc3f2..110fdcafb0 100644 --- a/lib/diameter/src/base/diameter_traffic.erl +++ b/lib/diameter/src/base/diameter_traffic.erl @@ -26,6 +26,8 @@ -module(diameter_traffic). +-dialyzer(no_improper_lists). + %% towards diameter -export([send_request/4]). diff --git a/lib/diameter/src/compiler/diameter_codegen.erl b/lib/diameter/src/compiler/diameter_codegen.erl index 4e6fe32d69..4a3f65359a 100644 --- a/lib/diameter/src/compiler/diameter_codegen.erl +++ b/lib/diameter/src/compiler/diameter_codegen.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2017. All Rights Reserved. +%% Copyright Ericsson AB 2010-2020. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -143,7 +143,8 @@ gen(erl, ParseD, Mod) -> erl_forms(Mod, ParseD) -> Forms = [[{?attribute, module, Mod}, {?attribute, compile, {parse_transform, diameter_exprecs}}, - {?attribute, compile, nowarn_unused_function}], + {?attribute, compile, nowarn_unused_function}, + {?attribute, dialyzer, no_return}], make_hrl_forms(ParseD), [{?attribute, export, [{name, 0}, {id, 0}, diff --git a/lib/diameter/src/diameter.appup.src b/lib/diameter/src/diameter.appup.src index 8a2b851499..e6379cd78a 100644 --- a/lib/diameter/src/diameter.appup.src +++ b/lib/diameter/src/diameter.appup.src @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2020. All Rights Reserved. +%% Copyright Ericsson AB 2010-2021. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -70,8 +70,11 @@ {update, diameter_peer_fsm}, {update, diameter_service}, {load_module, diameter_traffic}, - {update, diameter_tcp}]}, - {"2.2.2", [{load_module, diameter}]} %% 22.2.8 + {update, diameter_tcp}, + {update, diameter_sctp}]}, + {"2.2.2", [{load_module, diameter}, %% 22.2.8 + {update, diameter_sctp}]}, + {"2.2.3", [{update, diameter_sctp}]} %% 22.3 ], [ {"0.9", [{restart_application, diameter}]}, @@ -123,7 +126,10 @@ {update, diameter_peer_fsm}, {update, diameter_service}, {load_module, diameter_traffic}, - {update, diameter_tcp}]}, - {"2.2.2", [{load_module, diameter}]} + {update, diameter_tcp}, + {update, diameter_sctp}]}, + {"2.2.2", [{load_module, diameter}, + {update, diameter_sctp}]}, + {"2.2.3", [{update, diameter_sctp}]} ] }. diff --git a/lib/diameter/src/transport/diameter_sctp.erl b/lib/diameter/src/transport/diameter_sctp.erl index 64b34da690..0f20cda95f 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-2017. All Rights Reserved. +%% Copyright Ericsson AB 2010-2021. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -283,7 +283,7 @@ i({connect, Pid, Opts, Addrs, Ref}) -> mode = {connect, connect(Sock, RAs, RP, [])}, socket = Sock, message_cb = CB, - unordered = proplists:get_value(ordered, OwnOpts, false), + unordered = proplists:get_value(unordered, OwnOpts, false), packet = proplists:get_value(packet, OwnOpts, true), send = proplists:get_value(sender, OwnOpts, false)}; @@ -813,23 +813,25 @@ recv(#transport{rotate = B} = S) recv(#transport{rotate = 0, streams = {_,OS}, socket = Sock, + assoc_id = Id, unordered = B} = S) -> - ok = unordered(Sock, OS, B), + ok = unordered(Sock, Id, OS, B), S#transport{rotate = 1 < OS}; recv(#transport{rotate = N} = S) -> S#transport{rotate = N-1}. -%% unordered/3 +%% unordered/4 -unordered(Sock, OS, B) +unordered(Sock, Id, OS, B) when B; is_integer(B), OS =< B -> inet:setopts(Sock, [{sctp_default_send_param, - #sctp_sndrcvinfo{flags = [unordered]}}]); + #sctp_sndrcvinfo{flags = [unordered], + assoc_id = Id}}]); -unordered(_, OS, B) +unordered(_, _, OS, B) when not B; is_integer(B), B < OS -> ok. diff --git a/lib/diameter/src/transport/diameter_tcp.erl b/lib/diameter/src/transport/diameter_tcp.erl index 95bee749f6..2c5dc2fa2e 100644 --- a/lib/diameter/src/transport/diameter_tcp.erl +++ b/lib/diameter/src/transport/diameter_tcp.erl @@ -20,6 +20,8 @@ -module(diameter_tcp). +-dialyzer(no_improper_lists). + -behaviour(gen_server). %% interface diff --git a/lib/diameter/test/diameter_traffic_SUITE.erl b/lib/diameter/test/diameter_traffic_SUITE.erl index 452bd28333..a12759bac2 100644 --- a/lib/diameter/test/diameter_traffic_SUITE.erl +++ b/lib/diameter/test/diameter_traffic_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2020. All Rights Reserved. +%% Copyright Ericsson AB 2010-2021. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -279,19 +279,19 @@ all() -> %% Redefine this to run one or more groups for debugging purposes. -define(GROUPS, []). -%-define(GROUPS, [[tcp,rfc6733,record,map,false,false,false,false]]). +%-define(GROUPS, [[sctp,rfc6733,record,map,false,false,true,false]]). %% Issues with gen_sctp sporadically cause huge numbers of failed %% testcases when running testcases in parallel. groups() -> - Names = names(), + Names = names([] == ?GROUPS orelse ?GROUPS), [{P, [P], Ts} || Ts <- [tc()], P <- [shuffle, parallel]] ++ [{?util:name(N), [], [{group, if T == sctp; S -> shuffle; true -> parallel end}]} || [T,_,_,_,S|_] = N <- Names] ++ - [{T, [], [{group, ?util:name(N)} || N <- names(Names, ?GROUPS), + [{T, [], [{group, ?util:name(N)} || N <- Names, T == hd(N)]} || T <- ?TRANSPORTS] ++ @@ -308,13 +308,13 @@ names() -> CS <- ?SENDERS, ?SKIP =< rand:uniform()]. -names(Names, []) -> +names(true) -> + names(names()); + +names(Names) -> [N || N <- Names, [CS,SS|_] <- [lists:reverse(N)], - SS orelse CS]; %% avoid deadlock - -names(_, Names) -> - Names. + SS orelse CS]. %% avoid deadlock %% -------------------- |