Use non-blocking, async API for BOSH servlet

Description

After upgrading Jetty from the 7 to the 9 branch ( & ), an issue pops up where some BOSH requests will fail.

The direct cause of this issue is that sometimes, the InputStream from the HttpServletRequest returns nothing when being read.

A simplistic work-around for this problem is checking for availability of data (through InputStream.available()) and sleeping for a couple of milliseconds when that returns zero.

The root cause of the issue can be found in usage of the non-async API from an async context. Instead of using the non-async API, the newer async API should be used.

Environment

None

Activity

Show:
Guus der Kinderen
March 20, 2015, 3:12 PM

New implementation has been pushed and tested. Pidgin (via BOSH) gives odd behavior, but that was already the case before I applied the changes. Strophe, JSJac and Candy appear to work just fine with the new changes.

Guus der Kinderen
February 28, 2015, 5:13 PM

I am working on this issue in this fork: https://github.com/guusdk/Openfire/tree/OF-885

Guus der Kinderen
February 27, 2015, 10:15 AM

This issue was discussed on the Jetty User mailinglist. The discussion is archived here: http://dev.eclipse.org/mhonarc/lists/jetty-users/msg05552.html

Fixed

Assignee

Guus der Kinderen

Reporter

Guus der Kinderen

Labels

None

Expected Effort

None

Ignite Forum URL

None

Components

Fix versions

Priority

Major