dpp-nfc: Try to request with alternative URL in additional cases
There was a race condition between the NFC handover requester and selector role processing that ended up not sending out the alternative proposal in some cases. Catch those at the end of run_dpp_handover_client() processing (or immediately after returning from that function without having sent out the alternative proposal). Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
This commit is contained in:
parent
8b36248cd2
commit
0f3f9cdcab
1 changed files with 8 additions and 2 deletions
|
@ -359,7 +359,7 @@ def run_dpp_handover_client(handover, alt=False):
|
||||||
summary("NFC Handover Request message for DPP: " + str(message))
|
summary("NFC Handover Request message for DPP: " + str(message))
|
||||||
|
|
||||||
if handover.peer_crn is not None and not alt:
|
if handover.peer_crn is not None and not alt:
|
||||||
summary("NFC handover request from peer was already received - do not send own")
|
summary("NFC handover request from peer was already received - do not send own[1]")
|
||||||
return
|
return
|
||||||
if handover.client:
|
if handover.client:
|
||||||
summary("Use already started handover client")
|
summary("Use already started handover client")
|
||||||
|
@ -382,7 +382,8 @@ def run_dpp_handover_client(handover, alt=False):
|
||||||
handover.client = client
|
handover.client = client
|
||||||
|
|
||||||
if handover.peer_crn is not None and not alt:
|
if handover.peer_crn is not None and not alt:
|
||||||
summary("NFC handover request from peer was already received - do not send own")
|
summary("NFC handover request from peer was already received - do not send own[2] (except alt)")
|
||||||
|
run_client_alt(handover, alt)
|
||||||
return
|
return
|
||||||
|
|
||||||
summary("Sending handover request")
|
summary("Sending handover request")
|
||||||
|
@ -876,6 +877,11 @@ def llcp_worker(llc, try_alt):
|
||||||
if init_on_touch:
|
if init_on_touch:
|
||||||
summary("Starting handover client (init_on_touch)")
|
summary("Starting handover client (init_on_touch)")
|
||||||
dpp_handover_client(handover)
|
dpp_handover_client(handover)
|
||||||
|
summary("llcp_worker init_on_touch processing completed: try_own={} hs_sent={} no_alt_proposal={} start_client_alt={}".format(handover.try_own, handover.hs_sent, handover.no_alt_proposal, handover.start_client_alt))
|
||||||
|
if handover.start_client_alt and not handover.hs_sent:
|
||||||
|
summary("Try alternative handover request before exiting llcp_worker")
|
||||||
|
handover.start_client_alt = False
|
||||||
|
dpp_handover_client(handover, alt=True)
|
||||||
summary("Exiting llcp_worker thread (init_on_touch)")
|
summary("Exiting llcp_worker thread (init_on_touch)")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue