Fix form processing bug with HTTP proxy.

This commit is contained in:
Drake 2006-12-06 20:22:12 +00:00
parent 6307e4a724
commit 4f57b49504
2 changed files with 11 additions and 5 deletions

View file

@ -46,6 +46,7 @@
- fix: subscription dates
- fix: Default Rich Editor setting not rendering correctly
- fix: visitor name disappearing on preview in CS
- fix: HTTP proxy not passing form elements through
- The Events Calendar is now the new Calendar with some fun new features.
All your existing Events Calendars will be migrated automatically.
- rfe: multiple redirects on a page - which one?

View file

@ -31,7 +31,9 @@ sub appendToUrl {
my $url = shift;
my $paramSet = shift;
my $seperator = ($self->get("useAmpersand")) ? "&" : ";";
if ($url =~ /\?/) {
if (index($url, '?') == length($url)-1) {
$url .= $paramSet;
} elsif (index($url, '?') >= 0) {
$url .= $seperator.$paramSet;
} else {
$url .= '?'.$paramSet;
@ -298,18 +300,21 @@ sub view {
if($requestMethod=~/GET/i) {
my $params = $self->session->form->paramsHashRef();
for my $key (keys %{$params}) {
my $value = $params->{$key};
next unless ($key =~ s/^HttpProxy_//); # Skip non-proxied params
if (ref $params->{$key} eq "ARRAY") {
if (ref $value eq "ARRAY") {
# Param value is an array reference
# Add all values to URL
for my $value (@{$params->{$key}}) {
$proxiedUrl = $self->appendToUrl($proxiedUrl,"$key=$value");
for my $subvalue (@$value) {
$proxiedUrl = $self->appendToUrl($proxiedUrl,"$key=$subvalue");
}
} else {
$proxiedUrl = $self->appendToUrl($proxiedUrl,"$key=".$params->{$key});
$proxiedUrl = $self->appendToUrl($proxiedUrl,"$key=$value");
}
}
### DEBUG
#require Data::Dumper;
#$self->session->errorHandler->warn("DEBUG: ".Data::Dumper::Dumper($params));
#$self->session->errorHandler->warn("URL: $proxiedUrl");
$request = HTTP::Request->new(GET => $proxiedUrl, $header) || return "wrong url"; # Create GET request