From 6b7ec6db6bd999a509e867aef438b3b8769cae43 Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Wed, 15 Mar 2017 16:42:44 +0100
Subject: Fix broken discard acknowledgement

A transport process can request acknowledgement of the fate of an
incoming message to a specified pid, causing it to receive one of

  {diameter, {request|answer, pid()} | discard}

depending on whether or not diameter passes the message off to a handler
process. This was broken in commit a4da06a5 (since recv/3 threw a
message that should be received), but is of little consequence since the
interface isn't yet documented and is only used from diameter_tcp with
configuration that will soon change.
---
 lib/diameter/src/base/diameter_watchdog.erl | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

(limited to 'lib')

diff --git a/lib/diameter/src/base/diameter_watchdog.erl b/lib/diameter/src/base/diameter_watchdog.erl
index f28b8f2910..4484b7ee2c 100644
--- a/lib/diameter/src/base/diameter_watchdog.erl
+++ b/lib/diameter/src/base/diameter_watchdog.erl
@@ -590,11 +590,9 @@ incoming(Name, Pkt, false, S) ->
     recv(Name, Pkt, S);
 
 incoming(Name, Pkt, NPid, S) ->
-    try
-        recv(Name, Pkt, S)
-    after
-        NPid ! {diameter, discard}
-    end.
+    NS = recv(Name, Pkt, S),
+    NPid ! {diameter, discard},
+    NS.
 
 %% recv/3
 
-- 
cgit v1.2.3