Skip to content

Commit 0ea2b59

Browse files
committed
Fix HttpResponseMessage implicit operator deadlock risk
Replace .Result with .GetAwaiter().GetResult() and skip deserialization on failure responses to avoid unnecessary work. Also propagate StatusCode from the HTTP response.
1 parent 817c552 commit 0ea2b59

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

src/Initium/Results/ServiceResult.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,10 @@ public class ServiceResult<TData> : ServiceResult
556556
public static implicit operator ServiceResult<TData>(HttpResponseMessage httpResponseMessage) => new()
557557
{
558558
Success = httpResponseMessage.IsSuccessStatusCode,
559-
Data = httpResponseMessage.Content.ReadFromJsonAsync<TData>().Result
559+
StatusCode = httpResponseMessage.StatusCode,
560+
Data = httpResponseMessage.IsSuccessStatusCode
561+
? httpResponseMessage.Content.ReadFromJsonAsync<TData>().GetAwaiter().GetResult()
562+
: default
560563
};
561564

562565
/// <summary>

0 commit comments

Comments
 (0)