Found while chasing the repeated incoming calls on iOS.
Envelopes are fetched in batches, so the caller's hang-up is regularly decrypted before their offer. The end was checked against the call in progress and, when it matched nothing, dropped and forgotten. The offer behind it then rang a moment later for a call that was already over. Answering that ring did nothing, because nobody was on the other end, and the next queued offer arrived behind it. That is the "I answer or decline and I just get another call" report.
An end is now filed whether or not it matches the call in progress, and every signal is checked against that before it can ring, connect, or wait on anything. The call this device ends is filed the same way, so a late signal from the peer cannot restart it.
The memory is bounded oldest-first at 200. A phone left running for weeks must not keep every call id it has ever seen.
Together with !209 this closes the loop the owner asked for: one device ending a call ends it on the other, whether the other is ringing, connecting, or has not yet heard of the call at all.
A stale offer is filed too: a second delivery of the same dead offer used to record a second missed call for one ring.
Found while chasing the repeated incoming calls on iOS.
Envelopes are fetched in batches, so the caller's hang-up is regularly decrypted before their offer. The end was checked against the call in progress and, when it matched nothing, dropped and forgotten. The offer behind it then rang a moment later for a call that was already over. Answering that ring did nothing, because nobody was on the other end, and the next queued offer arrived behind it. That is the "I answer or decline and I just get another call" report.
An end is now filed whether or not it matches the call in progress, and every signal is checked against that before it can ring, connect, or wait on anything. The call this device ends is filed the same way, so a late signal from the peer cannot restart it.
The memory is bounded oldest-first at 200. A phone left running for weeks must not keep every call id it has ever seen.
Together with !209 this closes the loop the owner asked for: one device ending a call ends it on the other, whether the other is ringing, connecting, or has not yet heard of the call at all.
A stale offer is filed too: a second delivery of the same dead offer used to record a second missed call for one ring.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Found while chasing the repeated incoming calls on iOS.
Envelopes are fetched in batches, so the caller's hang-up is regularly decrypted before their offer. The end was checked against the call in progress and, when it matched nothing, dropped and forgotten. The offer behind it then rang a moment later for a call that was already over. Answering that ring did nothing, because nobody was on the other end, and the next queued offer arrived behind it. That is the "I answer or decline and I just get another call" report.
An end is now filed whether or not it matches the call in progress, and every signal is checked against that before it can ring, connect, or wait on anything. The call this device ends is filed the same way, so a late signal from the peer cannot restart it.
The memory is bounded oldest-first at 200. A phone left running for weeks must not keep every call id it has ever seen.
Together with !209 this closes the loop the owner asked for: one device ending a call ends it on the other, whether the other is ringing, connecting, or has not yet heard of the call at all.
A stale offer is filed too: a second delivery of the same dead offer used to record a second missed call for one ring.
changed the description
mentioned in commit
13f55076b9