From 81714e248b1a1a3da1dd2d771118371bc8c7ffb0 Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Tue, 23 Mar 2010 16:11:31 -0700 Subject: Bug 553774: Make User.login correctly return cookies under JSON-RPC r=dkl, a=mkanat --- Bugzilla/WebService/Server/JSONRPC.pm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'Bugzilla/WebService/Server/JSONRPC.pm') 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) = @_; -- cgit v1.2.3-24-g4f1b