[web2py] Re: Fragmented packets when accessing from amicrocontroller

2011-08-18 Thread Massimo Di Pierro
in trunk we upgraded to the latest rocket is the problem with the
previous or the current version?

On Aug 18, 7:39 am, Angelo Compagnucci angelo.compagnu...@gmail.com
wrote:
 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!


Re: [web2py] Re: Fragmented packets when accessing from amicrocontroller

2011-08-18 Thread Angelo Compagnucci
Hi Massimo,

I upgraded to the last trunk revision and the problem persist. I
conduced more test and I think the problem is located in rocket, in
wireshark it behaves differently from the other webservers.

Please let me know if I have to send you pcaps or other informations..

Thank you!

2011/8/18 Massimo Di Pierro massimo.dipie...@gmail.com:
 in trunk we upgraded to the latest rocket is the problem with the
 previous or the current version?

 On Aug 18, 7:39 am, Angelo Compagnucci angelo.compagnu...@gmail.com
 wrote:
 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!