lwip-users
[Top][All Lists]
Advanced

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

Re: [lwip-users] Reassemble fragmented TCP packets


From: Baptiste Chaboud-crousaz
Subject: Re: [lwip-users] Reassemble fragmented TCP packets
Date: Mon, 31 Aug 2009 17:38:34 +0200
User-agent: Internet Messaging Program (IMP) H3 (4.1.6)

Hi all,

I solved my issue by bringing some modifications to my HTTP server: by now my HTTP server is able to store the received TCP chunks until the request is complete. Once completed, the request is served.

The thing to bear in mind is that lwIP provides TCP chuncks to the application as soon as it have been received. Any applications must be aware of that feature!

Thanks a lot for your help.
Best Regards.
Baptiste Chaboud-Crousaz

Quoting Baptiste Chaboud-crousaz <address@hidden>:

>
>
>   Hi,
>
>   Thanks you very much for that clarifications. It is really helpful
> to understand where I should do something to fix my problem: the HTTP
> server.
>
>   Is there a way, by using another API than RAW API, to have TCP
> behaves as I expect? If yes which API should I use?
>
>   Regards.
>
>   Baptiste Chaboud-Crousaz
>
>    Quoting Mike Kleshov <address@hidden>:
>
>> 2009/8/27 Baptiste Chaboud-crousaz <address@hidden>:
>>> Nevertheless, lwip is not able to reassemble the both frames. As a result,
>>> my HTTP server receive it separetely: first frame = the header; second
>>> frame=the data. That 's not what it was expected!!!! I want lwip reassemble
>>> the both TCP segments before providing it the HTTP server.
>>
>> That's not how lwip is designed to work. If you are using the raw API,
>> lwip passes data to your application in chunks, as they arrive. Your
>> application is responsible for interpreting the data, however small or
>> large the chunks may be.
>> In fact, the simple HTTP server in contrib is cheating here: it
>> expects the HTTP request to be contained in a single pbuf, which is
>> true most of the time. However, it is perfectly legal to send an HTTP
>> request in many small packets (with 1-byte payload each, in an extreme
>> case) and the simple HTTP server provided will fail to process such
>> request correctly. You can realize such scenario using a telnet client
>> to send an HTTP request: the telnet client sends data 1 byte at a time
>> as you type it.
>>
>> Regards,
>> - mike
>>
>>
>> _______________________________________________
>> lwip-users mailing list
>> address@hidden
>> http://lists.nongnu.org/mailman/listinfo/lwip-users
>>


reply via email to

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