- From: Markku Savela <msa@msa.tte.vtt.fi>
- Date: Thu, 22 Feb 1996 11:39:09 +0200 (EET)
- To: www-lib@w3.org
Remember me? I wanted to do a proxy/converter using WWW library
Client Proxy/Converter The WEB
(requestor) (real WWW server)
GET URL (pass through) GET URL
----------------------------> .............. ------------> ........
.............. ........
.............. HTTP Reply ........
.............. <------------ ........
HTServHTTP
HTMIMEConvert
+ the whole converter
stacking and type matching
stuff sitting here
application/x-mheg-5 ..............
<---------------------------- ..............
With the library version 4.0D and following setup
HTProtocol_add("http", NO, HTLoadHTTP, HTServHTTP);
HTProtocol_add("file", NO, HTLoadFile, NULL);
HTProtocol_add("ftp", NO, HTLoadFTP, NULL);
HTProtocol_add("nntp", NO, HTLoadNews, NULL);
HTProtocol_add("news", NO, HTLoadNews, NULL);
HTProtocol_add("gopher", NO, HTLoadGopher, NULL);
conv = HTList_new();
HTConversion_add(conv,"text/x-http","*/*",HTTPStatus_new,1.0, 0.0, 0.0);
HTConversion_add(conv,"text/*","*/*", TextObject, 1.0,0.0,0.0);
HTConversion_add(conv,"image/*","*/*", ImageObject, 1.0,0.0,0.0);
HTConversion_add(conv,"message/x-rfc822-head","*/*",HTMIMEHeader,1.0,0.0,0.0);
HTConversion_add(conv,"message/rfc822","*/*",HTMIMEConvert,1.0,0.0,0.0);
HTConversion_add(conv,"text/html","*/*", HtmlObject, 1.0,0.0,0.0);
..and with a HTTP/1.0 request "GET <some image URL>" I manage to get
a call to my "ImageObject" stream, which
- successfully receives and buffers the image content
- in the free "method" of the HTStream I actually convert the
image to the output format (x-mheg-5) and write the byte
stream to target stream.
The problem:
- what do I have to do to get the output target (which now is
actually HTTPServ.c/HTTPReply) actually generate my new
reply headers, most importantly
content-type: application/x-mheg-5
What happens now is that
- HTTPServ/HTTPReply calls MakeReplyPipe, which finds out that
the client->net pointer exists, and goes into "Direct
output" mode without generating any headers! (Thus, my
binary MHEG-5 stream is returned to original client without
any header information).
Solution? Of course, knowing that this "Direct output" happens, I
could just write the headers myself to the target, before the actual
content, but
- is this correct solution in respect to WWWLIB architecture?
- will it always work this way (I would be hosed, if the
library in some cases would not go into "direct output")?
- if not, how do I instruct the HTTPReply to generate the
headers I want? (If this is documented, just mail me the
appropriate WWW pointer :-)
--
Actually there is an other issue in the general picture: in my
converter proxy, I may get client request using HTTP/0.9 protocol, but
might always wish to forward the requests as HTTP/1.0. But, if such
"upgrade" happens, I still have to remember the original client
protocol and reply to client according to that. Any comments on this?
It already is taken care by the library? Or, I have to to something
special to support it?
--
Markku Savela (msa@hemuli.tte.vtt.fi), Technical Research Centre of Finland
Multimedia Systems, P.O.Box 1203,FIN-02044 VTT,http://www.vtt.fi/tte/staff/msa/
Received on Thursday, 22 February 1996 04:42:14 UTC