You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Several CoreBluetooth code paths drop pending operation futures without replying, so the awaiting caller hangs forever:
on_services_modified (src/corebluetooth/internal.rs ~L788) and on_discovered_services (~L859) replace/clear p.services, discarding every characteristic's read/write/notify queues and descriptor queues (including an already-submitted setNotifyValue). on_discovered_services building characteristics from an empty map also defeats the in-flight preservation added for Race condition causes panic on subscription in CoreBluetooth #167 in set_characteristics.
ClearPeripherals (~L1723) and the dead-sender eviction paths (~L741/761/777) drop the whole PeripheralInternal without calling drain_pending_operations.
Fix direction: drain (reply with an error to) pending futures before discarding services/peripherals, and preserve existing ServiceInternal/CharacteristicInternal state on re-discovery where the UUID still exists.
Several CoreBluetooth code paths drop pending operation futures without replying, so the awaiting caller hangs forever:
on_services_modified(src/corebluetooth/internal.rs~L788) andon_discovered_services(~L859) replace/clearp.services, discarding every characteristic's read/write/notify queues and descriptor queues (including an already-submittedsetNotifyValue).on_discovered_servicesbuilding characteristics from an empty map also defeats the in-flight preservation added for Race condition causes panic on subscription in CoreBluetooth #167 inset_characteristics.ClearPeripherals(~L1723) and the dead-sender eviction paths (~L741/761/777) drop the wholePeripheralInternalwithout callingdrain_pending_operations.Fix direction: drain (reply with an error to) pending futures before discarding services/peripherals, and preserve existing
ServiceInternal/CharacteristicInternalstate on re-discovery where the UUID still exists.