GithubHelp home page GithubHelp logo

Comments (4)

ctz avatar ctz commented on May 30, 2024 1

Thanks for the report. Yes, the current API treats a half-close as a full-close. I think we should add additional ConnectionStates so the server in your example can finish its connection with:

  • ReadTraffic reads the client's close_notify
  • PeerClosed informs the application that no further data will be forthcoming from peer
  • WriteTraffic for additional server-sent traffic, followed by queue_close_notify
  • EncodeTlsData for outputting that data
  • TransmitTlsData for confirming the data was sent
  • Closed nothing further can happen with this connection

(This arrangement retains Closed as a terminal, full-close state.)

from rustls.

uazu avatar uazu commented on May 30, 2024 1

Thanks for the quick response. There is no rush from my point of view as I also have it working with the buffered interface, and I can continue to use that. So if it's a breaking change for 0.24 that's not a problem. The API changes you suggested sound fine, but I'll code against whatever you come up with. If you want me to test against a pre-release version of Rustls I can do that.

Also it would be helpful to have some guidance about buffer-sizing requirements, either in the docs or as API calls. For example I'm allowing 18KiB for EncodeTlsData because that appears to be the maximum required by protocol, but typically it will be much less. I can add another issue for this if you wish.

from rustls.

djc avatar djc commented on May 30, 2024

Will this need semver-incompatible changes? If so, it might take us a while to get this released.

from rustls.

cpu avatar cpu commented on May 30, 2024

The ConnectionState enum is non_exhaustive so adding new states there isn't semver breaking in itself. I think it would be more a question of how the semantics of the overall API are updated and whether it affects existing usages.

from rustls.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.