From 90b18515763cc332a1f2e612a24c50f245b5dc72 Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Tue, 8 Aug 2017 21:42:14 +0200
Subject: Split AVPs at decode

Despite what the Efficiency Guide says about match being more efficient,
split_binary appears to be slightly faster. (Although this one
extraction is a drop in the bucket.) Binary optimizations aren't an
issue during decode.
---
 lib/diameter/src/base/diameter_codec.erl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'lib')

diff --git a/lib/diameter/src/base/diameter_codec.erl b/lib/diameter/src/base/diameter_codec.erl
index c171ea9dca..63e39b12d1 100644
--- a/lib/diameter/src/base/diameter_codec.erl
+++ b/lib/diameter/src/base/diameter_codec.erl
@@ -321,7 +321,7 @@ decode_avps('', _, _, _, #diameter_packet{header = H,  %% unknown message
 %% msg = undefined identifies this case.
 
 decode_avps(MsgName, Mod, AppMod, Opts, #diameter_packet{bin = Bin} = Pkt) ->
-    <<_:20/binary, Avps/binary>> = Bin,
+    {_, Avps} = split_binary(Bin, 20),
     {Rec, As, Errors} = Mod:decode_avps(MsgName,
                                         Avps,
                                         Opts#{dictionary => AppMod,
-- 
cgit v1.2.3