diff options
| author | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-08-10 23:08:21 +0200 |
|---|---|---|
| committer | James Turnbull <james@lovedthanlost.net> | 2009-08-13 08:11:12 +1000 |
| commit | 601a2e54aecccedfc0bdd94939d44cc07b4d6588 (patch) | |
| tree | 31bbc59f277582b9d4ef04de519d2f2ff110b49d /lib/puppet/network | |
| parent | d86bc889390e56aa007b0099f9f407d4be98c876 (diff) | |
| download | puppet-601a2e54aecccedfc0bdd94939d44cc07b4d6588.tar.gz puppet-601a2e54aecccedfc0bdd94939d44cc07b4d6588.tar.xz puppet-601a2e54aecccedfc0bdd94939d44cc07b4d6588.zip | |
Fix #2516 - Fix format detection when content-type contains charset
Even though Puppet never transmist a charset information in its
response/request content-type, some proxy (especially Apache with the
infamous AddDefaultCharset configuration) may add this "incorrect"
information.
This patch makes sure that only the mime-type is used when looking
for the format associated with a response or a request.
The patch also provides a better error message when the client or server
code is fed with a request whose mime-type can not be mapped to a known
format.
It also fixes a typo noticed by the original reporter.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
Diffstat (limited to 'lib/puppet/network')
| -rw-r--r-- | lib/puppet/network/format_handler.rb | 3 | ||||
| -rw-r--r-- | lib/puppet/network/http/handler.rb | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/puppet/network/format_handler.rb b/lib/puppet/network/format_handler.rb index 17b863fda..2ffbcef3d 100644 --- a/lib/puppet/network/format_handler.rb +++ b/lib/puppet/network/format_handler.rb @@ -81,9 +81,10 @@ module Puppet::Network::FormatHandler out = format when %r{\w+/\w+} out = mime(format) - when + else out = format(format) end + raise ArgumentError, "No format match the given format name or mime-type (%s)" % format if out.nil? out.name end diff --git a/lib/puppet/network/http/handler.rb b/lib/puppet/network/http/handler.rb index 27e8dbd1d..817661db1 100644 --- a/lib/puppet/network/http/handler.rb +++ b/lib/puppet/network/http/handler.rb @@ -42,7 +42,9 @@ module Puppet::Network::HTTP::Handler def request_format(request) if header = content_type_header(request) + header.gsub!(/\s*;.*$/,'') # strip any charset format = Puppet::Network::FormatHandler.mime(header) + raise "Client sent a mime-type (%s) that doesn't correspond to a format we support" % header if format.nil? return format.name.to_s if format.suitable? end |
