Mercurial > prosody-hg
comparison core/portmanager.lua @ 11597:7e1ca18fdfb3
core.portmanager: Reload direct TLS certificates after config reload
This should re-create all contexts the same way as when the service was
activated, which reloads certificates.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 10 Jun 2021 15:30:54 +0200 |
| parents | f6f1b50cbedf |
| children | 081e550b973a |
comparison
equal
deleted
inserted
replaced
| 11596:f6f1b50cbedf | 11597:7e1ca18fdfb3 |
|---|---|
| 278 active_service.server.hosts[host] = nil; | 278 active_service.server.hosts[host] = nil; |
| 279 end | 279 end |
| 280 end | 280 end |
| 281 end); | 281 end); |
| 282 | 282 |
| 283 prosody.events.add_handler("config-reloaded", function () | |
| 284 for service_name, interface, port, _, active_service in active_services:iter(nil, nil, nil, nil) do | |
| 285 if active_service.tls_cfg then | |
| 286 local service_info = active_service.service; | |
| 287 local config_prefix = (service_info.config_prefix or service_name).."_"; | |
| 288 if config_prefix == "_" then | |
| 289 config_prefix = ""; | |
| 290 end | |
| 291 local ssl, cfg, err = get_port_ssl_ctx(port, interface, config_prefix, service_info); | |
| 292 if ssl then | |
| 293 active_service.server:set_sslctx(ssl); | |
| 294 active_service.tls_cfg = cfg; | |
| 295 else | |
| 296 log("error", "Error reloading certificate for encrypted port for %s: %s", service_info.name, | |
| 297 error_to_friendly_message(service_name, port, err) or "unknown error"); | |
| 298 end | |
| 299 end | |
| 300 end | |
| 301 -- TODO Update SNI too | |
| 302 end, -1); | |
| 303 | |
| 283 return { | 304 return { |
| 284 activate = activate; | 305 activate = activate; |
| 285 deactivate = deactivate; | 306 deactivate = deactivate; |
| 286 register_service = register_service; | 307 register_service = register_service; |
| 287 unregister_service = unregister_service; | 308 unregister_service = unregister_service; |
