mirror of
git://git.psyced.org/git/psyced
synced 2024-08-15 03:25:10 +00:00
assert mapping during unlink (triggered by old .o file)
This commit is contained in:
parent
9d8b68ed30
commit
1cce84def9
1 changed files with 16 additions and 2 deletions
|
@ -528,6 +528,7 @@ static linkSet(service, location, source) {
|
|||
unless (location) location = source;
|
||||
else unless (source) unless (source = location)
|
||||
raise_error("You have to provide either source or location!\n");
|
||||
ASSERT("linkSet", v("locations"), v("locations"))
|
||||
if (member(v("locations"), service)) {
|
||||
v("locations")[service] += ([ location ]);
|
||||
} else {
|
||||
|
@ -574,6 +575,17 @@ linkDel(service, source, variant) {
|
|||
string mc = "_notice_unlink";
|
||||
service = service || 0;
|
||||
|
||||
#if 0 // PARANOID ?
|
||||
unless(mappingp(v("locations"))) {
|
||||
// how the hell did i get here with a broken mapping?
|
||||
monitor_report("_warning_abuse_invalid_locations_unlink",
|
||||
S("Broken locations[] in %O (with %O from %O:%O)\n",
|
||||
ME, mc, source, service));
|
||||
vSet("locations", ([]));
|
||||
}
|
||||
#else
|
||||
ASSERT("linkDel", v("locations"), v("locations"))
|
||||
#endif
|
||||
unless (member(v("locations"), service)) {
|
||||
P4(("linkDel(%O, %O) called in %O: no such candidate!\n",
|
||||
service, source, ME));
|
||||
|
@ -593,6 +605,7 @@ linkDel(service, source, variant) {
|
|||
// maybe actual deletion would need to be delayed after
|
||||
// letting locations know. they might still be sending
|
||||
// stuff to us, right?
|
||||
if (mappingp(v("locations")[service])) // why is this check necessary?
|
||||
m_delete(v("locations")[service], candidate);
|
||||
unless (sizeof(v("locations")[service]))
|
||||
m_delete(v("locations"), service);
|
||||
|
@ -611,6 +624,7 @@ linkDel(service, source, variant) {
|
|||
static linkCleanUp(variant) {
|
||||
mixed type, loc;
|
||||
|
||||
ASSERT("linkCleanUp", v("locations"), v("locations"))
|
||||
foreach (type, loc : v("locations")) {
|
||||
P2(("linkCleanUp(%O) to %O's ex-%O-client %O\n",
|
||||
variant, ME, type, loc))
|
||||
|
@ -1866,7 +1880,7 @@ case "_request_presence":
|
|||
#if 1 // PARANOID ?
|
||||
unless(mappingp(v("locations"))) {
|
||||
// how the hell did i get here with a broken mapping?
|
||||
monitor_report("_warning_abuse_invalid_friend",
|
||||
monitor_report("_warning_abuse_invalid_locations_friend",
|
||||
S("Broken locations[] in %O (with %O from %O:%O)\n",
|
||||
ME, mc, source, profile));
|
||||
vSet("locations", ([]));
|
||||
|
|
Loading…
Reference in a new issue