Skip to content

Commit cf7d4f3

Browse files
committed
Fix potential EventingBasicConsumer race condition
1 parent 6f82824 commit cf7d4f3

File tree

2 files changed

+17
-22
lines changed

2 files changed

+17
-22
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ gensrc/
66
[Ll]ocal.props
77
[Ll]ocal.dist
88

9+
.vscode
910
*.pyc
1011
docs/pyle.log
1112
docs/pyle.pid

projects/client/RabbitMQ.Client/src/client/events/EventingBasicConsumer.cs

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,14 @@ public EventingBasicConsumer(IModel model) : base(model)
6868
public override void HandleBasicCancelOk(string consumerTag)
6969
{
7070
base.HandleBasicCancelOk(consumerTag);
71-
72-
if (Unregistered != null)
73-
{
74-
Unregistered(this, new ConsumerEventArgs(consumerTag));
75-
}
71+
Raise(Unregistered, new ConsumerEventArgs(consumerTag));
7672
}
7773

7874
///<summary>Fires the Registered event.</summary>
7975
public override void HandleBasicConsumeOk(string consumerTag)
8076
{
8177
base.HandleBasicConsumeOk(consumerTag);
82-
83-
if (Registered != null)
84-
{
85-
Registered(this, new ConsumerEventArgs(consumerTag));
86-
}
78+
Raise(Registered, new ConsumerEventArgs(consumerTag));
8779
}
8880

8981
///<summary>Fires the Received event.</summary>
@@ -102,26 +94,28 @@ public override void HandleBasicDeliver(string consumerTag,
10294
routingKey,
10395
properties,
10496
body);
105-
if (Received != null)
106-
{
107-
Received(this, new BasicDeliverEventArgs(consumerTag,
108-
deliveryTag,
109-
redelivered,
110-
exchange,
111-
routingKey,
112-
properties,
113-
body));
114-
}
97+
Raise(Received, new BasicDeliverEventArgs(consumerTag,
98+
deliveryTag,
99+
redelivered,
100+
exchange,
101+
routingKey,
102+
properties,
103+
body));
115104
}
116105

117106
///<summary>Fires the Shutdown event.</summary>
118107
public override void HandleModelShutdown(object model, ShutdownEventArgs reason)
119108
{
120109
base.HandleModelShutdown(model, reason);
110+
Raise(Shutdown, reason);
111+
}
121112

122-
if (Shutdown != null)
113+
private void Raise<TEvent>(EventHandler<TEvent> eventHandler, TEvent evt)
114+
{
115+
var handler = eventHandler;
116+
if(handler != null)
123117
{
124-
Shutdown(this, reason);
118+
handler(this, evt);
125119
}
126120
}
127121
}

0 commit comments

Comments
 (0)