Hi Pavel,

Receiver.java:

 120     private void pushContinuously() {
 121         while (true) {
 122             if (!readable.get()) {
 123                 if (!initialized) {
 124                     initialized = true;
 125                     try {
 126                         channel.registerEvent(event);
 127                     } catch (IOException e) {
 128                         messageConsumer.onError(e);
 129                     }
 130                 }
 131                 break;
 132             } else if (demand.get() > 0 && !handler.isStopped()) {
 133                 pushOnce();
 134             } else {
 135                 break;
 136             }
 137         }
 138     }

I think you might have an issue here, if the initialBuffer
already contains all the data that there is to be read, then
the readable.get() will be false, initialized will be false,
pushOnce() will not be called, and you're going to register
an event that will never be triggered.

best regards,

-- daniel

On 31/05/2017 11:30, Pavel Rappo wrote:
Hello,

Please review the following change:

  http://cr.openjdk.java.net/~prappo/8180155/webrev.00/

This change addresses 2 separate issues:

     https://bugs.openjdk.java.net/browse/JDK-8180155
     https://bugs.openjdk.java.net/browse/JDK-8156518

The first one is a busy-wait for data on the socket which manifests itself as
non-returning invocation of WebSocket.request(long).

The second one is an issue with a timeout for an asynchronous HTTP request.
This issue affects both HttpClient and WebSocket implementations.

Thanks,
-Pavel


Reply via email to