Merge 0.9->0.10
authorMatthew Wild <mwild1@gmail.com>
Thu, 26 Mar 2015 16:48:39 +0000 (16:48 +0000)
committerMatthew Wild <mwild1@gmail.com>
Thu, 26 Mar 2015 16:48:39 +0000 (16:48 +0000)
1  2 
core/sessionmanager.lua
plugins/mod_http.lua
plugins/mod_s2s/mod_s2s.lua
tests/test.lua
util-src/encodings.c

index 476de931f7621efa0af6055510f72a2b7d6d704c,4b014d18cd5aea4002bbee1e67985291e709a0bb..8767e869e9d8c93b1e320b3677b934ef382b5b47
@@@ -114,19 -113,9 +114,19 @@@ en
  -- returns nil, err_type, err, err_message on failure
  function bind_resource(session, resource)
        if not session.username then return nil, "auth", "not-authorized", "Cannot bind resource before authentication"; end
-       if session.resource then return nil, "cancel", "already-bound", "Cannot bind multiple resources on a single connection"; end
+       if session.resource then return nil, "cancel", "not-allowed", "Cannot bind multiple resources on a single connection"; end
        -- We don't support binding multiple resources
  
 +      local event_payload = { session = session, resource = resource };
 +      if hosts[session.host].events.fire_event("pre-resource-bind", event_payload) == false then
 +              local err = event_payload.error;
 +              if err then return nil, err.type, err.condition, err.text; end
 +              return nil, "cancel", "not-allowed";
 +      else
 +              -- In case a plugin wants to poke at it
 +              resource = event_payload.resource;
 +      end
 +
        resource = resourceprep(resource);
        resource = resource ~= "" and resource or uuid_generate();
        --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing
index 8bda1cac2ea5703536c6ad6b3d6acf1f4d8c7828,9b574bc8eff9c45985174ff1e20c9cdd91dbdeb1..086887fbcc9a9b63ccd078c3a65804481d12a419
@@@ -118,8 -112,14 +120,14 @@@ function module.add_host(module
                                module:log("error", "Invalid route in %s, %q. See http://prosody.im/doc/developers/http#routes", app_name, key);
                        end
                end
+               local services = portmanager.get_active_services();
+               if services:get("https") or services:get("http") then
+                       module:log("debug", "Serving '%s' at %s", app_name, module:http_url(app_name, app_path));
+               else
+                       module:log("warn", "Not listening on any ports, '%s' will be unreachable", app_name);
+               end
        end
 -      
 +
        local function http_app_removed(event)
                local app_handlers = apps[event.item.name];
                apps[event.item.name] = nil;
index f9165f20288f7b21a9e3b918c9aed15fffa38c54,f5297efee9450c8b213ed9025c43482c6a65f965..a58c64213817e8d1a27adb96d8accadb5b857608
@@@ -499,6 -517,10 +499,12 @@@ function session_stream_attrs(session, 
        if not from or (hosts[from] and hosts[from].modules.dialback) then
                attr["xmlns:db"] = 'jabber:server:dialback';
        end
 -
 -      session.sends2s("<?xml version='1.0'?>");
 -      session.sends2s(st.stanza("stream:stream", attr):top_tag());
 -      return true;
++      if not from then
++              attr.from = '';
++      end
++      if not to then
++              attr.to = '';
++      end
  end
  
  -- Session initialization logic shared by incoming and outgoing
diff --cc tests/test.lua
index f7475a805d1395e9c379aa7534f9ecff15a41b89,de1e40fd8bb96166154cf78f16a6ccc08d2dac81..78f2b234e3b3b5d5c6c2c76dfbc0981210ccad2e
@@@ -17,11 -18,11 +17,12 @@@ function run_all_tests(
        dotest "core.stanza_router"
        dotest "core.s2smanager"
        dotest "core.configmanager"
 +      dotest "util.ip"
        dotest "util.stanza"
        dotest "util.sasl.scram"
 -      
 +
        dosingletest("test_sasl.lua", "latin1toutf8");
+       dosingletest("test_utf8.lua", "valid");
  end
  
  local verbosity = tonumber(arg[1]) or 2;
Simple merge