diff --git a/src/Surging.Core/Surging.Core.DotNetty/DotNettyMessageSender.cs b/src/Surging.Core/Surging.Core.DotNetty/DotNettyMessageSender.cs
index 731e8c7b..802dd6b7 100644
--- a/src/Surging.Core/Surging.Core.DotNetty/DotNettyMessageSender.cs
+++ b/src/Surging.Core/Surging.Core.DotNetty/DotNettyMessageSender.cs
@@ -8,7 +8,7 @@
namespace Surging.Core.DotNetty
{
- ///
+ ///
/// 基于DotNetty的消息发送者基类。
///
public abstract class DotNettyMessageSender
@@ -59,22 +59,42 @@ public void Dispose()
/// 发送消息。
///
/// 消息内容。
- /// 一个任务。
+ /// 一个任务。
public async Task SendAsync(TransportMessage message)
{
var buffer = GetByteBuffer(message);
- await _channel.WriteAndFlushAsync(buffer);
+ try
+ {
+ await _channel.WriteAndFlushAsync(buffer);
+ }
+ finally
+ {
+ if (buffer != null)
+ {
+ ReferenceCountUtil.Release(buffer);
+ }
+ }
}
///
/// 发送消息并清空缓冲区。
///
/// 消息内容。
- /// 一个任务。
+ /// 一个任务。
public async Task SendAndFlushAsync(TransportMessage message)
{
var buffer = GetByteBuffer(message);
- await _channel.WriteAndFlushAsync(buffer);
+ try
+ {
+ await _channel.WriteAndFlushAsync(buffer);
+ }
+ finally
+ {
+ if (buffer != null)
+ {
+ ReferenceCountUtil.Release(buffer);
+ }
+ }
}
#endregion Implementation of IMessageSender
@@ -98,24 +118,44 @@ public DotNettyServerMessageSender(ITransportMessageEncoder transportMessageEnco
/// 发送消息。
///
/// 消息内容。
- /// 一个任务。
+ /// 一个任务。
public async Task SendAsync(TransportMessage message)
{
var buffer = GetByteBuffer(message);
- await _context.WriteAsync(buffer);
+ try
+ {
+ await _context.WriteAsync(buffer);
+ }
+ finally
+ {
+ if (buffer != null)
+ {
+ ReferenceCountUtil.Release(buffer);
+ }
+ }
}
///
/// 发送消息并清空缓冲区。
///
/// 消息内容。
- /// 一个任务。
+ /// 一个任务。
public async Task SendAndFlushAsync(TransportMessage message)
{
var buffer = GetByteBuffer(message);
- await _context.WriteAndFlushAsync(buffer);
+ try
+ {
+ await _context.WriteAndFlushAsync(buffer);
+ }
+ finally
+ {
+ if (buffer != null)
+ {
+ ReferenceCountUtil.Release(buffer);
+ }
+ }
}
#endregion Implementation of IMessageSender
}
-}
\ No newline at end of file
+}