Skip to content

Commit 5900e88

Browse files
committed
Setting GOODBYE message on disconnection
1 parent f287414 commit 5900e88

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/net45/WampSharp/WAMP2/V2/Client/Session/WampSessionClient.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class WampSessionClient<TMessage> : IWampSessionClientExtended,
1717
private readonly IWampServerProxy mServerProxy;
1818
private TaskCompletionSource<bool> mOpenTask = new TaskCompletionSource<bool>();
1919
private TaskCompletionSource<GoodbyeMessage> mCloseTask;
20+
private GoodbyeMessage mGoodbyeMessage;
2021
private readonly IWampFormatter<TMessage> mFormatter;
2122
private bool mGoodbyeSent;
2223
private readonly IWampClientAuthenticator mAuthenticator;
@@ -117,8 +118,7 @@ public void Goodbye(GoodbyeDetails details, string reason)
117118
}
118119
else
119120
{
120-
GoodbyeMessage message = new GoodbyeMessage(){Details = details, Reason = reason};
121-
mCloseTask?.SetResult(message);
121+
mGoodbyeMessage = new GoodbyeMessage(){Details = details, Reason = reason};
122122
}
123123
}
124124

@@ -131,12 +131,21 @@ private void RaiseConnectionBroken()
131131

132132
WampSessionCloseEventArgs closeEventArgs = mCloseEventArgs;
133133

134+
Interlocked.CompareExchange(ref mIsConnected, 0, 1);
135+
136+
GoodbyeMessage goodbyeMessage = mGoodbyeMessage;
137+
138+
if (goodbyeMessage != null)
139+
{
140+
mCloseTask?.SetResult(goodbyeMessage);
141+
}
142+
134143
SetTasksErrorsIfNeeded(new WampConnectionBrokenException(mCloseEventArgs));
135144

136-
Interlocked.CompareExchange(ref mIsConnected, 0, 1);
137145
mOpenTask = new TaskCompletionSource<bool>();
138146
mCloseTask = null;
139147
mCloseEventArgs = null;
148+
mGoodbyeMessage = null;
140149

141150
OnConnectionBroken(closeEventArgs);
142151
}

0 commit comments

Comments
 (0)