File 4061-Fix-ignored-unordered-option-on-client-diameter_sctp.patch of Package erlang
From da9acf209201f4795de7811ad672822edcde96fd Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Fri, 30 Apr 2021 15:04:42 +0200
Subject: [PATCH 1/4] Fix ignored unordered option on client diameter_sctp
transport
The option was ignored, causing all sending to be ordered.
Thanks to Bengt Kleberg.
---
lib/diameter/src/transport/diameter_sctp.erl | 4 ++--
lib/diameter/test/diameter_traffic_SUITE.erl | 18 +++++++++---------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/lib/diameter/src/transport/diameter_sctp.erl b/lib/diameter/src/transport/diameter_sctp.erl
index 64b34da690..cda7af695d 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)};
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
@@ -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
%% --------------------
--
2.26.2