prop224: Be more careful to not overwrite descriptors in HUP.

This commit is contained in:
George Kadianakis 2017-08-25 16:13:19 +03:00
parent 17fd2c8a51
commit 409ecbec52

View File

@ -964,7 +964,8 @@ service_descriptor_new(void)
return sdesc;
}
/* Move descriptor(s) from the src service to the dst service. */
/* Move descriptor(s) from the src service to the dst service. We do this
* during SIGHUP when we re-create our hidden services. */
static void
move_descriptors(hs_service_t *src, hs_service_t *dst)
{
@ -972,10 +973,19 @@ move_descriptors(hs_service_t *src, hs_service_t *dst)
tor_assert(dst);
if (src->desc_current) {
/* Nothing should be there, but clean it up just in case */
if (BUG(dst->desc_current)) {
service_descriptor_free(dst->desc_current);
}
dst->desc_current = src->desc_current;
src->desc_current = NULL;
}
if (src->desc_next) {
/* Nothing should be there, but clean it up just in case */
if (BUG(dst->desc_next)) {
service_descriptor_free(dst->desc_next);
}
dst->desc_next = src->desc_next;
src->desc_next = NULL;
}