Software /
code /
prosody-modules
Comparison
mod_websocket/mod_websocket.lua @ 1193:bbe278a56b0a
mod_websocket: Add consider_websocket_secure option
author | Florian Zeitz <florob@babelmonkeys.de> |
---|---|
date | Wed, 18 Sep 2013 00:57:06 +0200 |
parent | 1029:9d85aded2fb6 |
child | 1272:717a08403b26 |
comparison
equal
deleted
inserted
replaced
1192:db4085433e5f | 1193:bbe278a56b0a |
---|---|
23 | 23 |
24 local t_concat = table.concat; | 24 local t_concat = table.concat; |
25 local s_byte = string.byte; | 25 local s_byte = string.byte; |
26 local s_char= string.char; | 26 local s_char= string.char; |
27 | 27 |
28 local consider_websocket_secure = module:get_option_boolean("consider_websocket_secure"); | |
28 local cross_domain = module:get_option("cross_domain_websocket"); | 29 local cross_domain = module:get_option("cross_domain_websocket"); |
29 if cross_domain then | 30 if cross_domain then |
30 if cross_domain == true then | 31 if cross_domain == true then |
31 cross_domain = "*"; | 32 cross_domain = "*"; |
32 elseif type(cross_domain) == "table" then | 33 elseif type(cross_domain) == "table" then |
238 end | 239 end |
239 | 240 |
240 conn:setlistener(c2s_listener); | 241 conn:setlistener(c2s_listener); |
241 c2s_listener.onconnect(conn); | 242 c2s_listener.onconnect(conn); |
242 | 243 |
244 local session = sessions[conn]; | |
245 | |
246 session.secure = consider_websocket_secure or session.secure; | |
247 | |
243 local frameBuffer = ""; | 248 local frameBuffer = ""; |
244 add_filter(sessions[conn], "bytes/in", function(data) | 249 add_filter(session, "bytes/in", function(data) |
245 local cache = {}; | 250 local cache = {}; |
246 frameBuffer = frameBuffer .. data; | 251 frameBuffer = frameBuffer .. data; |
247 local frame, length = parse_frame(frameBuffer); | 252 local frame, length = parse_frame(frameBuffer); |
248 | 253 |
249 while frame do | 254 while frame do |
254 frame, length = parse_frame(frameBuffer); | 259 frame, length = parse_frame(frameBuffer); |
255 end | 260 end |
256 return t_concat(cache, ""); | 261 return t_concat(cache, ""); |
257 end); | 262 end); |
258 | 263 |
259 add_filter(sessions[conn], "bytes/out", function(data) | 264 add_filter(session, "bytes/out", function(data) |
260 return build_frame({ FIN = true, opcode = 0x01, data = tostring(data)}); | 265 return build_frame({ FIN = true, opcode = 0x01, data = tostring(data)}); |
261 end); | 266 end); |
262 | 267 |
263 response.status_code = 101; | 268 response.status_code = 101; |
264 response.headers.upgrade = "websocket"; | 269 response.headers.upgrade = "websocket"; |