Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/common.py @ 2514:419c42223bee
Really fix http headers for web UI and issue 254.
This also arranges for static content to allow a keepalive connection.
author | Eric Hopper <hopper@omnifarious.org> |
---|---|
date | Tue, 27 Jun 2006 09:33:12 -0700 |
parents | d351a3be3371 |
children | 345bac2bc4ec |
comparison
equal
deleted
inserted
replaced
2513:f22e3e8fd457 | 2514:419c42223bee |
---|---|
15 if os.path.exists(os.path.join(cl_path)): | 15 if os.path.exists(os.path.join(cl_path)): |
16 return os.stat(cl_path).st_mtime | 16 return os.stat(cl_path).st_mtime |
17 else: | 17 else: |
18 return os.stat(hg_path).st_mtime | 18 return os.stat(hg_path).st_mtime |
19 | 19 |
20 def staticfile(directory, fname): | 20 def staticfile(directory, fname, req): |
21 """return a file inside directory with guessed content-type header | 21 """return a file inside directory with guessed content-type header |
22 | 22 |
23 fname always uses '/' as directory separator and isn't allowed to | 23 fname always uses '/' as directory separator and isn't allowed to |
24 contain unusual path components. | 24 contain unusual path components. |
25 Content-type is guessed using the mimetypes module. | 25 Content-type is guessed using the mimetypes module. |
34 return "" | 34 return "" |
35 path = os.path.join(path, part) | 35 path = os.path.join(path, part) |
36 try: | 36 try: |
37 os.stat(path) | 37 os.stat(path) |
38 ct = mimetypes.guess_type(path)[0] or "text/plain" | 38 ct = mimetypes.guess_type(path)[0] or "text/plain" |
39 return "Content-type: %s\n\n%s" % (ct, file(path).read()) | 39 req.header([('Content-type', ct), |
40 ('Content-length', os.path.getsize(path))]) | |
41 return file(path).read() | |
40 except (TypeError, OSError): | 42 except (TypeError, OSError): |
41 # illegal fname or unreadable file | 43 # illegal fname or unreadable file |
42 return "" | 44 return "" |