Merge with 0.5
[prosody.git] / plugins / mod_bosh.lua
index 653af8bbdbfb419a5c2d7f6fca59fcc3b5a3a3f3..744893c44a4a84688bd1020989231ddf8a6836f3 100644 (file)
@@ -1,3 +1,11 @@
+-- Prosody IM
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
+-- 
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
 
 module.host = "*" -- Global module
 
@@ -12,7 +20,8 @@ local new_uuid = require "util.uuid".generate;
 local fire_event = require "core.eventmanager".fire_event;
 local core_process_stanza = core_process_stanza;
 local st = require "util.stanza";
-local log = require "util.logger".init("bosh");
+local logger = require "util.logger";
+local log = logger.init("mod_bosh");
 local stream_callbacks = { stream_tag = "http://jabber.org/protocol/httpbind|body" };
 local config = require "core.configmanager";
 local xmlns_bosh = "http://jabber.org/protocol/httpbind"; -- (hard-coded into a literal in session.send)
@@ -137,8 +146,10 @@ function stream_callbacks.streamopened(request, attr)
                sid = new_uuid();
                local session = { type = "c2s_unauthed", conn = {}, sid = sid, rid = attr.rid, host = attr.to, bosh_version = attr.ver, bosh_wait = attr.wait, streamid = sid, 
                                                bosh_hold = BOSH_DEFAULT_HOLD, bosh_max_inactive = BOSH_DEFAULT_INACTIVITY,
-                                               requests = { }, send_buffer = {}, reset_stream = bosh_reset_stream, close = bosh_close_stream, dispatch_stanza = core_process_stanza };
+                                               requests = { }, send_buffer = {}, reset_stream = bosh_reset_stream, close = bosh_close_stream, 
+                                               dispatch_stanza = core_process_stanza, log = logger.init("bosh"..sid), secure = request.secure };
                sessions[sid] = session;
+               
                log("info", "New BOSH session, assigned it sid '%s'", sid);
                local r, send_buffer = session.requests, session.send_buffer;
                local response = { headers = default_headers }
@@ -265,16 +276,6 @@ function on_timer()
 end
 
 local ports = config.get(module.host, "core", "bosh_ports") or { 5280 };
-for _, options in ipairs(ports) do
-       local port, base, ssl, interface = 5280, "http-bind", false, nil;
-       if type(options) == "number" then
-               port = options;
-       elseif type(options) == "table" then
-               port, base, ssl, interface = options.port or 5280, options.path or "http-bind", options.ssl or false, options.interface;
-       elseif type(options) == "string" then
-               base = options;
-       end
-       httpserver.new{ port = port, base = base, handler = handle_request, ssl = ssl }
-end
+httpserver.new_from_config(ports, "http-bind", handle_request);
 
 server.addtimer(on_timer);