MCPcopy Create free account
hub / github.com/SySS-Research/hallucinate / handle

Method handle

hallucinate/java.py:32–65  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

30 return self.read_string(), self.read_string()
31
32 def handle(self):
33 key = self.read_string()
34
35 if not compare_digest(key, self.server.key):
36 logging.warning("Client provided wrong key")
37 self.request.close()
38 return
39
40 while True:
41 r = self.read_bytes(4)
42 nentries, = struct.unpack('>I', r)
43 rdata = dict()
44 for i in range(nentries):
45 k, v = self.read_entry()
46 rdata[k] = v
47
48 # emulate conn entry, no nested array support
49 rdata['conn'] = {
50 'l': {'ip': rdata['localAddr'], 'port': int(rdata['localPort'])},
51 'r': {'ip': rdata['remoteAddr'], 'port': int(rdata['remotePort'])}
52 }
53 logging.debug('Received request from Java agent: %s', rdata)
54
55 def rhandle(data):
56 logging.debug('Sending response to Java agent: %s', data)
57 p = struct.pack('>I', len(data))
58 for k, v in data.items():
59 ke = str(k).encode('utf-8')
60 ve = str(v).encode('utf-8')
61 p += struct.pack('>H', len(ke)) + ke
62 p += struct.pack('>H', len(ve)) + ve
63 self.request.sendall(p)
64
65 self.server.handler(rdata, rhandle)
66
67
68class JavaAgentServer(socketserver.ThreadingMixIn, socketserver.TCPServer):

Callers

nothing calls this directly

Calls 4

read_stringMethod · 0.95
read_bytesMethod · 0.95
read_entryMethod · 0.95
closeMethod · 0.45

Tested by

no test coverage detected