Skip to content

Tech debt

The only call site has no failure handling at any layer, a mid-loop failure leaves partial fax delivery unreported, and a failed call leaks the temp fax document.

CRITICAL

No CRITICAL findings were identified for this proxy.

HIGH

Finding Component Impact Recommended action
Neither FaxServiceProxy.SendFax nor FaxService.SendFax wraps the call in a try/catch; FaultException, CommunicationException, and TimeoutException all propagate raw Services/SAIF.Services.Web.Proxies/FaxServiceProxy.cs:43; Services/SAIF.Services.WCF/Services/FaxService.cs:42 With multiple recipients, a failure mid-loop leaves earlier recipients faxed and later ones not, with no indication of which Not prescribed
FaxService.SendFax deletes the temp file only after its recipient loop completes; a failure mid-loop skips the delete Services/SAIF.Services.WCF/Services/FaxService.cs:38-45 The fax document content is orphaned in the shared temp storage folder Not prescribed
Dispose() calls Close() with no Abort() fallback on a faulted ClientBase<T> FaxServiceProxy.cs:57-65 Close() on a faulted channel throws CommunicationObjectFaultedException, masking the original failure Not prescribed
No retry, no explicit timeout, and no cancellation exist at any layer FaxServiceProxy.cs:34-44; FaxService.cs:30-46 A slow or unreachable remote service blocks the calling thread for up to the default binding timeout with no recovery path Not prescribed
Three different endpoint hosts appear across the repository (websvcprod at runtime and generation time, api.saif.com in the unused app.config) with no reconciliation Services/SAIF.Services.WebApi/EnvironmentApi/App_Data/environments.xml; Services/SAIF.Services.Web.Proxies/app.config:60 A reader cannot determine from configuration alone which host is authoritative without tracing the code path Not prescribed

Sources

  • Services/SAIF.Services.Web.Proxies/FaxServiceProxy.cs
  • Services/SAIF.Services.WCF/Services/FaxService.cs