Giter VIP home page Giter VIP logo

ice's People

Contributors

algesten avatar k0nserv avatar laizy avatar lookback-hugotunius avatar melekes avatar pheki avatar qbx2 avatar rainliu avatar sax avatar silvea12 avatar trivigy avatar u-03c9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ice's Issues

Refactoring code to support async closure in callbacks

Without async closure support in those callbacks, it may cause many use-cases unfriendly.

pub type OnConnectionStateChangeHdlrFn = Box<dyn FnMut(ConnectionState) + Send + Sync>;
pub type OnSelectedCandidatePairChangeHdlrFn =
Box<dyn FnMut(&(dyn Candidate + Send + Sync), &(dyn Candidate + Send + Sync)) + Send + Sync>;
pub type OnCandidateHdlrFn = Box<dyn FnMut(Option<Arc<dyn Candidate + Send + Sync>>) + Send + Sync>;

ping_pong example has incorrect content encoding

Hey! I'm just browsing the ping_pong example here, and noticed something strange: The request to /remoteCandidate has a content-type of application/json but the data being sent is not JSON. I'm not sure what format it is meant to be or else I'd be doing a PR instead, but regardless this seems wrong as the format is not JSON-based.

Connectivity checks even from an ICE-lite agent

I believe that the ICE agent is performing connectivity checks even though I've set the lite flag to true in the AgentConfig used to create it. If I understand it correctly, ice-lite agents don't generate connectivity checks: https://datatracker.ietf.org/doc/html/rfc8445#section-2.5

Having a lite agent not generate connectivity checks is useful when using unsignalled WebRTC connections, because then one agent doesn't need to know the ICE password (or potentially even the username) of the peer that is connecting to it.

I tried to make a minimal example: https://github.com/evan-brass/webrtc-rs-ice-bug/blob/master/src/main.rs

Which gave me a network trace like this:
Screen Shot 2022-05-31 at 11 51 17 AM

The second Binding request is from Peer1 (the lite-client) to Peer2 (the full client).

I'm still not-very familiar with the webrtc-ice library's code, but I believe that perhaps a check is needed within the ControlledSelector implementation for AgentInternal?:

self.ping_candidate(local, remote).await;
I've also seen a browser send a USE_CANDIDATE attribute on the first binding request which resulted in a the ice-lite agent sending a binding request without sending a binding response:
self.ping_candidate(local, remote).await;

I'm still new to ICE and the protocol level of WebRTC so if I'm misunderstanding the protocol, just let me know.

Thank you,

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.