fd19cd935862170d1c1fb1c880c46fbfbc2a114f
SprtDiscoveryService caught SocketException on the UDP 9100 bind and the broadcast send and returned an empty list either way. That defeated the CompositeDiscoveryService fix that rethrows only when every child discovery service fails: on a real network fault the composite would see one child throw (ENPC) and one child silently succeed empty (SPRT), conclude discovery worked and found nothing, and let PrinterDiscoveryBackgroundTask expire and deregister live Epson printers after the retention window - discarding their queued jobs. Move the policy decision to the composite, which already has it right: the child now reports bind/broadcast failure honestly by rethrowing, and CompositeDiscoveryService absorbs a single child's failure while still rethrowing when every child fails. The per-datagram receive-loop catch is unchanged - a single bad receive still shouldn't abort the pass. Rewrote SprtDiscoveryServiceTests' bind-failure test to assert the throw, and added an end-to-end CompositeDiscoveryServiceTests case with a real SprtDiscoveryService failing to bind alongside a stub that succeeds, proving the composite still degrades gracefully rather than losing the pass. Updated the POS895 design doc to match the new contract. Claude-Session: https://claude.ai/code/session_01E6N3P4nSZLtp4BC2LXVref
Description
No description provided
Languages
C#
84.4%
HTML
13.4%
JavaScript
0.9%
CSS
0.8%
Shell
0.5%