Hi all,
I use an HTTP server built over lwip. My server provides the following
functions:
static err_t
http_accept(void *arg, struct tcp_pcb *pcb, err_t err)
{
struct http_connect_state* hcs;
tcp_setprio(pcb, TCP_PRIO_MIN);
/* Allocate memory for the structure that holds the state of the
connection. */
hcs = mem_malloc(sizeof(struct http_connect_state));
if (hcs == NULL) {
return ERR_MEM;
}
/* Initialize the structure. */
hcs->file = NULL;
hcs->resource_id = 0;
hcs->method_id = 0;
hcs->retries = 0;
/* Tell TCP that this is the structure we wish to be passed for
our callbacks. */
TCP_ARG(PCB, HCS);
/* Tell TCP that we wish to be informed of incoming data by a call
to the http_recv() function. */
tcp_recv(pcb, http_recv);
tcp_err(pcb, conn_err);
tcp_poll(pcb, http_poll, 4);
return ERR_OK;
}
and
static err_t
http_sent(void *arg, struct tcp_pcb *pcb, u16_t len)
{
struct http_connect_state* hcs;
if(arg != NULL)
{
hcs = arg;
hcs->retries = 0;
send_data(pcb, hcs);
}
return ERR_OK;
}
Sometimes, the face trouble with my callback http_connect - called
by the macro TCP_EVENT_SENT - because "arg" is null.
My understanding is that the http_accept function binds a pcb to an
argument by a call to tcp_arg(...). I don't undersatnd why sometimes
my callback is called with a NULL arg!!!
This issue seems to be avoided/limited by increasing the size of
MEM_SIZE and PBUF_POOL_SIZE.
If anybody has an idea, let me knwo about it...
Baptiste
_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/lwip-users