83 if not data then |
83 if not data then |
84 conn:close(); |
84 conn:close(); |
85 return |
85 return |
86 end |
86 end |
87 if data:sub(1,1) ~= "<" then |
87 if data:sub(1,1) ~= "<" then |
88 local chunk, err = loadstring("return "..data, "@stdin"); |
88 local sandboxed = true; |
|
89 if data:sub(1,1) == ">" then |
|
90 sandboxed = false; |
|
91 data = data:sub(2); |
|
92 else |
|
93 data = "return "..data; |
|
94 end |
|
95 local chunk, err = loadstring(data, "@stdin"); |
89 if not chunk then |
96 if not chunk then |
90 conn:error(err); |
97 conn:error(err); |
91 return; |
98 return; |
92 end |
99 end |
93 data = ""; |
100 data = ""; |
94 setfenv(chunk, env); |
101 if sandboxed then |
|
102 setfenv(chunk, env); |
|
103 end |
95 local ok, ret = pcall(chunk); |
104 local ok, ret = pcall(chunk); |
96 if ok then |
105 if ok then |
97 data = ret |
106 data = ret |
98 else |
107 else |
99 conn:error(ret); |
108 conn:error(ret); |