I'm wondering if this is an error in the jsonrpccontainer.js or in my
implementation of the RPC protocol.

If an error occurred (for instance, an invalid or empty security token) php
shindig will return a '200 OK' with the error code and message in the json
structure. However this breaks the jsonrpccontainer because it thinks the
requested completed ok, and assumes the presence of a response object.
However no response object is set, only an error code and message, thus
causing javascript errors.

Since with RPC there can be multiple responses, setting the HTTP error code
seems illogical, the meta request completed ok, nor would there be a
predictable way of determining exactly which http code of which batched
request to use :)



---------- Forwarded message ----------
From: Justin Mitchell (JIRA) <[email protected]>
Date: Mon, Feb 23, 2009 at 6:30 PM
Subject: [jira] Created: (SHINDIG-935) Gadget authentication failure causes
javascript error in jsonrpccontainer.js
To: [email protected]


Gadget authentication failure causes javascript error in
 jsonrpccontainer.js

When a RPC call is made to the server, JsonRpcServlet checks the security
token, if the token is null an error is returned to the client in the form
of a json message i.e. {"code":401,"message":"The request did not have a
proper security token nor oauth message and unauthenticated
 requests are not allowed"}}. When sendResponse in jsonrpccontainer.js is
called there is an error on this line: if (request.key && response.id !=
request.key) { because the response object is undefined.

To stop this error occurring and for an error to be returned to the caller,
I set the HTTP header in JsonRpcServlet to return HTTP status code 401. This
causes the function hadError in io.js to call sendResponse with the errors
array of the result set, which stops the above code being called and in turn
calls JsonRpcContainer.generateErrorResponse. So in the end an error is
returned to the callback function.

Reply via email to