Giter Site home page Giter Site logo

lv-mqtt-control-packets's People

Contributors

francois-normandin avatar normandin-cnrc avatar

Watchers

 avatar  avatar  avatar

Forkers

15835229565

lv-mqtt-control-packets's Issues

Extend acceptable client identifiers to include wider range of characters

Currently, the control packets will accept only lexical classes 3 thru 5, or 0. Consider the possibility to extend to a subset of class 6, which includes common characters such as "hyphen" and "underscore".

image

Examples of acceptable client identifiers:

  • "clientID"
  • "clientID5634765328765"

But those are currently rejected, although they are compatible with the server:

  • "clientID47_2"
  • "client-47"

Recommendation:

  • Include a subset of acceptable characters such as _ - % ~ + @

Affected method: MQTT_Control_Packet.lvlib:ControlPacket.lvclass:Encode ClientID.vi

Packet private data should hold all info to allow reconstructing original of invalid packets

Current Packet Private Data does not hold the source bytes in a way that allow recreating the original incoming bytes if we detect an invalid packet format.

Packet should hold an original copy of the input stream instead of only caching the result of the decoding.
Use invalid packet type 00 to output invalid source stream when called.

In a nutshell, this is incorrect when the validation fails.
image

Support for v3.1 sub protocol (Paho Library)

The Paho library for Websockets uses a subprotocol version for distinction between 3.1 and 5.0 of MQTT.
As such, the CONNECT packet's variable header can have a different protocol name (0x00, 0x06 instead of 0x00-0x04).

Verify requirement change to support subprotocol. MQTT spec mentions that server MAY support subprotocols if desired. To be able to use the Paho WS library for javascript, this would be a nice-to-have in the control packets parsing algorithm.

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718083

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.