amq.js initHandler() method swallows first message received
-----------------------------------------------------------
Key: AMQ-3350
URL: https://issues.apache.org/jira/browse/AMQ-3350
Project: ActiveMQ
Issue Type: Bug
Components: JMS client
Affects Versions: 5.5.0
Environment: MAC OS X (10.6)
Reporter: Ken Seiss
The very first message received by a javascript client (when using {{amq.js}})
is swallowed with no action. This is because the {{sendPoll()}} method calls
{{initHandler()}} from the {{successCallback}} handler when the message arrives
and the boolean {{sessionInitialized}} is false. This sends the code into the
{{initHandler()}} method which in the end just calls {{sendPoll()}} again. It
never bothers calling {{pollHandler()}} to deal with the message it received.
{code:title=amq.js|borderStyle=solid}
// *** This method does not process the data passed in. It just calls
sendPoll() again!
var initHandler = function(data) {
sessionInitialized = true;
if(sessionInitializedCallback) {
sessionInitializedCallback();
}
sendPoll();
}
var sendPoll = function() {
// Workaround IE6 bug where it caches the response
// Generate a unique query string with date and random
var now = new Date();
var timeoutArg = sessionInitialized ? timeout : 0.001;
var data = 'timeout=' + timeoutArg * 1000
+ '&d=' + now.getTime()
+ '&r=' + Math.random();
var successCallback = sessionInitialized ? pollHandler :
initHandler;
var options = { method: 'get',
data: addClientId( data ),
success: successCallback,
error: pollErrorHandler};
adapter.ajax(uri, options);
};
{code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira