diff options
-rw-r--r-- | Bugzilla/WebService/Server/JSONRPC.pm | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Bugzilla/WebService/Server/JSONRPC.pm b/Bugzilla/WebService/Server/JSONRPC.pm index d07901a7f..3ec64c6bc 100644 --- a/Bugzilla/WebService/Server/JSONRPC.pm +++ b/Bugzilla/WebService/Server/JSONRPC.pm @@ -52,6 +52,25 @@ sub create_json_coder { # Override the JSON::RPC method to return our CGI object instead of theirs. sub cgi { return Bugzilla->cgi; } +# Override the JSON::RPC method to use $cgi->header properly instead of +# just printing text directly. This fixes various problems, including +# sending Bugzilla's cookies properly. +sub response { + my ($self, $response) = @_; + my $headers = $response->headers; + my @header_args; + foreach my $name ($headers->header_field_names) { + my @values = $headers->header($name); + $name =~ s/-/_/g; + foreach my $value (@values) { + push(@header_args, "-$name", $value); + } + } + my $cgi = $self->cgi; + print $cgi->header(-status => $response->code, @header_args); + print $response->content; +} + sub type { my ($self, $type, $value) = @_; |