mirror of
https://github.com/pion/webrtc.git
synced 2025-11-02 11:34:32 +08:00
Pad out each chunk
This commit is contained in:
committed by
Sean DuBois
parent
22e98b0dfb
commit
a1874f912d
@@ -115,6 +115,14 @@ func (i *InitCommon) Marshal() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
out = append(out, pp...)
|
out = append(out, pp...)
|
||||||
|
|
||||||
|
// Chunks (including Type, Length, and Value fields) are padded out
|
||||||
|
// by the sender with all zero bytes to be a multiple of 4 bytes
|
||||||
|
// long. This padding MUST NOT be more than 3 bytes in total. The
|
||||||
|
// Chunk Length value does not include terminating padding of the
|
||||||
|
// chunk. *However, it does include padding of any variable-length
|
||||||
|
// parameter except the last parameter in the chunk.* The receiver
|
||||||
|
// MUST ignore the padding.
|
||||||
if idx != len(i.params)-1 {
|
if idx != len(i.params)-1 {
|
||||||
padding := make([]byte, getPadding(len(pp), 4))
|
padding := make([]byte, getPadding(len(pp), 4))
|
||||||
out = append(out, padding...)
|
out = append(out, padding...)
|
||||||
|
|||||||
@@ -116,12 +116,12 @@ func (p *Packet) Marshal() ([]byte, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
raw = append(raw, chunkRaw...)
|
raw = append(raw, chunkRaw...)
|
||||||
}
|
|
||||||
|
|
||||||
paddingNeeded := getPadding(len(raw), 4)
|
paddingNeeded := getPadding(len(raw), 4)
|
||||||
if paddingNeeded != 0 {
|
if paddingNeeded != 0 {
|
||||||
raw = append(raw, make([]byte, paddingNeeded)...)
|
raw = append(raw, make([]byte, paddingNeeded)...)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Checksum is already in BigEndian
|
// Checksum is already in BigEndian
|
||||||
// Using LittleEndian.PutUint32 stops it from being flipped
|
// Using LittleEndian.PutUint32 stops it from being flipped
|
||||||
|
|||||||
Reference in New Issue
Block a user