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
Thanks ~
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.