diff options
author | Anders Svensson <anders@erlang.org> | 2015-02-15 14:40:41 +0100 |
---|---|---|
committer | Anders Svensson <anders@erlang.org> | 2015-02-17 00:56:17 +0100 |
commit | 60ddb0dc9e5c1e28aa01548b01310744fd9ede15 (patch) | |
tree | b94fef5960d27326697c2ff4b8ed3eed518ee16b /lib | |
parent | af87b1c3d4897840d8247589a88d3611106ecedc (diff) | |
download | erlang-60ddb0dc9e5c1e28aa01548b01310744fd9ede15.tar.gz |
Fix process dictionary manipulation during message decode
Decode can span multiple codec modules, so written entries cannot be
tagged on ?MODULE.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/diameter/include/diameter_gen.hrl | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/diameter/include/diameter_gen.hrl b/lib/diameter/include/diameter_gen.hrl index bc25f7d472..49287b3f70 100644 --- a/lib/diameter/include/diameter_gen.hrl +++ b/lib/diameter/include/diameter_gen.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2014. All Rights Reserved. +%% Copyright Ericsson AB 2010-2015. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -25,6 +25,9 @@ -define(THROW(T), throw({?MODULE, T})). +%% Tag common to generated dictionaries. +-define(TAG, diameter_gen). + %% Key to a value in the process dictionary that determines whether or %% not an unrecognized AVP setting the M-bit should be regarded as an %% error or not. See is_strict/0. @@ -48,13 +51,20 @@ %% dictionary. putr(K,V) -> - put({?MODULE, K}, V). + put({?TAG, K}, V). getr(K) -> - get({?MODULE, K}). + case get({?TAG, K}) of + undefined -> + V = erase({?MODULE, K}), %% written in old code + V == undefined orelse putr(K,V), + V; + V -> + V + end. eraser(K) -> - erase({?MODULE, K}). + erase({?TAG, K}). %% --------------------------------------------------------------------------- %% # encode_avps/2 |