I think I should have been a little more clear about what I meant by "headers". See, there are headers for the entire page, but each part of the multi-part form can also have a set of headers, usually just Content-Type and Content-Encoding if relevant. Netscape doesn't seem to send any of them for whatever reason. I haven't tried IE.
If each part of a multi-part form had a Content-Length, there would be no reason to parse for the boundary strings. There would, in fact, be little need for boundary strings at all. I'm not entirely clear on why it was done with boundaries instead of lengths in the first place. But anyway... even if IE does return a Content-Length, netscape (at least, 4.76) does not so we still need to handle boundary strings. The headers are put into an ns_set with the name of the boundary. (This is the set that's returned from ns_getform). I'm going to code something up in C and see how it works. I'll try to make it a drop-in replacement for form.tcl, and post it back here, get some comments. Rusty