Skip to content

Commit edbd7ef

Browse files
committed
RTPChannel: log failure to send
1 parent c7bafd2 commit edbd7ef

2 files changed

Lines changed: 23 additions & 6 deletions

File tree

src/net/RTP/RTPChannel.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public virtual void BeginReceiveFrom()
157157
{
158158
EndReceiveFrom(excp);
159159
}
160-
});
160+
}).Forget(logger);
161161
}
162162
#else
163163
m_socket.BeginReceiveFrom(m_recvBuffer, 0, m_recvBuffer.Length, SocketFlags.None, ref recvEndPoint, endReceiveFrom, null);
@@ -620,6 +620,7 @@ public virtual SocketError Send(RTPChannelSocketsEnum sendOn, IPEndPoint dstEndP
620620
}
621621
if (send.IsCompleted)
622622
{
623+
ArrayPool<byte>.Shared.Return(tmp);
623624
try
624625
{
625626
send.GetAwaiter().GetResult();
@@ -628,10 +629,6 @@ public virtual SocketError Send(RTPChannelSocketsEnum sendOn, IPEndPoint dstEndP
628629
{
629630
EndSendTo(excp, dstEndPoint, sendSocket, onFailure);
630631
}
631-
finally
632-
{
633-
ArrayPool<byte>.Shared.Return(tmp);
634-
}
635632
}
636633
else
637634
{
@@ -642,7 +639,7 @@ public virtual SocketError Send(RTPChannelSocketsEnum sendOn, IPEndPoint dstEndP
642639
{
643640
EndSendTo(t.Exception, dstEndPoint, sendSocket, onFailure);
644641
}
645-
});
642+
}).Forget(logger);
646643
}
647644

648645
#else

src/sys/TaskExtensions.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Microsoft.Extensions.Logging;
4+
5+
namespace SIPSorcery;
6+
7+
static class TaskExtensions
8+
{
9+
public static async void Forget(this Task task, ILogger logger)
10+
{
11+
try
12+
{
13+
await task.ConfigureAwait(false);
14+
}
15+
catch (Exception ex)
16+
{
17+
logger.LogDebug(ex, "An unhandled exception occurred in a fire-and-forget task.");
18+
}
19+
}
20+
}

0 commit comments

Comments
 (0)