net/server.lua
author Kim Alvefur <zash@zash.se>
Sat, 23 Mar 2024 20:48:19 +0100
changeset 13465 c673ff1075bd
parent 13457 0b48cf880e79
permissions -rw-r--r--
mod_posix: Move everything to util.startup This allows greater control over the order of events. Notably, the internal ordering between daemonization, initialization of libunbound and setup of signal handling is sensitive. libunbound starts a separate thread for processing DNS requests. If this thread is started before signal handling has been set up, it will not inherit the signal handlers and instead behave as it would have before signal handlers were set up, i.e. cause the whole process to immediately exit. libunbound is usually initialized on the first DNS request, usually triggered by an outgoing s2s connection attempt. If daemonization happens before signals have been set up, signals may not be processed at all.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2925
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
     1
-- Prosody IM
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
     2
-- Copyright (C) 2008-2010 Matthew Wild
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
     3
-- Copyright (C) 2008-2010 Waqas Hussain
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5531
diff changeset
     4
--
2925
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
     5
-- This project is MIT/X11 licensed. Please see the
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
     6
-- COPYING file in the source package for more information.
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
     7
--
2162
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
     8
13170
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
     9
local function log(level, format, ...)
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    10
	print("net.server", level, format:format(...));
9218
b087b5047f86 net.server: Throw error when loading outside Prosody or Prosody config not loaded
Matthew Wild <mwild1@gmail.com>
parents: 8714
diff changeset
    11
end
b087b5047f86 net.server: Throw error when loading outside Prosody or Prosody config not loaded
Matthew Wild <mwild1@gmail.com>
parents: 8714
diff changeset
    12
13170
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    13
local default_backend = "select";
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    14
local server_type = default_backend;
10857
0107ed6744aa net.server: Switch to epoll backend by default
Matthew Wild <mwild1@gmail.com>
parents: 9218
diff changeset
    15
13170
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    16
if (prosody and prosody.config_loaded) then
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    17
	default_backend = "epoll";
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    18
	log = require"prosody.util.logger".init("net.server");
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    19
	server_type = require"prosody.core.configmanager".get("*", "network_backend") or default_backend;
9218
b087b5047f86 net.server: Throw error when loading outside Prosody or Prosody config not loaded
Matthew Wild <mwild1@gmail.com>
parents: 8714
diff changeset
    20
13170
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    21
	if require"prosody.core.configmanager".get("*", "use_libevent") then
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    22
		server_type = "event";
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    23
	end
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    24
elseif pcall(require, "prosody.util.poll") then
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
    25
	server_type = "epoll";
6483
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    26
end
2094
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    27
6483
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    28
if server_type == "event" then
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    29
	if not pcall(require, "luaevent.core") then
11766
54530085dffe net.server: Fall back to default backend from libevent instead of always select
Kim Alvefur <zash@zash.se>
parents: 10857
diff changeset
    30
		log("error", "libevent not found, falling back to %s", default_backend);
54530085dffe net.server: Fall back to default backend from libevent instead of always select
Kim Alvefur <zash@zash.se>
parents: 10857
diff changeset
    31
		server_type = default_backend;
2162
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
    32
	end
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
    33
end
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
    34
2094
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    35
local server;
6483
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    36
local set_config;
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    37
if server_type == "event" then
12978
ba409c67353b net: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12485
diff changeset
    38
	server = require "prosody.net.server_event";
4808
07d0a3a75c8a net.server, net.timer, net.server_select: Rearrange dependencies between these three modules. server.addtimer() is no longer a public function (renamed to _addtimer) and is not available at all from server_event (compat code removed to prevent traceback) (thanks Nulani)
Matthew Wild <mwild1@gmail.com>
parents: 3461
diff changeset
    39
5385
d663483036db net.server, _select: Reorganise configuration of server_select to be more like server_event
Kim Alvefur <zash@zash.se>
parents: 5383
diff changeset
    40
	local defaults = {};
6483
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    41
	for k,v in pairs(server.cfg) do
5385
d663483036db net.server, _select: Reorganise configuration of server_select to be more like server_event
Kim Alvefur <zash@zash.se>
parents: 5383
diff changeset
    42
		defaults[k] = v;
d663483036db net.server, _select: Reorganise configuration of server_select to be more like server_event
Kim Alvefur <zash@zash.se>
parents: 5383
diff changeset
    43
	end
6483
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    44
	function set_config(settings)
7546
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    45
		local event_settings = {
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    46
			ACCEPT_DELAY = settings.accept_retry_interval;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    47
			ACCEPT_QUEUE = settings.tcp_backlog;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    48
			CLEAR_DELAY = settings.event_clear_interval;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    49
			CONNECT_TIMEOUT = settings.connect_timeout;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    50
			DEBUG = settings.debug;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    51
			HANDSHAKE_TIMEOUT = settings.ssl_handshake_timeout;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    52
			MAX_CONNECTIONS = settings.max_connections;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    53
			MAX_HANDSHAKE_ATTEMPTS = settings.max_ssl_handshake_roundtrips;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    54
			MAX_READ_LENGTH = settings.max_receive_buffer_size;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    55
			MAX_SEND_LENGTH = settings.max_send_buffer_size;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    56
			READ_TIMEOUT = settings.read_timeout;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    57
			WRITE_TIMEOUT = settings.send_timeout;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    58
		};
5198
430797a8fc81 net.server: Make server_* configurable in the config file.
Kim Alvefur <zash@zash.se>
parents: 4811
diff changeset
    59
7546
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    60
		for k,default in pairs(defaults) do
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    61
			server.cfg[k] = event_settings[k] or default;
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    62
		end
6483
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    63
	end
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    64
elseif server_type == "select" then
11768
e2650d59db2d net.server_select: Deprecate and warn about it
Kim Alvefur <zash@zash.se>
parents: 11767
diff changeset
    65
	-- TODO Remove completely.
e2650d59db2d net.server_select: Deprecate and warn about it
Kim Alvefur <zash@zash.se>
parents: 11767
diff changeset
    66
	log("warn", "select is deprecated, the new default is epoll. For more info see https://prosody.im/doc/network_backend");
12978
ba409c67353b net: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12485
diff changeset
    67
	server = require "prosody.net.server_select";
6483
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    68
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    69
	local defaults = {};
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    70
	for k,v in pairs(server.getsettings()) do
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    71
		defaults[k] = v;
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    72
	end
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
    73
	function set_config(settings)
7546
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    74
		local select_settings = {};
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    75
		for k,default in pairs(defaults) do
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    76
			select_settings[k] = settings[k] or default;
5198
430797a8fc81 net.server: Make server_* configurable in the config file.
Kim Alvefur <zash@zash.se>
parents: 4811
diff changeset
    77
		end
7546
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    78
		server.changesettings(select_settings);
23a8a26e8912 net.server: Fix whitespace
Kim Alvefur <zash@zash.se>
parents: 7102
diff changeset
    79
	end
2094
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    80
else
12978
ba409c67353b net: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12485
diff changeset
    81
	server = require("prosody.net.server_"..server_type);
7548
0941b3ab77c0 net.server: Allow arbitrary network backends to be configured
Kim Alvefur <zash@zash.se>
parents: 7547
diff changeset
    82
	set_config = server.set_config;
7549
9606a99f8617 net.server: Monkey-patch in a fallback get_backend method if missing
Kim Alvefur <zash@zash.se>
parents: 7548
diff changeset
    83
	if not server.get_backend then
9606a99f8617 net.server: Monkey-patch in a fallback get_backend method if missing
Kim Alvefur <zash@zash.se>
parents: 7548
diff changeset
    84
		function server.get_backend()
9606a99f8617 net.server: Monkey-patch in a fallback get_backend method if missing
Kim Alvefur <zash@zash.se>
parents: 7548
diff changeset
    85
			return server_type;
9606a99f8617 net.server: Monkey-patch in a fallback get_backend method if missing
Kim Alvefur <zash@zash.se>
parents: 7548
diff changeset
    86
		end
9606a99f8617 net.server: Monkey-patch in a fallback get_backend method if missing
Kim Alvefur <zash@zash.se>
parents: 7548
diff changeset
    87
	end
2094
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    88
end
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    89
6485
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
    90
-- If server.hook_signal exists, replace signal.signal()
12978
ba409c67353b net: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12485
diff changeset
    91
local has_signal, signal = pcall(require, "prosody.util.signal");
6488
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
    92
if has_signal then
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
    93
	if server.hook_signal then
6485
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
    94
		function signal.signal(signal_id, handler)
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
    95
			if type(signal_id) == "string" then
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
    96
				signal_id = signal[signal_id:upper()];
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
    97
			end
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
    98
			if type(signal_id) ~= "number" then
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
    99
				return false, "invalid-signal";
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
   100
			end
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
   101
			return server.hook_signal(signal_id, handler);
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
   102
		end
6488
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
   103
	else
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
   104
		server.hook_signal = signal.signal;
6485
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
   105
	end
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
   106
else
6488
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
   107
	if not server.hook_signal then
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
   108
		server.hook_signal = function()
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
   109
			return false, "signal hooking not supported"
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
   110
		end
4224abbf0fdd net/server: Handle lack of util.signal correctly
daurnimator <quae@daurnimator.com>
parents: 6487
diff changeset
   111
	end
6485
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
   112
end
410067cdeb2f net/server: If server.hook_signal exists, overwrite signal.signal; else make server.hook_signal == signal.signal
daurnimator <quae@daurnimator.com>
parents: 6483
diff changeset
   113
7547
fb68aad9dc4d net.server: Only update configuration if server backend supports changing settings
Kim Alvefur <zash@zash.se>
parents: 7546
diff changeset
   114
if prosody and set_config then
12978
ba409c67353b net: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12485
diff changeset
   115
	local config_get = require "prosody.core.configmanager".get;
5198
430797a8fc81 net.server: Make server_* configurable in the config file.
Kim Alvefur <zash@zash.se>
parents: 4811
diff changeset
   116
	local function load_config()
5383
143670deee3e net.server: No sections in config anymore
Kim Alvefur <zash@zash.se>
parents: 5284
diff changeset
   117
		local settings = config_get("*", "network_settings") or {};
6483
37b12475f648 net/server: Split up different backends in a nicer way. Add global config option 'server'
daurnimator <quae@daurnimator.com>
parents: 5776
diff changeset
   118
		return set_config(settings);
5198
430797a8fc81 net.server: Make server_* configurable in the config file.
Kim Alvefur <zash@zash.se>
parents: 4811
diff changeset
   119
	end
430797a8fc81 net.server: Make server_* configurable in the config file.
Kim Alvefur <zash@zash.se>
parents: 4811
diff changeset
   120
	load_config();
430797a8fc81 net.server: Make server_* configurable in the config file.
Kim Alvefur <zash@zash.se>
parents: 4811
diff changeset
   121
	prosody.events.add_handler("config-reloaded", load_config);
430797a8fc81 net.server: Make server_* configurable in the config file.
Kim Alvefur <zash@zash.se>
parents: 4811
diff changeset
   122
end
430797a8fc81 net.server: Make server_* configurable in the config file.
Kim Alvefur <zash@zash.se>
parents: 4811
diff changeset
   123
13170
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
   124
if prosody and server.tls_builder then
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
   125
	local tls_builder = server.tls_builder;
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
   126
	-- resolving the basedir here avoids util.sslconfig depending on
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
   127
	-- prosody.paths.config
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
   128
	function server.tls_builder()
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
   129
		return tls_builder(prosody.paths.config or "")
e6e76f64ebb6 net.server: Handle loading from outside Prosody (e.g. Verse)
Kim Alvefur <zash@zash.se>
parents: 12978
diff changeset
   130
	end
12485
2ee27587fec7 net: refactor sslconfig to not depend on LuaSec
Jonas Schäfer <jonas@wielicki.name>
parents: 11768
diff changeset
   131
end
2ee27587fec7 net: refactor sslconfig to not depend on LuaSec
Jonas Schäfer <jonas@wielicki.name>
parents: 11768
diff changeset
   132
12978
ba409c67353b net: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12485
diff changeset
   133
-- require "prosody.net.server" shall now forever return this,
2136
23c687039652 net.server: Add some comments to explain to waqas how it all works :)
Matthew Wild <mwild1@gmail.com>
parents: 2105
diff changeset
   134
-- ie. server_select or server_event as chosen above.
2645
625d02b2a1a0 net.server: Remove redundant commented code and some trailing whitespace
Matthew Wild <mwild1@gmail.com>
parents: 2435
diff changeset
   135
return server;