ws: New WS_ReqPipeline()
When a session has data pipelined we perform a dirty dance to move it at the beginning of the workspace. The rollbacks used to occur between HTC_RxPipeline() and HTC_RxInit() calls until it was centralized in the latter. With a dedicated WS_ReqPipeline() operation we can capture the semantics of initializing an existing connection for its next task with or without data fetched from the previous task. While conceptually there is still a use-after-free since the pipelined data may belong to the same workspace, it is fine if that happens within the bounds of an atomic workspace operation.
Showing
Please register or sign in to comment