Message4865
CGIHTTPServer.py in the Python 2.1 library needs two
changes to the popen2 section in order to support
binary data and to avoid buffering problems under
Windows. The complete code block is shown at the end
of this message. The two changed lines are:
cmdline = "%s -u %s" % (interp, cmdline)
fi, fo = os.popen2(cmdline, 'b')
I've tested this under Windows 2000 Pro and binary
file uploads now work, however more extensive tests
should probably be done.
It appears there is another socket-related problem
and/or end-of-line conversion error that occurs when
using Internet Explorer 5.x and BASEHTTPServer with
CGIHTTPServer on the same machine. I'm still
investigating that issue.
Finally, I have done a small rewrite of
CGIHTTPServer.py to simplify subclassing it to support
running CGIs in any or all directories and using other
file extensions such as .cgi. The maintainer for the
current file should email me about the changes to see
whether they want to update the official library file.
I didn't post it here since it needs more tweaking
ka
---
CGIHTTPServer.p fixes...
elif self.have_popen2:
# Windows -- use popen2 to create a subprocess
import shutil
os.environ.update(env)
cmdline = scriptfile
if self.is_python(scriptfile):
interp = sys.executable
if interp.lower().endswith("w.exe"):
# On Windows, use python.exe, not
python.exe
interp = interp[:-5] = interp[-4:]
cmdline = "%s -u %s" % (interp, cmdline)
if '=' not in query and '"' not in query:
cmdline = '%s "%s"' % (cmdline, query)
self.log_error("command: %s", cmdline)
try:
nbytes = int(length)
except:
nbytes = 0
fi, fo = os.popen2(cmdline, 'b')
if self.command.lower() == "post" and nbytes > 0:
data = self.rfile.read(nbytes)
fi.write(data)
fi.close()
shutil.copyfileobj(fo, self.wfile)
sts = fo.close()
if sts:
self.log_error("CGI script exit status %#x",
sts)
else:
self.log_error("CGI script exited OK")
|
|
Date |
User |
Action |
Args |
2007-08-23 13:54:37 | admin | link | issue427345 messages |
2007-08-23 13:54:37 | admin | create | |
|