--- yaws_rpc-orig.erl	2007-12-16 00:01:12.000000000 +0100
+++ yaws_rpc.erl	2007-12-16 00:45:16.000000000 +0100
@@ -167,6 +167,11 @@
 	{error, Reason, Rc} ->
 	    ?ERROR_LOG({M, F, Reason}),
 	    send(Args, Rc, Reason, [], RpcType);
+	{jsonrpcerror, Code, Message} ->
+		encode_send(Args, 200, {jsonrpcerror, Code, Message}, [], ID, json);
+	{jsonrpcerror, Code, Message, NewSessionValue} ->
+	    CO = handle_cookie(Cookie, CookieName, SessionValue, NewSessionValue, M, F),
+		encode_send(Args, 200, {jsonrpcerror, Code, Message}, CO, ID, json);
 	{false, ResponsePayload} ->
 	    % do not have updates in session data
 	    encode_send(Args, 200, ResponsePayload, [], ID, RpcType);
@@ -283,7 +288,10 @@
 	    json -> json:encode({struct, [ {result, ErlStruct}, {id, ID}]});
 	    haxe -> [$h, $x, $r | haxe:encode(ErlStruct)]
 	end,
-    {ok, StructStr}.  % }}}
+    {ok, StructStr};
+
+encode_handler_payload({jsonrpcerror, Code, Message}, ID, json) ->
+	{ok, json:encode({struct, [ {id, ID}, {error, {struct, [{code, Code}, {message, Message}]}}]})}.  % }}}
 
 decode_handler_payload(json, JSonStr) -> %{{{
     try 
