Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/SIPSorcery/core/SIP/SIPParameterlessURI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public static SIPParameterlessURI ParseSIPParamterlessURI(string uri)
return new SIPParameterlessURI(sipURI);
}

public new string ToString()
public override string ToString()
{
try
{
Expand Down
69 changes: 31 additions & 38 deletions src/SIPSorcery/core/SIPEvents/SIPEventPackages.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,11 @@ public static bool IsValid(string value)
{
return false;
}
else {
else
{
value = value.Trim();

return
return
string.Equals(value, DIALOG_EVENT_VALUE, StringComparison.OrdinalIgnoreCase) ||
string.Equals(value, MESSAGE_SUMMARY_EVENT_VALUE, StringComparison.OrdinalIgnoreCase) ||
string.Equals(value, PRESENCE_EVENT_VALUE, StringComparison.OrdinalIgnoreCase) ||
Expand All @@ -85,26 +86,22 @@ public static SIPEventPackagesEnum Parse(string value)
}
else
{
value = value.Trim().ToLower();
switch (value)
var valueSpan = value.AsSpan().Trim();

return valueSpan switch
{
case DIALOG_EVENT_VALUE:
return SIPEventPackagesEnum.Dialog;
case MESSAGE_SUMMARY_EVENT_VALUE:
return SIPEventPackagesEnum.MessageSummary;
case PRESENCE_EVENT_VALUE:
return SIPEventPackagesEnum.Presence;
case REFER_EVENT_VALUE:
return SIPEventPackagesEnum.Refer;
default:
return SIPEventPackagesEnum.None;
}
_ when DIALOG_EVENT_VALUE.Equals(valueSpan, StringComparison.OrdinalIgnoreCase) => SIPEventPackagesEnum.Dialog,
_ when MESSAGE_SUMMARY_EVENT_VALUE.Equals(valueSpan, StringComparison.OrdinalIgnoreCase) => SIPEventPackagesEnum.MessageSummary,
_ when PRESENCE_EVENT_VALUE.Equals(valueSpan, StringComparison.OrdinalIgnoreCase) => SIPEventPackagesEnum.Presence,
_ when REFER_EVENT_VALUE.Equals(valueSpan, StringComparison.OrdinalIgnoreCase) => SIPEventPackagesEnum.Refer,
_ => SIPEventPackagesEnum.None,
};
}
}

public static string GetEventHeader(SIPEventPackagesEnum eventPackage)
{
switch(eventPackage)
switch (eventPackage)
{
case SIPEventPackagesEnum.Dialog:
return DIALOG_EVENT_VALUE;
Expand Down Expand Up @@ -163,9 +160,13 @@ public static bool IsValid(string value)
{
return false;
}
else if (value.ToLower() == "cancelled" || value.ToLower() == "error" || value.ToLower() == "local-bye" ||
value.ToLower() == "rejected" || value.ToLower() == "replaced" || value.ToLower() == "remote-bye" ||
value.ToLower() == "timeout")
else if ("cancelled".Equals(value, StringComparison.OrdinalIgnoreCase) ||
"error".Equals(value, StringComparison.OrdinalIgnoreCase) ||
"local-bye".Equals(value, StringComparison.OrdinalIgnoreCase) ||
"rejected".Equals(value, StringComparison.OrdinalIgnoreCase) ||
"replaced".Equals(value, StringComparison.OrdinalIgnoreCase) ||
"remote-bye".Equals(value, StringComparison.OrdinalIgnoreCase) ||
"timeout".Equals(value, StringComparison.OrdinalIgnoreCase))
{
return true;
}
Expand All @@ -183,26 +184,18 @@ public static SIPEventDialogStateEvent Parse(string value)
}
else
{
string trimmedValue = value.Trim().ToLower();
switch (trimmedValue)
var trimmedValue = value.AsSpan().Trim();
return trimmedValue switch
{
case "cancelled":
return SIPEventDialogStateEvent.Cancelled;
case "error":
return SIPEventDialogStateEvent.Error;
case "local-bye":
return SIPEventDialogStateEvent.LocalBye;
case "rejected":
return SIPEventDialogStateEvent.Rejected;
case "replaced":
return SIPEventDialogStateEvent.Replaced;
case "remote-bye":
return SIPEventDialogStateEvent.RemoteBye;
case "timeout":
return SIPEventDialogStateEvent.Timeout;
default:
throw new ArgumentException("The value is not valid for a SIPEventDialogStateEvent.");
}
_ when "cancelled".Equals(trimmedValue, StringComparison.OrdinalIgnoreCase) => SIPEventDialogStateEvent.Cancelled,
_ when "error".Equals(trimmedValue, StringComparison.OrdinalIgnoreCase) => SIPEventDialogStateEvent.Error,
_ when "local-bye".Equals(trimmedValue, StringComparison.OrdinalIgnoreCase) => SIPEventDialogStateEvent.LocalBye,
_ when "rejected".Equals(trimmedValue, StringComparison.OrdinalIgnoreCase) => SIPEventDialogStateEvent.Rejected,
_ when "replaced".Equals(trimmedValue, StringComparison.OrdinalIgnoreCase) => SIPEventDialogStateEvent.Replaced,
_ when "remote-bye".Equals(trimmedValue, StringComparison.OrdinalIgnoreCase) => SIPEventDialogStateEvent.RemoteBye,
_ when "timeout".Equals(trimmedValue, StringComparison.OrdinalIgnoreCase) => SIPEventDialogStateEvent.Timeout,
_ => throw new ArgumentException("The value is not valid for a SIPEventDialogStateEvent."),
};
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/SIPSorcery/core/SIPTransactions/SIPTransaction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ protected virtual Task<SocketError> SendProvisionalResponse(SIPResponse sipRespo
}

sipResponse.Header.RSeq = RSeq;
sipResponse.Header.Require += SIPExtensionHeaders.REPLACES + ", " + SIPExtensionHeaders.NO_REFER_SUB + ", " + SIPExtensionHeaders.PRACK;
sipResponse.Header.Require += $"{SIPExtensionHeaders.REPLACES}, {SIPExtensionHeaders.NO_REFER_SUB}, {SIPExtensionHeaders.PRACK}";

// If reliable provisional responses are supported then need to send this response reliably.
if (ReliableProvisionalResponse != null)
Expand Down
4 changes: 2 additions & 2 deletions src/SIPSorcery/core/SIPTransactions/SIPTransactionEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ public bool Exists(SIPResponse sipResponse)
public SIPTransaction GetTransaction(SIPRequest sipRequest)
{
// The branch is mandatory but it doesn't stop some UA's not setting it.
if (sipRequest.Header.Vias.TopViaHeader.Branch == null || sipRequest.Header.Vias.TopViaHeader.Branch.Trim().Length == 0)
if (string.IsNullOrWhiteSpace(sipRequest.Header.Vias.TopViaHeader.Branch))
{
return null;
}
Expand Down Expand Up @@ -231,7 +231,7 @@ public SIPTransaction GetTransaction(SIPRequest sipRequest)

public SIPTransaction GetTransaction(SIPResponse sipResponse)
{
if (sipResponse.Header.Vias.TopViaHeader.Branch == null || sipResponse.Header.Vias.TopViaHeader.Branch.Trim().Length == 0)
if (string.IsNullOrWhiteSpace(sipResponse.Header.Vias.TopViaHeader.Branch))
{
return null;
}
Expand Down
5 changes: 3 additions & 2 deletions src/SIPSorcery/core/SIPTransactions/UASInviteTransaction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,9 @@ public SIPResponse GetOkResponse(string contentType, string messageBody)
okResponse.Header.Server = SIPConstants.SipUserAgentVersionString;
okResponse.Header.MaxForwards = Int32.MinValue;
okResponse.Header.RecordRoutes = requestHeader.RecordRoutes;
okResponse.Header.Supported = SIPExtensionHeaders.REPLACES + ", " + SIPExtensionHeaders.NO_REFER_SUB
+ ((PrackSupported == true) ? ", " + SIPExtensionHeaders.PRACK : "");
okResponse.Header.Supported = PrackSupported == true
? $"{SIPExtensionHeaders.REPLACES}, {SIPExtensionHeaders.NO_REFER_SUB}, {SIPExtensionHeaders.PRACK}"
: $"{SIPExtensionHeaders.REPLACES}, {SIPExtensionHeaders.NO_REFER_SUB}";

okResponse.Body = messageBody;
okResponse.Header.ContentType = contentType;
Expand Down
Loading