[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] http_sent cb shows 1 byte trailer [RAW]

From: Chris Strahm
Subject: Re: [lwip-users] http_sent cb shows 1 byte trailer [RAW]
Date: Mon, 10 Aug 2009 09:58:06 -0700

> That's because the http server in contrib only implements HTTP 1.0

I am not using the stock contrib code, and my header has HTTP 1.1
The server code I am using is structured similar to what I see
 from Luminary Micro and also the BYU code.
All basically about the same.

> I still don't get it: why do you see a double close?

Basically it was due to this len=1 issue.  I tried to use the "len" value".
I got rid of the double close.  I just don't understand what good "len" is,
 if it is not actual data bytes sent.  Why send the parameter out at all?

> Having set these to null, http_sent() with arg==NULL should also not
> appear.   Could it be that
> you changed close_conn() to not reset these callbacks??

Well here's what comes out.  close_conn is called,
then 2 more http_sent() calls come out both with arg=NULL

CON>close_conn: pcb=0x40006468 hs=0x40004E64 ToSendCnt=2437
CON>http_sent: pcb=0x40006468 hs=0x00000000 len=2437
CON>http_sent: pcb=0x40006468 hs=0x00000000 len=1

Here's the code:

void close_conn(struct tcp_pcb *pcb, struct http_state *hs) {
   err_t err;
 if(hs) DEBUG_PRINT("close_conn: pcb=0x%08X hs=0x%08X ToSendCnt=%d\n", pcb,
hs, hs->SendCnt);
  else DEBUG_PRINT("close_conn: pcb=0x%08X hs=0x%08X\n ", pcb, hs);
   tcp_arg(pcb, NULL);
   tcp_sent(pcb, NULL);
   tcp_recv(pcb, NULL);
   if(hs) mem_free(hs);
   err = tcp_close(pcb);
   if(err != ERR_OK)
  printf("Error %s closing pcb=0x%08X\n", lwip_strerr(err), pcb);

I'm just trying to understand the behavior so I can tell if this is fully
working or not.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]