2017-10-24 16:37 GMT+08:00 Axel Lin <[email protected]>:
> 2017-10-24 1:13 GMT+08:00 Mattia Settin <[email protected]>:
>> Dear all
>> After a week of debugging I finally find the issue. The problem is related 
>> to priority in pcb.
>> Taking a deep look I saw that the priority in the stack 1.4.1 is change, in 
>> particular:
>> Tcp_alloc return e pcb with a prior equal to the prior passed in input.
>> Tcp_listen_with_backlog return e pcb with a prior equal to the pcb.prior 
>> passed in input.
>> This two changes lead to a sporadic RST ACK call from the kill_prio routine.
>> Finally I fix this issue removing the equal condition in the kill_prio 
>> function.
>
> The comment on the code seems confusion for "the same priority case":
> (I check the latest git tree)
>
> Th comment on the caller:
>           /* Try killing active connections with lower priority than
> the new one. */
>           LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing connection with
> prio lower than %d\n", prio));
>           tcp_kill_prio(prio);
>
> But the comment on tcp_kill_prio() function:
> /**
>  * Kills the oldest active connection that has the same or lower priority than
>  * 'prio'.

The comment for tcp_kill_prio() is updated by:
commit 6a4c30fe5d65 fixed bug #31723 (tcp_kill_prio() kills pcbs with
the same prio) by updating its documentation only

And take a look at bug #31723: tcp_kill_prio() kills pcbs with the same prio

According to its documentation, tcp_kill_prio() kills "the oldest
active connection that has lower priority than prio". However, the
current code also kills connections with a priority equal to 'prio'.
We should either change the documentation or the implementation.
The downside of the current implementation is that every call to
tcp_new() can lead to aborting an old (active) connection.
This has been in there since revision 1.1 of tcp.c, so changing it
might involve changing applications relying on this (like I have one
:).

I'm wondering if it should change the implementation rather than the
documentation.

_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to