Hi all,

I have been unable in the past to get the implementation of the HTTP
'POST' method working on E_WEB in LambaMOO 1.8.1 ... so I relied on
accepting forms via 'GET' instead. Well, now I am coding a form with
so much info that it exceeds Internet Explorer's 2048-byte limit on
the length of a URL. I *have* to use POST. So I used a packet-sniffer
and debug routines to figure out where E_WEB is hanging ... and I
think I understand why, but I don't have a solution.

When I send a form via the 'POST' method in both Camino and Safari on
the Mac, the final line of the HTTP request is passed unterminated by
a CR or LF ... and unfortunately this line contains all of the
relevant POST data generated by the form. But E_WEB uses the read()
function to read the web request, and as far as I can tell, read()
will not return any info without a carriage return, so E_WEB gets
hung at the very end of the request waiting for the data to be
terminated.

Here's what the POST request sends, as revealed by a packet sniffer
... I have omitted the URLs involved for privacy, and added the
carriage returns and linefeeds ("[CR/LF]") that are invisible in the
text file:

POST /1333/ HTTP/1.1[CR/LF]
Host: [omitted][CR/LF]
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US;
rv:1.7) Gecko/20040623 Camino/0.8[CR/LF]
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5[CR/LF]
Accept-Language: en-us,en;q=0.5[CR/LF]
Accept-Encoding: gzip,deflate[CR/LF]
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7[CR/LF]
Keep-Alive: 300[CR/LF]
Connection: keep-alive[CR/LF]
Referer: [omitted][CR/LF]
Content-Type: application/x-www-form-urlencoded[CR/LF]
Content-Length: 28[CR/LF]
[CR/LF]
flip=Data1&write=Data2&Submit=Post

Notice that the final line, which contains the data I need, is
unterminated. When I hack the E_WEB server to notify me of every line
it receives, I get the following literals...

{"POST /1333/lx1840/post/ HTTP/1.1"}
{"Host: books.that.dontexist.dnsalias.net:8900"}
{"User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US;
rv:1.7) Gecko/20040623 Camino/0.8"}
{"Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"}
{"Accept-Language: en-us,en;q=0.5"}
{"Accept-Encoding: gzip,deflate"}
{"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"}
{"Keep-Alive: 300"}
{"Connection: keep-alive"}
{"Referer: http://that.dontexist.dnsalias.net:8900/1333"}
{"Content-Type: application/x-www-form-urlencoded"}
{"Content-Length: 28"}
{""}

And there the loop hangs ... presumably waiting for the final line to
be terminated. Most web servers don't need the termination, since
they use the preceding 'Content-Length' header as a cue to when to
stop reading. As far as I can see, there is no way to implement this
behaviour in MOO code. Or is there something I have overlooked? Is
there a way that I can read a single character off of a connection at
a time? If there is, E_WEB doesn't use it, and I don't understand why
the programmers of E_WEB expected their POST routine to work.

Thanks in advance for any help you could provide.

Paul.


______________________________________________________________________ 
Post your free ad now! http://personals.yahoo.ca

#############################################################
This message is sent to you because you are subscribed to
  the mailing list <moo-cows@the-b.org>.
To unsubscribe, E-mail to: <[EMAIL PROTECTED]>
To switch to the DIGEST mode, E-mail to <[EMAIL PROTECTED]>
To switch to the INDEX mode, E-mail to <[EMAIL PROTECTED]>
Send administrative queries to  <[EMAIL PROTECTED]>

Reply via email to