hs-v3: Build onion address before registering ephemeral service
With the work on #25500 (reducing CPU client usage), the HS service main loop callback is enabled as soon as the HS service map changes which happens when registering a new service. Unfortunately, for an ephemeral service, we were building the onion address *after* the registration leading to the "service->onion_address` to be an empty string. This broke the "HS_DESC CREATED" event which had no onion address in it. And also, we were logging an empty onion address for that service. Fixes #25939 Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
36a107855b
commit
66e76066e0
|
@ -0,0 +1,3 @@
|
||||||
|
o Minor bugfixes (onion services):
|
||||||
|
- Fix a bug that blocked the creation of ephemeral v3 onion services. Fixes
|
||||||
|
bug 25939; bugfix on 0.3.4.1-alpha.
|
|
@ -3062,6 +3062,12 @@ hs_service_add_ephemeral(ed25519_secret_key_t *sk, smartlist_t *ports,
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Build the onion address for logging purposes but also the control port
|
||||||
|
* uses it for the HS_DESC event. */
|
||||||
|
hs_build_address(&service->keys.identity_pk,
|
||||||
|
(uint8_t) service->config.version,
|
||||||
|
service->onion_address);
|
||||||
|
|
||||||
/* The only way the registration can fail is if the service public key
|
/* The only way the registration can fail is if the service public key
|
||||||
* already exists. */
|
* already exists. */
|
||||||
if (BUG(register_service(hs_service_map, service) < 0)) {
|
if (BUG(register_service(hs_service_map, service) < 0)) {
|
||||||
|
@ -3071,14 +3077,10 @@ hs_service_add_ephemeral(ed25519_secret_key_t *sk, smartlist_t *ports,
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Last step is to build the onion address. */
|
|
||||||
hs_build_address(&service->keys.identity_pk,
|
|
||||||
(uint8_t) service->config.version,
|
|
||||||
service->onion_address);
|
|
||||||
*address_out = tor_strdup(service->onion_address);
|
|
||||||
|
|
||||||
log_info(LD_CONFIG, "Added ephemeral v3 onion service: %s",
|
log_info(LD_CONFIG, "Added ephemeral v3 onion service: %s",
|
||||||
safe_str_client(service->onion_address));
|
safe_str_client(service->onion_address));
|
||||||
|
|
||||||
|
*address_out = tor_strdup(service->onion_address);
|
||||||
ret = RSAE_OKAY;
|
ret = RSAE_OKAY;
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue