mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-04-07 10:02:24 +02:00
Add AudioSoloRequest, BulkAvatarTraitsAck; also decode obfuscated protocols
This commit is contained in:
parent
8faff57033
commit
d604f9adfb
1 changed files with 49 additions and 49 deletions
|
@ -152,7 +152,9 @@ local packet_types = {
|
|||
[97] = "OctreeDataPersist",
|
||||
[98] = "EntityClone",
|
||||
[99] = "EntityQueryInitialResultsComplete",
|
||||
[100] = "BulkAvatarTraits"
|
||||
[100] = "BulkAvatarTraits",
|
||||
[101] = "AudioSoloRequest",
|
||||
[102] = "BulkAvatarTraitsAck"
|
||||
}
|
||||
|
||||
local unsourced_packet_types = {
|
||||
|
@ -301,55 +303,53 @@ function p_hfudt.dissector(buf, pinfo, tree)
|
|||
|
||||
-- check if we have part of a message that we need to re-assemble
|
||||
-- before it can be dissected
|
||||
if obfuscation_bits == 0 then
|
||||
if message_bit == 1 and message_position ~= 0 then
|
||||
if fragments[message_number] == nil then
|
||||
fragments[message_number] = {}
|
||||
end
|
||||
|
||||
if fragments[message_number][message_part_number] == nil then
|
||||
fragments[message_number][message_part_number] = {}
|
||||
end
|
||||
|
||||
-- set the properties for this fragment
|
||||
fragments[message_number][message_part_number] = {
|
||||
payload = buf(i):bytes()
|
||||
}
|
||||
|
||||
-- if this is the last part, set our maximum part number
|
||||
if message_position == 1 then
|
||||
fragments[message_number].last_part_number = message_part_number
|
||||
end
|
||||
|
||||
-- if we have the last part
|
||||
-- enumerate our parts for this message and see if everything is present
|
||||
if fragments[message_number].last_part_number ~= nil then
|
||||
local i = 0
|
||||
local has_all = true
|
||||
|
||||
local finalMessage = ByteArray.new()
|
||||
local message_complete = true
|
||||
|
||||
while i <= fragments[message_number].last_part_number do
|
||||
if fragments[message_number][i] ~= nil then
|
||||
finalMessage = finalMessage .. fragments[message_number][i].payload
|
||||
else
|
||||
-- missing this part, have to break until we have it
|
||||
message_complete = false
|
||||
end
|
||||
|
||||
i = i + 1
|
||||
end
|
||||
|
||||
if message_complete then
|
||||
debug("Message " .. message_number .. " is " .. finalMessage:len())
|
||||
payload_to_dissect = ByteArray.tvb(finalMessage, message_number)
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
payload_to_dissect = buf(i):tvb()
|
||||
if message_bit == 1 and message_position ~= 0 then
|
||||
if fragments[message_number] == nil then
|
||||
fragments[message_number] = {}
|
||||
end
|
||||
|
||||
if fragments[message_number][message_part_number] == nil then
|
||||
fragments[message_number][message_part_number] = {}
|
||||
end
|
||||
|
||||
-- set the properties for this fragment
|
||||
fragments[message_number][message_part_number] = {
|
||||
payload = buf(i):bytes()
|
||||
}
|
||||
|
||||
-- if this is the last part, set our maximum part number
|
||||
if message_position == 1 then
|
||||
fragments[message_number].last_part_number = message_part_number
|
||||
end
|
||||
|
||||
-- if we have the last part
|
||||
-- enumerate our parts for this message and see if everything is present
|
||||
if fragments[message_number].last_part_number ~= nil then
|
||||
local i = 0
|
||||
local has_all = true
|
||||
|
||||
local finalMessage = ByteArray.new()
|
||||
local message_complete = true
|
||||
|
||||
while i <= fragments[message_number].last_part_number do
|
||||
if fragments[message_number][i] ~= nil then
|
||||
finalMessage = finalMessage .. fragments[message_number][i].payload
|
||||
else
|
||||
-- missing this part, have to break until we have it
|
||||
message_complete = false
|
||||
end
|
||||
|
||||
i = i + 1
|
||||
end
|
||||
|
||||
if message_complete then
|
||||
debug("Message " .. message_number .. " is " .. finalMessage:len())
|
||||
payload_to_dissect = ByteArray.tvb(finalMessage, message_number)
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
payload_to_dissect = buf(i):tvb()
|
||||
end
|
||||
|
||||
if payload_to_dissect ~= nil then
|
||||
|
|
Loading…
Reference in a new issue