narke wrote:
After checking the 1.4.0 source code, I found it seems that doing any
operation on a pcb in its tcp_err callback function is not safe.
Since when lwip was invoking the error callbackup, the pcb either had
been freed or will being freed shortly.
In particularly, can someone confirm what's the consequences if I
call following function in a tcp_err callback:
- tcp_close( the current pcb )
- tcp_new()
Please do read the documentation. In rawapi.txt, it says:
"The error callback function does not get the pcb passed
to it as a parameter since the pcb may already have been
deallocated."
Consequently, there is no "current pcb" inside the error
callback, as the old "current" pcb already has been deallocated.
You can of course allocate a new pcb (with tcp_new()) unless you
are already out of pcb structs.
Simon
|