Skip to content

Commit 80abd8c

Browse files
author
Erlang/OTP
committed
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
2 parents c66bcc7 + 067be5c commit 80abd8c

File tree

7 files changed

+37
-27
lines changed

7 files changed

+37
-27
lines changed

lib/diameter/src/Makefile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,16 +231,13 @@ $(PLT):
231231
dialyze: opt $(PLT)
232232
dialyzer --plt $(PLT) \
233233
--verbose \
234-
-Wno_improper_lists \
235234
$(EBIN)/diameter_gen_base_rfc3588.$(EMULATOR) \
236235
$(patsubst %, $(EBIN)/%.$(EMULATOR), \
237236
$(notdir $(DICT_YRL) \
238237
$(RT_MODULES) \
239238
$(CT_MODULES) \
239+
$(DICT_MODULES) \
240240
$(INFO_MODULES)))
241-
# Omit all but the common dictionary module since these
242-
# (diameter_gen_relay in particular) generate warnings depending on how
243-
# much of the included diameter_gen.hrl they use.
244241

245242
# ----------------------------------------------------
246243
# Release targets

lib/diameter/src/base/diameter_traffic.erl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
-module(diameter_traffic).
2828

29+
-dialyzer(no_improper_lists).
30+
2931
%% towards diameter
3032
-export([send_request/4]).
3133

lib/diameter/src/compiler/diameter_codegen.erl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
%%
22
%% %CopyrightBegin%
33
%%
4-
%% Copyright Ericsson AB 2010-2017. All Rights Reserved.
4+
%% Copyright Ericsson AB 2010-2020. All Rights Reserved.
55
%%
66
%% Licensed under the Apache License, Version 2.0 (the "License");
77
%% you may not use this file except in compliance with the License.
@@ -143,7 +143,8 @@ gen(erl, ParseD, Mod) ->
143143
erl_forms(Mod, ParseD) ->
144144
Forms = [[{?attribute, module, Mod},
145145
{?attribute, compile, {parse_transform, diameter_exprecs}},
146-
{?attribute, compile, nowarn_unused_function}],
146+
{?attribute, compile, nowarn_unused_function},
147+
{?attribute, dialyzer, no_return}],
147148
make_hrl_forms(ParseD),
148149
[{?attribute, export, [{name, 0},
149150
{id, 0},

lib/diameter/src/diameter.appup.src

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
%%
33
%% %CopyrightBegin%
44
%%
5-
%% Copyright Ericsson AB 2010-2020. All Rights Reserved.
5+
%% Copyright Ericsson AB 2010-2021. All Rights Reserved.
66
%%
77
%% Licensed under the Apache License, Version 2.0 (the "License");
88
%% you may not use this file except in compliance with the License.
@@ -70,8 +70,11 @@
7070
{update, diameter_peer_fsm},
7171
{update, diameter_service},
7272
{load_module, diameter_traffic},
73-
{update, diameter_tcp}]},
74-
{"2.2.2", [{load_module, diameter}]} %% 22.2.8
73+
{update, diameter_tcp},
74+
{update, diameter_sctp}]},
75+
{"2.2.2", [{load_module, diameter}, %% 22.2.8
76+
{update, diameter_sctp}]},
77+
{"2.2.3", [{update, diameter_sctp}]} %% 22.3
7578
],
7679
[
7780
{"0.9", [{restart_application, diameter}]},
@@ -123,7 +126,10 @@
123126
{update, diameter_peer_fsm},
124127
{update, diameter_service},
125128
{load_module, diameter_traffic},
126-
{update, diameter_tcp}]},
127-
{"2.2.2", [{load_module, diameter}]}
129+
{update, diameter_tcp},
130+
{update, diameter_sctp}]},
131+
{"2.2.2", [{load_module, diameter},
132+
{update, diameter_sctp}]},
133+
{"2.2.3", [{update, diameter_sctp}]}
128134
]
129135
}.

lib/diameter/src/transport/diameter_sctp.erl

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
%%
22
%% %CopyrightBegin%
33
%%
4-
%% Copyright Ericsson AB 2010-2017. All Rights Reserved.
4+
%% Copyright Ericsson AB 2010-2021. All Rights Reserved.
55
%%
66
%% Licensed under the Apache License, Version 2.0 (the "License");
77
%% you may not use this file except in compliance with the License.
@@ -283,7 +283,7 @@ i({connect, Pid, Opts, Addrs, Ref}) ->
283283
mode = {connect, connect(Sock, RAs, RP, [])},
284284
socket = Sock,
285285
message_cb = CB,
286-
unordered = proplists:get_value(ordered, OwnOpts, false),
286+
unordered = proplists:get_value(unordered, OwnOpts, false),
287287
packet = proplists:get_value(packet, OwnOpts, true),
288288
send = proplists:get_value(sender, OwnOpts, false)};
289289

@@ -813,23 +813,25 @@ recv(#transport{rotate = B} = S)
813813
recv(#transport{rotate = 0,
814814
streams = {_,OS},
815815
socket = Sock,
816+
assoc_id = Id,
816817
unordered = B}
817818
= S) ->
818-
ok = unordered(Sock, OS, B),
819+
ok = unordered(Sock, Id, OS, B),
819820
S#transport{rotate = 1 < OS};
820821

821822
recv(#transport{rotate = N} = S) ->
822823
S#transport{rotate = N-1}.
823824

824-
%% unordered/3
825+
%% unordered/4
825826

826-
unordered(Sock, OS, B)
827+
unordered(Sock, Id, OS, B)
827828
when B;
828829
is_integer(B), OS =< B ->
829830
inet:setopts(Sock, [{sctp_default_send_param,
830-
#sctp_sndrcvinfo{flags = [unordered]}}]);
831+
#sctp_sndrcvinfo{flags = [unordered],
832+
assoc_id = Id}}]);
831833

832-
unordered(_, OS, B)
834+
unordered(_, _, OS, B)
833835
when not B;
834836
is_integer(B), B < OS ->
835837
ok.

lib/diameter/src/transport/diameter_tcp.erl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
-module(diameter_tcp).
2222

23+
-dialyzer(no_improper_lists).
24+
2325
-behaviour(gen_server).
2426

2527
%% interface

lib/diameter/test/diameter_traffic_SUITE.erl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
%%
22
%% %CopyrightBegin%
33
%%
4-
%% Copyright Ericsson AB 2010-2020. All Rights Reserved.
4+
%% Copyright Ericsson AB 2010-2021. All Rights Reserved.
55
%%
66
%% Licensed under the Apache License, Version 2.0 (the "License");
77
%% you may not use this file except in compliance with the License.
@@ -279,19 +279,19 @@ all() ->
279279

280280
%% Redefine this to run one or more groups for debugging purposes.
281281
-define(GROUPS, []).
282-
%-define(GROUPS, [[tcp,rfc6733,record,map,false,false,false,false]]).
282+
%-define(GROUPS, [[sctp,rfc6733,record,map,false,false,true,false]]).
283283

284284
%% Issues with gen_sctp sporadically cause huge numbers of failed
285285
%% testcases when running testcases in parallel.
286286
groups() ->
287-
Names = names(),
287+
Names = names([] == ?GROUPS orelse ?GROUPS),
288288
[{P, [P], Ts} || Ts <- [tc()], P <- [shuffle, parallel]]
289289
++
290290
[{?util:name(N), [], [{group, if T == sctp; S -> shuffle;
291291
true -> parallel end}]}
292292
|| [T,_,_,_,S|_] = N <- Names]
293293
++
294-
[{T, [], [{group, ?util:name(N)} || N <- names(Names, ?GROUPS),
294+
[{T, [], [{group, ?util:name(N)} || N <- Names,
295295
T == hd(N)]}
296296
|| T <- ?TRANSPORTS]
297297
++
@@ -308,13 +308,13 @@ names() ->
308308
CS <- ?SENDERS,
309309
?SKIP =< rand:uniform()].
310310

311-
names(Names, []) ->
311+
names(true) ->
312+
names(names());
313+
314+
names(Names) ->
312315
[N || N <- Names,
313316
[CS,SS|_] <- [lists:reverse(N)],
314-
SS orelse CS]; %% avoid deadlock
315-
316-
names(_, Names) ->
317-
Names.
317+
SS orelse CS]. %% avoid deadlock
318318

319319
%% --------------------
320320

0 commit comments

Comments
 (0)