MCPcopy
hub / github.com/shadowsocks/shadowsocks / parse_name

Function parse_name

shadowsocks/asyncdns.py:108–126  ·  view source on GitHub ↗
(data, offset)

Source from the content-addressed store, hash-verified

106
107
108def parse_name(data, offset):
109 p = offset
110 labels = []
111 l = common.ord(data[p])
112 while l > 0:
113 if (l & (128 + 64)) == (128 + 64):
114 # pointer
115 pointer = struct.unpack('!H', data[p:p + 2])[0]
116 pointer &= 0x3FFF
117 r = parse_name(data, pointer)
118 labels.append(r[1])
119 p += 2
120 # pointer is the end
121 return p - offset, b'.'.join(labels)
122 else:
123 labels.append(data[p + 1:p + 1 + l])
124 p += 1 + l
125 l = common.ord(data[p])
126 return p - offset + 1, b'.'.join(labels)
127
128
129# rfc1035

Callers 2

parse_ipFunction · 0.85
parse_recordFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected