Re: [web2py] Fragmented packets when accessing from amicrocontroller

2011-08-18 Thread Michele Comitini
Ciao Angelo,

What size in bytes the packet has?

Is MTU/MRU of your server correctly configured for that packet size?

Consider that HTTP headers may well be big enough to break things in a
small packet.

ciao,
mic

2011/8/18 Angelo Compagnucci angelo.compagnu...@gmail.com:
 Hi list,

 I'm using web2py for a microcontroller project and I'm facing a really
 strange problem.

 This microcontroller (a modified arduino with an enc28j60) can accept
 only one tcp packet a time, because the packet fills the ram and so it
 freezes the micro.
 The pages it can process are to be small and fit in one packet. For a
 microcontroller project, a single packet is sufficient for most use
 cases.

 I have an http library that I tested towards an example hosted by the
 jqplot project (http://www.jqplot.com/tests/jsondata.txt) and it works
 well, I can read the data and I can manipulate the json object.

 I also observed with wireshark that only a single packet is issued in
 reply to my get. There is something like this:

 GET - ACK - HTTP 200 OK

 I procedeed further writing a small controller (the count one found on
 the book) to test the micro with web2py. Boom, it doesn't work!

 I can read only the header of the packet. Further investigation with
 wireshark lead me to think that the rocket webserver fragments the
 response in a way that I can get only the first packet (containing the
 header) and not the second one containg the data (as expected by the
 micro limitations).
 In wireshark I have something like this:

 GET - ACK - TCP segment of a reassembled PDU - HTTP 200 OK

 The packet TCP segment of a reassembled PDU which comes first,
 actually contains only the headers, instead the http 200 one contains
 the complete packet.

 To confirm this, I tested the micro with other webservers (apache,
 IIS, tomcat) and noone shows the undesired behaviour.

 Can you give me an hint?

 Thank you!



Re: [web2py] Fragmented packets when accessing from amicrocontroller

2011-08-18 Thread Michele Comitini
btw you can deploy web2py with many web servers without using rocket.
you can use any server that supports one among wsgi, uwsgi, scgi, fcgi
and other old stuff like mod_python or cgi, you can check
if with one of those configurations you solve the problem.

mic


2011/8/18 Michele Comitini michele.comit...@gmail.com:
 Ciao Angelo,

 What size in bytes the packet has?

 Is MTU/MRU of your server correctly configured for that packet size?

 Consider that HTTP headers may well be big enough to break things in a
 small packet.

 ciao,
 mic

 2011/8/18 Angelo Compagnucci angelo.compagnu...@gmail.com:
 Hi list,

 I'm using web2py for a microcontroller project and I'm facing a really
 strange problem.

 This microcontroller (a modified arduino with an enc28j60) can accept
 only one tcp packet a time, because the packet fills the ram and so it
 freezes the micro.
 The pages it can process are to be small and fit in one packet. For a
 microcontroller project, a single packet is sufficient for most use
 cases.

 I have an http library that I tested towards an example hosted by the
 jqplot project (http://www.jqplot.com/tests/jsondata.txt) and it works
 well, I can read the data and I can manipulate the json object.

 I also observed with wireshark that only a single packet is issued in
 reply to my get. There is something like this:

 GET - ACK - HTTP 200 OK

 I procedeed further writing a small controller (the count one found on
 the book) to test the micro with web2py. Boom, it doesn't work!

 I can read only the header of the packet. Further investigation with
 wireshark lead me to think that the rocket webserver fragments the
 response in a way that I can get only the first packet (containing the
 header) and not the second one containg the data (as expected by the
 micro limitations).
 In wireshark I have something like this:

 GET - ACK - TCP segment of a reassembled PDU - HTTP 200 OK

 The packet TCP segment of a reassembled PDU which comes first,
 actually contains only the headers, instead the http 200 one contains
 the complete packet.

 To confirm this, I tested the micro with other webservers (apache,
 IIS, tomcat) and noone shows the undesired behaviour.

 Can you give me an hint?

 Thank you!




Re: [web2py] Fragmented packets when accessing from amicrocontroller

2011-08-18 Thread Angelo Compagnucci
Hi Michele,

I think tihis is a rocket problem. The size of the packet (only http
part) is about 400 bytes according to wireshark.
The micro http library in debug prints excactly the size of the http
part and with web2py the count is equal to the http headers without
the data part.

If I try to GET google, I obtain a packet that the micro reads well,
than it truncates the http to the maximum size it can handle, circa
950 bytes.
And it works in such a way for every site I try. I tested it with an
apache static page, the page is read well and if it doesn't fill the
buffer I can manipulate the content without troubles.

The rocket webserver is the one that doesn't work.

I don't know hot to explain bettere the problem, if it could help, I
can send wireshark pcaps.

Thank you!

2011/8/18 Michele Comitini michele.comit...@gmail.com:
 btw you can deploy web2py with many web servers without using rocket.
 you can use any server that supports one among wsgi, uwsgi, scgi, fcgi
 and other old stuff like mod_python or cgi, you can check
 if with one of those configurations you solve the problem.

 mic


 2011/8/18 Michele Comitini michele.comit...@gmail.com:
 Ciao Angelo,

 What size in bytes the packet has?

 Is MTU/MRU of your server correctly configured for that packet size?

 Consider that HTTP headers may well be big enough to break things in a
 small packet.

 ciao,
 mic

 2011/8/18 Angelo Compagnucci angelo.compagnu...@gmail.com:
 Hi list,

 I'm using web2py for a microcontroller project and I'm facing a really
 strange problem.

 This microcontroller (a modified arduino with an enc28j60) can accept
 only one tcp packet a time, because the packet fills the ram and so it
 freezes the micro.
 The pages it can process are to be small and fit in one packet. For a
 microcontroller project, a single packet is sufficient for most use
 cases.

 I have an http library that I tested towards an example hosted by the
 jqplot project (http://www.jqplot.com/tests/jsondata.txt) and it works
 well, I can read the data and I can manipulate the json object.

 I also observed with wireshark that only a single packet is issued in
 reply to my get. There is something like this:

 GET - ACK - HTTP 200 OK

 I procedeed further writing a small controller (the count one found on
 the book) to test the micro with web2py. Boom, it doesn't work!

 I can read only the header of the packet. Further investigation with
 wireshark lead me to think that the rocket webserver fragments the
 response in a way that I can get only the first packet (containing the
 header) and not the second one containg the data (as expected by the
 micro limitations).
 In wireshark I have something like this:

 GET - ACK - TCP segment of a reassembled PDU - HTTP 200 OK

 The packet TCP segment of a reassembled PDU which comes first,
 actually contains only the headers, instead the http 200 one contains
 the complete packet.

 To confirm this, I tested the micro with other webservers (apache,
 IIS, tomcat) and noone shows the undesired behaviour.

 Can you give me an hint?

 Thank you!