1. 12 Oct, 2014 1 commit
  2. 11 Oct, 2014 2 commits
  3. 07 Oct, 2014 1 commit
  4. 26 Sep, 2014 2 commits
  5. 24 Sep, 2014 1 commit
  6. 16 Sep, 2014 2 commits
  7. 11 Sep, 2014 3 commits
    • Kenton Varda's avatar
      Fix bug where returned caps would leak if the request was canceled. · 6915e4ff
      Kenton Varda authored
      This only happened if the Finish message indicating cancellation and the Return message happened to cross paths. If the Finish arrived before the Return was sent, then the server would send an empty response. If the Return was received before the Finish was sent, the client would properly record caps in the response. But if they crossed paths, the server would send back a full response with caps, but the client would never bother to inspect that response, thus leaking the caps. Fix is to set the flag to release all returned caps in the Finish message when cancelling.
      6915e4ff
    • Kenton Varda's avatar
    • Kenton Varda's avatar
      Fix obscure bug where the last outgoing message (and any capabilities therein)… · 26914900
      Kenton Varda authored
      Fix obscure bug where the last outgoing message (and any capabilities therein) would not get released (until a new message was sent, replacing it as the last).
      
      This took hours to track down, because it initially looked like "Release" messages weren't being honored in some cases (when they happened to be releasing a capability from the last message, and no subsequent messages were sent). Initial attempts to capture this in a unit test failed because the test of course used a subsequent call to detect if the capability had been released, which succeeded.
      26914900
  8. 08 Sep, 2014 3 commits
  9. 06 Sep, 2014 1 commit
  10. 30 Aug, 2014 1 commit
  11. 29 Aug, 2014 2 commits
  12. 28 Aug, 2014 1 commit
  13. 19 Aug, 2014 2 commits
    • Kenton Varda's avatar
      9e56e694
    • Kenton Varda's avatar
      Fix two subtle bugs with embargos, and improve docs. · 1cdcc24b
      Kenton Varda authored
      Bug 1
      -----
      
      If a Resolve message indicated that the promise had been rejected, the code would see the error cap as a local cap and erroneously believe that the promise had resolved back to a local capability, thereby requiring a Disembargo to be sent. The peer, on receiving the nonsensical Disembargo, would throw an exception and close the connection.
      
      The error message seen was: "expected target->getBrand() == this; 'Disembargo' of type 'senderLoopback' sent to an object that does not point back to the sender."
      
      Bug 2
      -----
      
      Disembargos are sent not only in response to Resolves, but also Returns, since capabilities in a returned message were previously accessible as PromisedAnswers. This means that we must apply the same rule that states that once a promise has been resolved, the promise must from then on forward all messages it receives strictly to the object to which it resolved, even if that object is itself a promise which later resolves to somewhere else. The code which sends Resolve messages was doing this correctly, but the code sending Return messages was not. They now both operate correctly. I've also added more explanation to the documentation in rpc.capnp.
      
      The error message seen was: "expected redirect == nullptr; 'Disembargo' of type 'senderLoopback' sent to an object that does not appear to have been the object of a previous 'Resolve' message."
      1cdcc24b
  14. 07 Aug, 2014 2 commits
  15. 22 Jul, 2014 1 commit
  16. 20 Jul, 2014 2 commits
  17. 16 Jul, 2014 1 commit
  18. 15 Jul, 2014 1 commit
  19. 13 Jul, 2014 1 commit
  20. 12 Jul, 2014 1 commit
  21. 08 Jul, 2014 2 commits
  22. 02 Jul, 2014 1 commit
  23. 01 Jul, 2014 3 commits
  24. 29 Jun, 2014 3 commits