rsocket / rsocket-js

JavaScript implementation of RSocket

Home Page:https://github.com/rsocket/rsocket-js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Metadata (M) flag is not set from responder side when `metadata` has length

viglucci opened this issue · comments

In _sendStreamPayload of RSocketMachineImpl, when flags is created, the flag for present Metadata (M) is not set, which causes the payload.metadata value to not be included in the encoded payload later in serializePayloadFrame.

https://github.com/rsocket/rsocket-js/blob/master/packages/rsocket-core/src/RSocketMachine.js#L885

Expected Behavior

Per spec, Metadata (M) flag must be set when the payload contains metadata.

Actual Behavior

Metadata (M) flag is not set, and the resulting encoded payload does not include metadata.

Steps to Reproduce

Attempt to send any metadata value on a payload from requestResponse or requestStream, the value received on the client will be null.

Possible Solution

if (metadata && metadata.length > 0) {
  // eslint-disable-next-line no-bitwise
  flags |= _RSocketFrame.FLAGS.METADATA;
}

Your Environment

  • RSocket version(s) used: 0.0.27
  • Other relevant libraries versions (eg. netty, ...): n/a
  • Platform (eg. JVM version (javar -version) or Node version (node --version)): v16.13.1
  • OS and version (eg uname -a): Windows
commented

Thanks ~

commented

I use[ Buffer.from] api, and website metadata still null , i don't known why

@viglucci, @OlegDokuka, I see this issue is fixed in #200 two months ago. When do you plan to release fixed version?

Hi @genesys-ppotapov, unfortunately, we can't give a firm timeline for our next release at the moment. We are working towards cutting some releases, both for the existing 0.x, as well as a 1.0.0-alpha, but I don't have any firm dates to share at this time.

@viglucci, I see. Thank you for the information.