What steps will reproduce the problem?
1. Have Prosody and its HTTP server running with a SSL certificate. Have reload_modules enabled and set to reload tls and http.
2. Update the SSL certificate and key on disk with a new one.
3. Reload prosody
What is the expected output? What do you see instead?
Expected: The tls and http modules will be fully reloaded by reload_modules. The new SSL certificate will be served by the XMPP and built-in web servers.
Actual: The new certificate is served by the XMPP server however the HTTP server continues to use the old certificate.
What version of the product are you using? On what operating system?
Prosody 0.9.10 on FreeBSD 11.0.
Please provide any additional information below.
Running module:reload("http", "*") on the telnet console reloads mod_http correctly so it serves the new certificate.
Zash
on
So this happens because mod_http is a "shared module", which is both loaded globally and on individual hosts and because mod_reload_modules does not handle reloading this kind of module correctly, reloading only the host instance but not the global one. The port context belongs to the global instance, so is not reloaded.
What steps will reproduce the problem? 1. Have Prosody and its HTTP server running with a SSL certificate. Have reload_modules enabled and set to reload tls and http. 2. Update the SSL certificate and key on disk with a new one. 3. Reload prosody What is the expected output? What do you see instead? Expected: The tls and http modules will be fully reloaded by reload_modules. The new SSL certificate will be served by the XMPP and built-in web servers. Actual: The new certificate is served by the XMPP server however the HTTP server continues to use the old certificate. What version of the product are you using? On what operating system? Prosody 0.9.10 on FreeBSD 11.0. Please provide any additional information below. Running module:reload("http", "*") on the telnet console reloads mod_http correctly so it serves the new certificate.
So this happens because mod_http is a "shared module", which is both loaded globally and on individual hosts and because mod_reload_modules does not handle reloading this kind of module correctly, reloading only the host instance but not the global one. The port context belongs to the global instance, so is not reloaded.
Changes