Skip to content

Reading a DataFrame succeeds even if it is incomplete #119

@neivv

Description

@neivv

If DataFrame::read_dataframe is passed too few bytes, it will still succeed and return a dataframe with an incomplete payload.

Example:

    use websocket::DataFrame;
    let mut data = vec![0x8au8, 0x08, 0x19, 0xac, 0xab, 0x8a, 0x52, 0x4e, 0x05, 0x00];
    println!("Incomplete header:\n  {:?}", DataFrame::read_dataframe(&mut &data[..1], false));
    // This doesn't make sense
    println!("Incomplete payload:\n  {:?}", DataFrame::read_dataframe(&mut &data[..6], false));
    println!("Complete dataframe:\n  {:?}", DataFrame::read_dataframe(&mut &data[..], false));
    data.push(0xff);
    println!("Additional data:\n  {:?}", DataFrame::read_dataframe(&mut &data[..], false));

outputs

Incomplete header:
  Err(NoDataAvailable)
Incomplete payload:
  Ok(DataFrame { finished: true, reserved: [false, false, false], opcode: Pong, data: [25, 172, 171, 138] })
Complete dataframe:
  Ok(DataFrame { finished: true, reserved: [false, false, false], opcode: Pong, data: [25, 172, 171, 138, 82, 78, 5, 0] })
Additional data:
  Ok(DataFrame { finished: true, reserved: [false, false, false], opcode: Pong, data: [25, 172, 171, 138, 82, 78, 5, 0] })

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions