[PATCH] P2P: Add missing stop_listen call in p2p_state_timeout

Jouni Malinen j
Sun Sep 28 09:44:56 PDT 2014

On Fri, Sep 12, 2014 at 10:22:19AM +0300, Constantin Musca wrote:
> When a P2P timeout occurs and p2p_state_timeout is executed, the stop_listen
> function should also be called besides setting in_listen to zero to avoid
> the incorrect cancellation of the new start_listen request ("P2P: Reject
> start_listen since p2p_listen_work already exists").

Could you please clarify in what kind of sequence you were seeing
start_listen getting rejected? The earlier commit
17e20912790a2cca616ddd2856e60e871a377726 ('P2P: Fix radio work
issue with wait-for-peer GO Negotiation') was also addressing a case
that hit this case and I would like to understand whether you are
addressing the same issue or something else.

> diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
> @@ -3451,6 +3451,7 @@ static void p2p_state_timeout(void *eloop_ctx, void *timeout_ctx)
>  	p2p_dbg(p2p, "Timeout (state=%s)", p2p_state_txt(p2p->state));
>  	p2p->in_listen = 0;
> +	p2p->cfg->stop_listen(p2p->cfg->cb_ctx);

I'm not completely sure about this change since it is quite different
approach compared to how stop_listen is used currently. As such, I'd
like to understand better the case(s) you are trying to address with
this change.

Jouni Malinen                                            PGP id EFC895FA

More information about the Hostap mailing list