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.

