From 04b9740263128f12929467d070513437d9953117 Mon Sep 17 00:00:00 2001 From: Jonathan Schleifer Date: Mon, 6 Feb 2012 15:23:26 +0100 Subject: [PATCH] Prevent changing the data storage after the roster has been requested. --- src/XMPPRoster.h | 1 + src/XMPPRoster.m | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/XMPPRoster.h b/src/XMPPRoster.h index c05e52f..310234e 100644 --- a/src/XMPPRoster.h +++ b/src/XMPPRoster.h @@ -73,6 +73,7 @@ OFMutableDictionary *rosterItems; XMPPMulticastDelegate *delegates; id dataStorage; + BOOL rosterRequested; /// \endcond } diff --git a/src/XMPPRoster.m b/src/XMPPRoster.m index 5b52719..4e76176 100644 --- a/src/XMPPRoster.m +++ b/src/XMPPRoster.m @@ -29,6 +29,8 @@ #include +#import + #import "XMPPRoster.h" #import "XMPPRosterItem.h" #import "XMPPConnection.h" @@ -74,6 +76,8 @@ { XMPPIQ *iq; + rosterRequested = YES; + iq = [XMPPIQ IQWithType: @"get" ID: [connection generateStanzaID]]; [iq addChild: [OFXMLElement elementWithName: @"query" @@ -188,7 +192,9 @@ - (void)setDataStorage: (id )dataStorage_ { - /* TODO: Prevent changing it after it has been used */ + if (rosterRequested) + @throw [OFInvalidArgumentException exceptionWithClass: isa]; + dataStorage = dataStorage_; }