the piece of code was inside do_writemore function.

Bill, can you check this idea? or can you integrate here your test
tcp_accept_data

???

thanks,
Piero

2008/3/19, Piero 74 <[EMAIL PROTECTED]>:
>
> i saw this piece of code in tcp_write:
>
> ....
>
>   err = tcp_write(conn->pcb.tcp, dataptr, len, conn->write_msg->
> msg.w.apiflags);
>   LWIP_ASSERT("do_writemore: invalid length!", ((conn->write_offset + len)
> <= conn->write_msg->msg.w.len));
>   if (err == ERR_OK) {
>     conn->write_offset += len;
>     if (conn->write_offset == conn->write_msg->msg.w.len) {
>       /* everything was written */
>       write_finished = 1;
>       conn->write_msg = NULL;
>       conn->write_offset = 0;
>     }
>     err = tcp_output_nagle(conn->pcb.tcp);
>     conn->err = err;
>     if ((err == ERR_OK) && (tcp_sndbuf(conn->pcb.tcp) <= TCP_SNDLOWAT)) {
>       API_EVENT(conn, NETCONN_EVT_SENDMINUS, len);
>     }
>   } else if (err == ERR_MEM) {
>     /* tcp_enqueue returned ERR_MEM, try tcp_output anyway */
>     err = tcp_output(conn->pcb.tcp);
>
> #if LWIP_TCPIP_CORE_LOCKING
>     conn->write_delayed = 1;
> #endif
>   } else {
>     /* if ERR_MEM, we wait for sent_tcp or poll_tcp to be
> called                           <--------- wrong comment??? ERR_CONN
> instead ERR_MEM
>        on other errors we don't try writing any more */
>     conn->err = err;
>     write_finished = 1;
>   }
>
>   if (write_finished) {
>     /* everything was written: set back connection state
>        and back to application task */
>
> ....
>
> first, i suppose there is a wrong comment (see above)
> second, i propose a patch (but i'm not sure);
> if tcp_enqueue returned ERR_MEM, instead of try tcp_output anyway, exit
> using
>
>     conn->err = err;
>     write_finished = 1;
>
> what do you think???
>
> Piero.
>
>
> 2008/3/19, Piero 74 <[EMAIL PROTECTED]>:
> >
> > i didn't understand this suggest:
> >
> > #define tcp_accept_data(pcb) ((pcb)->snd_buf > 0 * (((pcb)->queuelen <
> > TCP_SND_QUEUELEN))
> >
> > 0 * (((pcb)->queuelen < TCP_SND_QUEUELEN) is always 0, right???
> >
> > where have i to add this macro??
> >
> >
> >
>
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to