I’ll look into not using mark reset there. On Wed, Mar 20, 2019 at 11:05 AM Emmanuel Lécharny <[email protected]> wrote:
> > On 20/03/2019 15:30, Jonathan Valliere wrote: > > The offending code is in AbstractPollingIoProcessor. Are you agreeing > that > > AbstractPollingIoProcessor has no place modifying the buffer positions? > > Removing buf.reset() would probably fix the problem. > > > The reason we reset the buffer is that we need to send it back to the > IoHandler in the messageSent event, and to make it readable from its > starting point. > > > If the app is sending a message containg "hello world", this string will > be put into a IoBuffer, which will be read when the data will get sent > to the remote peer, and the position will then change. The messageSent > event will send this IoBuffer back to the IoHandler, which will then be > incapable of telling the app the message "hello world" has been sent, > because the buffer has been exhausted by the peer write... > > > This is the reason why we reset the buffer *after* it has been fully sent. > > >
