cvsdist 195f2cb
--- Frontier-RPC-0.06/lib/Frontier/RPC2.pm.rawserve	Wed Jun 19 17:47:33 2002
cvsdist 195f2cb
+++ Frontier-RPC-0.06/lib/Frontier/RPC2.pm	Wed Jun 19 18:26:04 2002
cvsdist 195f2cb
@@ -110,7 +110,7 @@
cvsdist 195f2cb
 }
cvsdist 195f2cb
 
cvsdist 195f2cb
 sub serve {
cvsdist 195f2cb
-    my $self = shift; my $xml = shift; my $methods = shift;
cvsdist 195f2cb
+    my $self = shift; my $xml = shift; my $methods = shift; my $raw = shift;
cvsdist 195f2cb
 
cvsdist 195f2cb
     my $call;
cvsdist 195f2cb
     # FIXME bug in Frontier's XML
cvsdist 195f2cb
@@ -118,6 +118,7 @@
cvsdist 195f2cb
     eval { $call = $self->decode($xml) };
cvsdist 195f2cb
 
cvsdist 195f2cb
     if ($@) {
cvsdist 195f2cb
+        die $@ if $raw;
cvsdist 195f2cb
 	return $self->encode_fault(1, "error decoding RPC.\n" . $@);
cvsdist 195f2cb
     }
cvsdist 195f2cb
 
cvsdist 195f2cb
@@ -127,12 +128,14 @@
cvsdist 195f2cb
 
cvsdist 195f2cb
     my $method = $call->{'method_name'};
cvsdist 195f2cb
     if (!defined $methods->{$method}) {
cvsdist 195f2cb
+        die "No such method '$method'" if $raw;
cvsdist 195f2cb
         return $self->encode_fault(3, "no such method \`$method'\n");
cvsdist 195f2cb
     }
cvsdist 195f2cb
 
cvsdist 195f2cb
     my $result;
cvsdist 195f2cb
     my $eval = eval { $result = &{ $methods->{$method} }(@{ $call->{'value'} }) };
cvsdist 195f2cb
     if ($@) {
cvsdist 195f2cb
+        die $@ if $raw;
cvsdist 195f2cb
 	return $self->encode_fault(4, "error executing RPC \`$method'.\n" . $@);
cvsdist 195f2cb
     }
cvsdist 195f2cb