-
-
Notifications
You must be signed in to change notification settings - Fork 109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rpc.Conn doesn't support promise capabilities #2
Comments
As you suspected, (I think) this is causing problems trying to do stuff with WebSession. I'm getting these errors on the console for irc-idler:
|
So a partial workaround is to use an error client in |
The actual fix is a larger semantic change and I don't have the time to work on it right now. |
My guess is that's not going to cut it, but I should do some more digging before I let you quote me on that. It's not what I'm hitting right this second, but it looks like streaming HTTP responses involves a promise, so without them I'd have to buffer the whole thing and send when the connection is closed. Haven't looked at the websocket calls, but my guess is that's not going to go well either. Any pointers about what needs to change for a proper fix? |
Drat. It's been a while since I've looked at the spec, but generally:
question.go will help you the most, but it the edge cases are quite subtle. I'm not entirely sure what the API should look like if Go were to send these, but if we don't come up with an API, proper integration testing would be difficult (since we'd have to rely on creating them in the wire format). |
One easy way to work around this might be to treat
|
Correction: You shouldn't ignore |
Neat. The |
The workaround is described in a comment included in the patch.
Workaround for #2. Sender promises now no longer error the connection. Thanks, Ian!
Looks like the v3 branch has regressed on this; recvCap doesn't have a case for senderPromise. Any reason not to implement the same workaround there as we did for the v2 branch, in the interm? |
Same workaround could apply. That was the next thing I was going to tackle, but it's looking like I won't be able to get back to v3 for a while. |
Worth noting that the previous behavior isn't broken; it's the same as a workaround that the Go implementation uses in lieu of proper promise resolution support, see: capnproto/go-capnp#2 (comment) ...but actually supporting resolve is better of course.
I think this probably doesn't need to be on the v3 milestone; it's all internals, so shouldn't require breaking compatibility to address. Any objections to removing it? |
From @zombiezen on August 6, 2015 21:1
The
CapDescriptor
struct has asenderPromise
field whichrpc.Conn
does not support, along with the correspondingResolve
message. The Go implementation does not emit this descriptor type, so it is only a concern if interoperating with another implementation that does.Copied from original issue: zombiezen/go-capnproto#2
The text was updated successfully, but these errors were encountered: