]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 553774: Make User.login correctly return cookies under JSON-RPC
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Tue, 23 Mar 2010 23:12:29 +0000 (16:12 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Tue, 23 Mar 2010 23:12:29 +0000 (16:12 -0700)
r=dkl, a=mkanat

Bugzilla/WebService/Server/JSONRPC.pm

index d07901a7f4d7213ec7a2213abf4bcaf081221bcb..3ec64c6bc9883b4ec051011f5a8d1208baea9c5d 100644 (file)
@@ -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) = @_;