mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Backport candidate:
Fix a potential crash bug when we load many server descriptors at once and some of them make others of them obsolete. Fixes bug 458. [Bugfix on 0.1.2.x] svn:r10832
This commit is contained in:
parent
5ab3f49d93
commit
98ce45bebf
@ -49,6 +49,9 @@ Changes in version 0.2.0.3-alpha - 2007-??-??
|
|||||||
o Minor bugfixes (directory):
|
o Minor bugfixes (directory):
|
||||||
- Fix another crash bug related to extra-info caching. (Bug found by
|
- Fix another crash bug related to extra-info caching. (Bug found by
|
||||||
Peter Palfrader.) [Bugfix on 0.2.0.2-alpha]
|
Peter Palfrader.) [Bugfix on 0.2.0.2-alpha]
|
||||||
|
- Fix a potential crash bug when we load many server descriptors at
|
||||||
|
once and some of them make others of them obsolete. Fixes bug
|
||||||
|
458. [Bugfix on 0.1.2.x]
|
||||||
- Directories no longer return a "304 not modified" when they don't
|
- Directories no longer return a "304 not modified" when they don't
|
||||||
have the networkstatus the client asked for. Also fix a memory
|
have the networkstatus the client asked for. Also fix a memory
|
||||||
leak when returning 304 not modified. [Bugfixes on 0.2.0.2-alpha]
|
leak when returning 304 not modified. [Bugfixes on 0.2.0.2-alpha]
|
||||||
|
@ -3013,7 +3013,7 @@ control_event_logmsg(int severity, uint32_t domain, const char *msg)
|
|||||||
|
|
||||||
/** Called whenever we receive new router descriptors: tell any
|
/** Called whenever we receive new router descriptors: tell any
|
||||||
* interested control connections. <b>routers</b> is a list of
|
* interested control connections. <b>routers</b> is a list of
|
||||||
* DIGEST_LEN-byte identity digests.
|
* routerinfo_t's.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
control_event_descriptors_changed(smartlist_t *routers)
|
control_event_descriptors_changed(smartlist_t *routers)
|
||||||
|
@ -2337,7 +2337,10 @@ router_set_status(const char *digest, int up)
|
|||||||
/** Add <b>router</b> to the routerlist, if we don't already have it. Replace
|
/** Add <b>router</b> to the routerlist, if we don't already have it. Replace
|
||||||
* older entries (if any) with the same key. Note: Callers should not hold
|
* older entries (if any) with the same key. Note: Callers should not hold
|
||||||
* their pointers to <b>router</b> if this function fails; <b>router</b>
|
* their pointers to <b>router</b> if this function fails; <b>router</b>
|
||||||
* will either be inserted into the routerlist or freed.
|
* will either be inserted into the routerlist or freed. Similarly, even
|
||||||
|
* if this call succeeds, they should not hold their pointers to
|
||||||
|
* <b>router</b> after subsequent calls with other routerinfo's -- they
|
||||||
|
* might cause the original routerinfo to get freed.
|
||||||
*
|
*
|
||||||
* Returns >= 0 if the router was added; less than 0 if it was not.
|
* Returns >= 0 if the router was added; less than 0 if it was not.
|
||||||
*
|
*
|
||||||
@ -2863,12 +2866,12 @@ router_load_routers_from_string(const char *s, const char *eos,
|
|||||||
if (purpose != ROUTER_PURPOSE_GENERAL)
|
if (purpose != ROUTER_PURPOSE_GENERAL)
|
||||||
ri->cache_info.do_not_cache = 1;
|
ri->cache_info.do_not_cache = 1;
|
||||||
|
|
||||||
if (router_add_to_routerlist(ri, &msg, from_cache, !from_cache) >= 0)
|
if (router_add_to_routerlist(ri, &msg, from_cache, !from_cache) >= 0) {
|
||||||
smartlist_add(changed, ri);
|
smartlist_add(changed, ri);
|
||||||
});
|
|
||||||
|
|
||||||
if (smartlist_len(changed))
|
|
||||||
routerlist_descriptors_added(changed);
|
routerlist_descriptors_added(changed);
|
||||||
|
smartlist_clear(changed);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
routerlist_assert_ok(routerlist);
|
routerlist_assert_ok(routerlist);
|
||||||
router_rebuild_store(0, 0);
|
router_rebuild_store(0, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user