Comment: | Adjust to ObjFW changes |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
2faf18cba740568fdb3ecd3cc4bb6fdf |
User & Date: | js on 2017-05-13 15:03:44 |
Other Links: | manifest | tags |
2017-07-23
| ||
11:19 | Adjust to ObjFW changes & small fixes check-in: efaee4fc4c user: js tags: trunk | |
2017-05-13
| ||
15:03 | Adjust to ObjFW changes check-in: 2faf18cba7 user: js tags: trunk | |
2017-04-30
| ||
15:04 | Fix URL in copyright header check-in: 4663b00cb4 user: js tags: trunk | |
Modified src/XMPPAuthenticator.h from [32835f9423] to [d2168a1fd5].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> /** * \brief A base class for classes implementing authentication mechanisms */ @interface XMPPAuthenticator: OFObject { OFString *_authzid, *_authcid, *_password; } /// \brief The authzid to get authorization for | > > | | | | | | | | | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN /** * \brief A base class for classes implementing authentication mechanisms */ @interface XMPPAuthenticator: OFObject { OFString *_authzid, *_authcid, *_password; } /// \brief The authzid to get authorization for @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *authzid; /// \brief The authcid to authenticate with @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *authcid; /// \brief The password to authenticate with @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *password; /** * \brief Initializes an already allocated XMPPAuthenticator with an authcid * and password. * * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \return A initialized XMPPAuthenticator */ - initWithAuthcid: (nullable OFString *)authcid password: (nullable OFString *)password; /** * \brief Initializes an already allocated XMPPSCRAMAuthenticator with an * authzid, authcid and password. * * \param authzid The authzid to get authorization for * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \return A initialized XMPPAuthenticator */ - initWithAuthzid: (nullable OFString *)authzid authcid: (nullable OFString *)authcid password: (nullable OFString *)password OF_DESIGNATED_INITIALIZER; /** * \brief Returns an OFDataArray containing the initial authentication message. * * \return An OFDataAray containing the initial authentication message */ - (OFDataArray*)initialMessage; /** * \brief Continue authentication with the specified data. * * \param data The continuation data send by the server * \return The appropriate response if the data was a challenge, nil otherwise */ - (nullable OFDataArray *)continueWithData: (OFDataArray *)data; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPAuthenticator.m from [ff883875bb] to [8f69cece0e].
whitespace changes only
Modified src/XMPPCallback.h from [48a5d16844] to [ee73746306].
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> @class XMPPConnection; @class XMPPIQ; #ifdef OF_HAVE_BLOCKS | > > | > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN @class XMPPConnection; @class XMPPIQ; #ifdef OF_HAVE_BLOCKS typedef void (^xmpp_callback_block_t)(XMPPConnection *_Nonnull, XMPPIQ *_Nonnull); #endif @interface XMPPCallback: OFObject { id _target; SEL _selector; #ifdef OF_HAVE_BLOCKS |
︙ | ︙ | |||
47 48 49 50 51 52 53 | selector: (SEL)selector; - initWithTarget: (id)target selector: (SEL)selector; - (void)runWithIQ: (XMPPIQ*)iq connection: (XMPPConnection*)connection; @end | > > | 50 51 52 53 54 55 56 57 58 | selector: (SEL)selector; - initWithTarget: (id)target selector: (SEL)selector; - (void)runWithIQ: (XMPPIQ*)iq connection: (XMPPConnection*)connection; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPCallback.m from [e144c7f667] to [7b928d9476].
︙ | ︙ | |||
26 27 28 29 30 31 32 | #import "XMPPCallback.h" @implementation XMPPCallback #ifdef OF_HAVE_BLOCKS + (instancetype)callbackWithBlock: (xmpp_callback_block_t)block { | > | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #import "XMPPCallback.h" @implementation XMPPCallback #ifdef OF_HAVE_BLOCKS + (instancetype)callbackWithBlock: (xmpp_callback_block_t)block { return [[(XMPPCallback *)[self alloc] initWithBlock: block] autorelease]; } - initWithBlock: (xmpp_callback_block_t)block { self = [super init]; @try { |
︙ | ︙ | |||
72 73 74 75 76 77 78 | #ifdef OF_HAVE_BLOCKS [_block release]; #endif [super dealloc]; } | | | | | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | #ifdef OF_HAVE_BLOCKS [_block release]; #endif [super dealloc]; } - (void)runWithIQ: (XMPPIQ *)IQ connection: (XMPPConnection*)connection { #ifdef OF_HAVE_BLOCKS if (_block != NULL) _block(connection, IQ); else #endif [_target performSelector: _selector withObject: connection withObject: IQ]; } @end |
Modified src/XMPPConnection.h from [d8b74359c0] to [423e3fef12].
︙ | ︙ | |||
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | */ #import <ObjFW/ObjFW.h> #import "XMPPCallback.h" #import "XMPPStorage.h" @class XMPPConnection; @class XMPPJID; @class XMPPIQ; @class XMPPMessage; @class XMPPPresence; @class XMPPAuthenticator; @class SSLSocket; @class XMPPMulticastDelegate; /** | > > | | < < < | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | */ #import <ObjFW/ObjFW.h> #import "XMPPCallback.h" #import "XMPPStorage.h" OF_ASSUME_NONNULL_BEGIN @class XMPPConnection; @class XMPPJID; @class XMPPIQ; @class XMPPMessage; @class XMPPPresence; @class XMPPAuthenticator; @class SSLSocket; @class XMPPMulticastDelegate; /** * \brief A protocol that should be (partially) implemented by delegates of a * @ref XMPPConnection */ @protocol XMPPConnectionDelegate @optional /** * \brief This callback is called when the connection received an element. * * \param connection The connection that received the element * \param element The element that was received */ |
︙ | ︙ | |||
156 157 158 159 160 161 162 | const char *_privateKeyPassphrase; OFString *_domain, *_domainToASCII; XMPPJID *_JID; uint16_t _port; id <XMPPStorage> _dataStorage; OFString *_language; XMPPMulticastDelegate *_delegates; | | | | | | | | | | | | | | 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 | const char *_privateKeyPassphrase; OFString *_domain, *_domainToASCII; XMPPJID *_JID; uint16_t _port; id <XMPPStorage> _dataStorage; OFString *_language; XMPPMulticastDelegate *_delegates; OFMutableDictionary OF_GENERIC(OFString *, XMPPCallback *) *_callbacks; XMPPAuthenticator *_authModule; bool _streamOpen; bool _needsSession; bool _encryptionRequired, _encrypted; bool _supportsRosterVersioning; bool _supportsStreamManagement; unsigned int _lastID; } /// \brief The username to use for authentication @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *username; /// \brief The password to use for authentication @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *password; /** * \brief The server to use for the connection * * This is useful if the address of the server is different from the domain. */ @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *server; /// \brief The domain to connect to @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *domain; /// \brief The resource to request for the connection @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *resource; /// \brief The language to request for the connection @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *language; /// \brief A private key file to use for authentication @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *privateKeyFile; /// \brief A certificate file to use for authentication @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *certificateFile; /// \brief The JID the server assigned to the connection after binding @property (readonly, nonatomic) XMPPJID *JID; /// \brief The port to connect to @property uint16_t port; /// \brief An object for data storage, conforming to the XMPPStorage protocol @property OF_NULLABLE_PROPERTY (assign) id <XMPPStorage> dataStorage; /// \brief The socket used for the connection @property (readonly, nonatomic) OFTCPSocket *socket; /// \brief Whether encryption is required @property bool encryptionRequired; /// \brief Whether the connection is encrypted @property (readonly) bool encrypted; /// \brief Whether roster versioning is supported @property (readonly) bool supportsRosterVersioning; /// \brief Whether stream management is supported |
︙ | ︙ | |||
243 244 245 246 247 248 249 | * pointer to the reason why the certificate is not valid * * \param reason A pointer to an OFString which is set to a reason in case the * certificate is not valid (otherwise, it does not touch it). * Passing NULL means the reason is not stored anywhere. * \return Whether the certificate is valid */ | | > | 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | * pointer to the reason why the certificate is not valid * * \param reason A pointer to an OFString which is set to a reason in case the * certificate is not valid (otherwise, it does not touch it). * Passing NULL means the reason is not stored anywhere. * \return Whether the certificate is valid */ - (bool)checkCertificateAndGetReason: (OFString *__autoreleasing _Nonnull *_Nullable)reason; /** * \brief Adds the connection to the run loop. */ - (void)handleConnection; /** |
︙ | ︙ | |||
268 269 270 271 272 273 274 | * \param buffer The buffer to parse * \param length The length of the buffer. If length is 0, it is assumed that * the connection was closed. */ - (void)parseBuffer: (const void*)buffer length: (size_t)length; | < < < < < < < < < < < < < < < < < < < < < < < < < < < < | | 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 | * \param buffer The buffer to parse * \param length The length of the buffer. If length is 0, it is assumed that * the connection was closed. */ - (void)parseBuffer: (const void*)buffer length: (size_t)length; /** * \brief Sends an OFXMLElement, usually an XMPPStanza. * * \param element The element to send */ - (void)sendStanza: (OFXMLElement*)element; /*! * @brief Sends an XMPPIQ, registering a callback method. * * @param IQ The IQ to send * @param target The object that contains the callback method * @param selector The selector of the callback method, * must take exactly one parameter of type `XMPPIQ *` */ - (void)sendIQ: (XMPPIQ*)IQ callbackTarget: (id)target selector: (SEL)selector; #ifdef OF_HAVE_BLOCKS /*! |
︙ | ︙ | |||
332 333 334 335 336 337 338 | /** * \brief Generates a new, unique stanza ID. * * \return A new, generated, unique stanza ID. */ - (OFString*)generateStanzaID; | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < > | 304 305 306 307 308 309 310 311 312 313 | /** * \brief Generates a new, unique stanza ID. * * \return A new, generated, unique stanza ID. */ - (OFString*)generateStanzaID; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPConnection.m from [26c4d1cce6] to [e5df95b15f].
︙ | ︙ | |||
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #import "XMPPExceptions.h" #import "XMPPXMLElementBuilder.h" #import "namespaces.h" #import <ObjFW/macros.h> #define BUFFER_LENGTH 512 @interface XMPPConnection_ConnectThread: OFThread { OFThread *_sourceThread; XMPPConnection *_connection; } - initWithSourceThread: (OFThread*)sourceThread connection: (XMPPConnection*)connection; @end @implementation XMPPConnection_ConnectThread - initWithSourceThread: (OFThread*)sourceThread connection: (XMPPConnection*)connection { self = [super init]; | > > > > > > > > > > > > > > > > > > > > > > > > > > > | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | #import "XMPPExceptions.h" #import "XMPPXMLElementBuilder.h" #import "namespaces.h" #import <ObjFW/macros.h> #define BUFFER_LENGTH 512 OF_ASSUME_NONNULL_BEGIN @interface XMPPConnection () - (void)XMPP_startStream; - (void)XMPP_handleStream: (OFXMLElement *)element; - (void)XMPP_handleTLS: (OFXMLElement *)element; - (void)XMPP_handleSASL: (OFXMLElement *)element; - (void)XMPP_handleStanza: (OFXMLElement *)element; - (void)XMPP_sendAuth: (OFString *)authName; - (void)XMPP_sendResourceBind; - (void)XMPP_sendStreamError: (OFString *)condition text: (nullable OFString *)text; - (void)XMPP_handleIQ: (XMPPIQ *)IQ; - (void)XMPP_handleMessage: (XMPPMessage *)message; - (void)XMPP_handlePresence: (XMPPPresence *)presence; - (void)XMPP_handleFeatures: (OFXMLElement *)element; - (void)XMPP_handleResourceBindForConnection: (XMPPConnection *)connection IQ: (XMPPIQ *)IQ; - (void)XMPP_sendSession; - (void)XMPP_handleSessionForConnection: (XMPPConnection *)connection IQ: (XMPPIQ *)IQ; - (OFString *)XMPP_IDNAToASCII: (OFString *)domain; - (XMPPMulticastDelegate *)XMPP_delegates; @end @interface XMPPConnection_ConnectThread: OFThread { OFThread *_sourceThread; XMPPConnection *_connection; } - initWithSourceThread: (OFThread*)sourceThread connection: (XMPPConnection*)connection; @end OF_ASSUME_NONNULL_END @implementation XMPPConnection_ConnectThread - initWithSourceThread: (OFThread*)sourceThread connection: (XMPPConnection*)connection { self = [super init]; |
︙ | ︙ | |||
114 115 116 117 118 119 120 | [pool release]; return nil; } @end @implementation XMPPConnection | > > | | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | [pool release]; return nil; } @end @implementation XMPPConnection @synthesize username = _username, resource = _resource, server = _server; @synthesize domain = _domain, password = _password, language = _language; @synthesize privateKeyFile = _privateKeyFile; @synthesize certificateFile = _certificateFile, socket = _socket; @synthesize encryptionRequired = _encryptionRequired, encrypted = _encrypted; @synthesize supportsRosterVersioning = _supportsRosterVersioning; @synthesize supportsStreamManagement = _supportsStreamManagement; + (instancetype)connection { |
︙ | ︙ | |||
187 188 189 190 191 192 193 | } } else _username = nil; [old release]; } | < < < < < | 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | } } else _username = nil; [old release]; } - (void)setResource: (OFString*)resource { OFString *old = _resource; if (resource != nil) { char *res; Stringprep_rc rc; |
︙ | ︙ | |||
218 219 220 221 222 223 224 | } } else _resource = nil; [old release]; } | < < < < < < < < < < | 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 | } } else _resource = nil; [old release]; } - (void)setServer: (OFString*)server { OFString *old = _server; if (server != nil) _server = [self XMPP_IDNAToASCII: server]; else _server = nil; [old release]; } - (void)setDomain: (OFString*)domain { OFString *oldDomain = _domain; OFString *oldDomainToASCII = _domainToASCII; if (domain != nil) { char *srv; |
︙ | ︙ | |||
272 273 274 275 276 277 278 | _domainToASCII = nil; } [oldDomain release]; [oldDomainToASCII release]; } | < < < < < | 286 287 288 289 290 291 292 293 294 295 296 297 298 299 | _domainToASCII = nil; } [oldDomain release]; [oldDomainToASCII release]; } - (void)setPassword: (OFString*)password { OFString *old = _password; if (password != nil) { char *pass; Stringprep_rc rc; |
︙ | ︙ | |||
303 304 305 306 307 308 309 | } } else _password = nil; [old release]; } | < < < < < | 312 313 314 315 316 317 318 319 320 321 322 323 324 325 | } } else _password = nil; [old release]; } - (void)connect { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; XMPPSRVEntry *candidate = nil; XMPPSRVLookup *SRVLookup = nil; OFEnumerator *enumerator; |
︙ | ︙ | |||
575 576 577 578 579 580 581 | #endif - (OFString*)generateStanzaID { return [OFString stringWithFormat: @"objxmpp_%u", _lastID++]; } | | | < < < | | < | | 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 | #endif - (OFString*)generateStanzaID { return [OFString stringWithFormat: @"objxmpp_%u", _lastID++]; } - (void)parser: (OFXMLParser *)parser didStartElement: (OFString*)name prefix: (OFString*)prefix namespace: (OFString *)NS attributes: (OFArray*)attributes { if (![name isEqual: @"stream"]) { // No dedicated stream error for this, may not even be XMPP [self close]; [_socket close]; return; } if (![prefix isEqual: @"stream"]) { [self XMPP_sendStreamError: @"bad-namespace-prefix" text: nil]; return; } if (![NS isEqual: XMPP_NS_STREAM]) { [self XMPP_sendStreamError: @"invalid-namespace" text: nil]; return; } for (OFXMLAttribute *attribute in attributes) { if ([[attribute name] isEqual: @"from"] && ![[attribute stringValue] isEqual: _domain]) { [self XMPP_sendStreamError: @"invalid-from" text: nil]; return; } if ([[attribute name] isEqual: @"version"] && ![[attribute stringValue] isEqual: @"1.0"]) { [self XMPP_sendStreamError: @"unsupported-version" text: nil]; return; } } [parser setDelegate: _elementBuilder]; } - (void)elementBuilder: (OFXMLElementBuilder*)builder didBuildElement: (OFXMLElement*)element { /* Ignore whitespace elements */ if ([element name] == nil) |
︙ | ︙ | |||
1019 1020 1021 1022 1023 1024 1025 | OFEnumerator *enumerator; OFXMLElement *mech; enumerator = [[mechs children] objectEnumerator]; while ((mech = [enumerator nextObject]) != nil) [mechanisms addObject: [mech stringValue]]; | | | 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 | OFEnumerator *enumerator; OFXMLElement *mech; enumerator = [[mechs children] objectEnumerator]; while ((mech = [enumerator nextObject]) != nil) [mechanisms addObject: [mech stringValue]]; if (_privateKeyFile != nil && _certificateFile != nil && [mechanisms containsObject: @"EXTERNAL"]) { _authModule = [[XMPPEXTERNALAuth alloc] init]; [self XMPP_sendAuth: @"EXTERNAL"]; return; } if ([mechanisms containsObject: @"SCRAM-SHA-1-PLUS"]) { |
︙ | ︙ | |||
1059 1060 1061 1062 1063 1064 1065 | [self XMPP_sendAuth: @"PLAIN"]; return; } assert(0); } | | | | 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 | [self XMPP_sendAuth: @"PLAIN"]; return; } assert(0); } if (session != nil && [session elementForName: @"optional" namespace: XMPP_NS_SESSION] == nil) _needsSession = true; if (bind != nil) { [self XMPP_sendResourceBind]; return; } |
︙ | ︙ | |||
1136 1137 1138 1139 1140 1141 1142 | stringValue: text]]; [_parser setDelegate: nil]; [self sendStanza: error]; [self close]; } - (void)XMPP_handleResourceBindForConnection: (XMPPConnection*)connection | | | < | | | | < < | > | > | | | | | 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 | stringValue: text]]; [_parser setDelegate: nil]; [self sendStanza: error]; [self close]; } - (void)XMPP_handleResourceBindForConnection: (XMPPConnection*)connection IQ: (XMPPIQ *)IQ { OFXMLElement *bindElement, *JIDElement; assert([[IQ type] isEqual: @"result"]); bindElement = [IQ elementForName: @"bind" namespace: XMPP_NS_BIND]; assert(bindElement != nil); JIDElement = [bindElement elementForName: @"jid" namespace: XMPP_NS_BIND]; _JID = [[XMPPJID alloc] initWithString: [JIDElement stringValue]]; if (_needsSession) { [self XMPP_sendSession]; return; } [_delegates broadcastSelector: @selector(connection:wasBoundToJID:) withObject: self withObject: _JID]; } - (void)XMPP_sendSession { XMPPIQ *IQ = [XMPPIQ IQWithType: @"set" ID: [self generateStanzaID]]; [IQ addChild: [OFXMLElement elementWithName: @"session" namespace: XMPP_NS_SESSION]]; [self sendIQ: IQ callbackTarget: self selector: @selector(XMPP_handleSessionForConnection:IQ:)]; } - (void)XMPP_handleSessionForConnection: (XMPPConnection*)connection IQ: (XMPPIQ *)IQ { if (![[IQ type] isEqual: @"result"]) OF_ENSURE(0); [_delegates broadcastSelector: @selector(connection:wasBoundToJID:) withObject: self withObject: _JID]; } - (OFString*)XMPP_IDNAToASCII: (OFString*)domain |
︙ | ︙ |
Added src/XMPPContact+Private.h version [19b0cc5ea8].
> > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 | #import "XMPPContact.h" OF_ASSUME_NONNULL_BEGIN @interface XMPPContact () - (void)XMPP_setRosterItem: (XMPPRosterItem *)rosterItem; - (void)XMPP_setPresence: (XMPPPresence *)presence resource: (OFString *)resource; - (void)XMPP_removePresenceForResource: (OFString *)resource; - (void)XMPP_setLockedOnJID: (nullable XMPPJID *)JID; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPContact.h from [160c8854c7] to [3375b65268].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> @class XMPPConnection; @class XMPPJID; @class XMPPRosterItem; @class XMPPMessage; @class XMPPPresence; /** * \brief A class describing a contact tracked by a XMPPContactManager */ @interface XMPPContact: OFObject { XMPPRosterItem *_rosterItem; OFMutableDictionary *_presences; XMPPJID *_lockedOnJID; } /// \brief The XMPPRosterItem corresponding to this contact | > > | | > < | < < < < | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN @class XMPPConnection; @class XMPPJID; @class XMPPRosterItem; @class XMPPMessage; @class XMPPPresence; /** * \brief A class describing a contact tracked by a XMPPContactManager */ @interface XMPPContact: OFObject { XMPPRosterItem *_rosterItem; OFMutableDictionary *_presences; XMPPJID *_lockedOnJID; } /// \brief The XMPPRosterItem corresponding to this contact @property (readonly, nonatomic) XMPPRosterItem *rosterItem; /// \brief The XMPPPresences of this contact with the resources as keys @property (readonly, nonatomic) OFDictionary *presences; /** * \brief Sends a message to the contact honoring resource locking * * \param message The message to send * \param connection The connection to use for sending the message */ - (void)sendMessage: (XMPPMessage*)message connection: (XMPPConnection*)connection; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPContact.m from [c409a8ce2b] to [f961d31c3a].
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPContact.h" #import "XMPPMessage.h" #import "XMPPConnection.h" @implementation XMPPContact @synthesize rosterItem = _rosterItem; @synthesize presences = _presences; | > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPContact.h" #import "XMPPContact+Private.h" #import "XMPPMessage.h" #import "XMPPConnection.h" @implementation XMPPContact @synthesize rosterItem = _rosterItem; @synthesize presences = _presences; |
︙ | ︙ |
Modified src/XMPPContactManager.h from [13b68822fb] to [ffd20ba38a].
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35 | */ #import <ObjFW/ObjFW.h> #import "XMPPConnection.h" #import "XMPPRoster.h" @class XMPPContact; @class XMPPContactManager; @class XMPPMulticastDelegate; @class XMPPPresence; /** * \brief A protocol that should be (partially) implemented by delegates | > > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | */ #import <ObjFW/ObjFW.h> #import "XMPPConnection.h" #import "XMPPRoster.h" OF_ASSUME_NONNULL_BEGIN @class XMPPContact; @class XMPPContactManager; @class XMPPMulticastDelegate; @class XMPPPresence; /** * \brief A protocol that should be (partially) implemented by delegates |
︙ | ︙ | |||
106 107 108 109 110 111 112 | OFMutableDictionary *_contacts; XMPPConnection *_connection; XMPPRoster *_roster; XMPPMulticastDelegate *_delegates; } /// \brief The tracked contacts, with their bare JID as key | | > | > > | 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | OFMutableDictionary *_contacts; XMPPConnection *_connection; XMPPRoster *_roster; XMPPMulticastDelegate *_delegates; } /// \brief The tracked contacts, with their bare JID as key @property (readonly, nonatomic) OFDictionary OF_GENERIC(OFString *, XMPPContact *) *contacts; /*! * @brief Initializes an already allocated XMPPContactManager. * * @param connection The connection to be used to track contacts * @param roster The roster used by the contact manager * @return An initialized XMPPContactManager */ - initWithConnection: (XMPPConnection*)connection roster: (XMPPRoster *)roster OF_DESIGNATED_INITIALIZER; - (void)sendSubscribedToJID: (XMPPJID*)subscriber; - (void)sendUnsubscribedToJID: (XMPPJID*)subscriber; /** * \brief Adds the specified delegate. * * \param delegate The delegate to add */ - (void)addDelegate: (id <XMPPContactManagerDelegate>)delegate; /** * \brief Removes the specified delegate. * * \param delegate The delegate to remove */ - (void)removeDelegate: (id <XMPPContactManagerDelegate>)delegate; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPContactManager.m from [3f134700d1] to [e40b256e89].
︙ | ︙ | |||
17 18 19 20 21 22 23 24 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPContact.h" | > | | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPContactManager.h" #import "XMPPContact.h" #import "XMPPContact+Private.h" #import "XMPPJID.h" #import "XMPPMulticastDelegate.h" #import "XMPPPresence.h" #import "XMPPRosterItem.h" @implementation XMPPContactManager @synthesize contacts = _contacts; |
︙ | ︙ |
Modified src/XMPPDiscoEntity.h from [675c041e84] to [1a213e145c].
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35 | */ #import <ObjFW/ObjFW.h> #import "XMPPConnection.h" #import "XMPPDiscoNode.h" @class XMPPJID; /** * \brief A class representing an entity responding to Service Discovery * queries */ @interface XMPPDiscoEntity: XMPPDiscoNode <XMPPConnectionDelegate> | > > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | */ #import <ObjFW/ObjFW.h> #import "XMPPConnection.h" #import "XMPPDiscoNode.h" OF_ASSUME_NONNULL_BEGIN @class XMPPJID; /** * \brief A class representing an entity responding to Service Discovery * queries */ @interface XMPPDiscoEntity: XMPPDiscoNode <XMPPConnectionDelegate> |
︙ | ︙ | |||
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | @property (readonly) OFDictionary *discoNodes; /** * The node advertised for the entity's capabilites. */ @property (readonly) OFString *capsNode; /** * \brief Creates a new autoreleased XMPPDiscoEntity with the specified * connection. * * \param connection The XMPPConnection to serve responses on. * \return A new autoreleased XMPPDiscoEntity */ + (instancetype)discoEntityWithConnection: (XMPPConnection*)connection; /** * \brief Creates a new autoreleased XMPPDiscoEntity with the specified * connection. * * \param connection The XMPPConnection to serve responses on. * \param capsNode The node advertised for the entity's capabilites * \return A new autoreleased XMPPDiscoEntity */ + (instancetype)discoEntityWithConnection: (XMPPConnection*)connection capsNode: (OFString*)capsNode; /** * \brief Initializes an already allocated XMPPDiscoEntity with the specified * connection. * * \param connection The XMPPConnection to serve responses on. * This must already be bound to a resource) * \return An initialized XMPPDiscoEntity */ - initWithConnection: (XMPPConnection*)connection; /** * \brief Initializes an already allocated XMPPDiscoEntity with the specified * connection. * * \param connection The XMPPConnection to serve responses on. * This must already be bound to a resource) * \param capsNode The node advertised for the entity's capabilites * \return An initialized XMPPDiscoEntity */ - initWithConnection: (XMPPConnection*)connection | > > > > > > > > > > > > | > > | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | @property (readonly) OFDictionary *discoNodes; /** * The node advertised for the entity's capabilites. */ @property (readonly) OFString *capsNode; + (instancetype)discoNodeWithJID: (XMPPJID *)JID node: (nullable OFString *)node OF_UNAVAILABLE; + (instancetype)discoNodeWithJID: (XMPPJID *)JID node: (nullable OFString *)node name: (nullable OFString *)name OF_UNAVAILABLE; /** * \brief Creates a new autoreleased XMPPDiscoEntity with the specified * connection. * * \param connection The XMPPConnection to serve responses on. * \return A new autoreleased XMPPDiscoEntity */ + (instancetype)discoEntityWithConnection: (XMPPConnection*)connection; /** * \brief Creates a new autoreleased XMPPDiscoEntity with the specified * connection. * * \param connection The XMPPConnection to serve responses on. * \param capsNode The node advertised for the entity's capabilites * \return A new autoreleased XMPPDiscoEntity */ + (instancetype)discoEntityWithConnection: (XMPPConnection*)connection capsNode: (OFString*)capsNode; - initWithJID: (XMPPJID *)JID node: (nullable OFString *)node OF_UNAVAILABLE; - initWithJID: (XMPPJID *)JID node: (nullable OFString *)node name: (nullable OFString *)name OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPDiscoEntity with the specified * connection. * * \param connection The XMPPConnection to serve responses on. * This must already be bound to a resource) * \return An initialized XMPPDiscoEntity */ - initWithConnection: (XMPPConnection*)connection; /** * \brief Initializes an already allocated XMPPDiscoEntity with the specified * connection. * * \param connection The XMPPConnection to serve responses on. * This must already be bound to a resource) * \param capsNode The node advertised for the entity's capabilites * \return An initialized XMPPDiscoEntity */ - initWithConnection: (XMPPConnection*)connection capsNode: (nullable OFString *)capsNode OF_DESIGNATED_INITIALIZER; /** * \brief Adds a XMPPDiscoNode to provide responses for. * * \param node The XMPPDiscoNode to provide responses for */ - (void)addDiscoNode: (XMPPDiscoNode*)node; /** * \brief Calculates the Entity Capabilities Hash of the entity * * \return A OFString containing the capabilities hash */ - (OFString*)capsHash; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPDiscoEntity.m from [35881ca3b2] to [f708ffe294].
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPDiscoEntity.h" #import "XMPPDiscoIdentity.h" #import "XMPPIQ.h" #import "namespaces.h" @implementation XMPPDiscoEntity @synthesize discoNodes = _discoNodes, capsNode = _capsNode; | > > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPDiscoEntity.h" #import "XMPPDiscoNode.h" #import "XMPPDiscoNode+Private.h" #import "XMPPDiscoIdentity.h" #import "XMPPIQ.h" #import "namespaces.h" @implementation XMPPDiscoEntity @synthesize discoNodes = _discoNodes, capsNode = _capsNode; |
︙ | ︙ | |||
42 43 44 45 46 47 48 49 50 51 52 53 | } - initWithConnection: (XMPPConnection*)connection { return [self initWithConnection: connection capsNode: nil]; } - initWithConnection: (XMPPConnection*)connection capsNode: (OFString*)capsNode { self = [super initWithJID: [connection JID] | > > > > > > > | > | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | } - initWithConnection: (XMPPConnection*)connection { return [self initWithConnection: connection capsNode: nil]; } - initWithJID: (XMPPJID *)JID node: (nullable OFString *)node name: (nullable OFString *)name { OF_INVALID_INIT_METHOD } - initWithConnection: (XMPPConnection*)connection capsNode: (OFString*)capsNode { self = [super initWithJID: [connection JID] node: nil name: nil]; @try { _discoNodes = [[OFMutableDictionary alloc] init]; _connection = connection; _capsNode = [capsNode copy]; [_connection addDelegate: self]; |
︙ | ︙ |
Modified src/XMPPDiscoIdentity.h from [574d3c2fee] to [969a73bffe].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> /** * \brief A class describing a Service Discovery Identity */ @interface XMPPDiscoIdentity: OFObject <OFComparing> { OFString *_category, *_name, *_type; } /// \brief The category of the identity | > > | | | | > > | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN /** * \brief A class describing a Service Discovery Identity */ @interface XMPPDiscoIdentity: OFObject <OFComparing> { OFString *_category, *_name, *_type; } /// \brief The category of the identity @property (readonly, nonatomic) OFString *category; /// \brief The name of the identity, might be unset @property (readonly, nonatomic) OFString *name; /// \brief The type of the identity @property (readonly, nonatomic) OFString *type; /** * \brief Creates a new autoreleased XMPPDiscoIdentity with the specified * category, type and name. * * \param category The category of the identity * \param type The type of the identity * \param name The name of the identity * \return A new autoreleased XMPPDiscoIdentity */ + (instancetype)identityWithCategory: (OFString*)category type: (OFString*)type name: (nullable OFString *)name; /** * \brief Creates a new autoreleased XMPPDiscoIdentity with the specified * category and type. * * \param category The category of the identity * \param type The type of the identity * \return A new autoreleased XMPPDiscoIdentity */ + (instancetype)identityWithCategory: (OFString*)category type: (OFString*)type; - init OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPDiscoIdentity with the specified * category, type and name. * * \param category The category of the identity * \param type The type of the identity * \param name The name of the identity * \return An initialized XMPPDiscoIdentity */ - initWithCategory: (OFString*)category type: (OFString*)type name: (nullable OFString *)name OF_DESIGNATED_INITIALIZER; /** * \brief Initializes an already allocated XMPPDiscoIdentity with the specified * category and type. * * \param category The category of the identity * \param type The type of the identity * \return An initialized XMPPDiscoIdentity */ - initWithCategory: (OFString*)category type: (OFString*)type; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPDiscoIdentity.m from [95bd037e63] to [52a90e08e0].
︙ | ︙ | |||
69 70 71 72 73 74 75 | return [self initWithCategory: category type: type name: nil]; } - init { | < < < < < < | < | 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | return [self initWithCategory: category type: type name: nil]; } - init { OF_INVALID_INIT_METHOD } - (void)dealloc { [_category release]; [_name release]; [_type release]; |
︙ | ︙ |
Added src/XMPPDiscoNode+Private.h version [e20421d02a].
> > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #import "XMPPDiscoNode.h" OF_ASSUME_NONNULL_BEGIN @class XMPPConnection; @class XMPPIQ; @interface XMPPDiscoNode () - (bool)XMPP_handleItemsIQ: (XMPPIQ *)IQ connection: (XMPPConnection *)connection; - (bool)XMPP_handleInfoIQ: (XMPPIQ *)IQ connection: (XMPPConnection *)connection; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPDiscoNode.h from [fa28e0da2b] to [04990bb259].
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> @class XMPPDiscoIdentity; @class XMPPJID; /** * \brief A class describing a Service Discovery Node */ @interface XMPPDiscoNode: OFObject { XMPPJID *_JID; OFString *_node; OFString *_name; OFSortedList *_identities; OFSortedList *_features; OFMutableDictionary *_childNodes; } /// \brief The JID this node lives on | > > | | | | | | | | | | | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN @class XMPPDiscoIdentity; @class XMPPJID; /** * \brief A class describing a Service Discovery Node */ @interface XMPPDiscoNode: OFObject { XMPPJID *_JID; OFString *_node; OFString *_name; OFSortedList *_identities; OFSortedList *_features; OFMutableDictionary *_childNodes; } /// \brief The JID this node lives on @property (readonly, nonatomic) XMPPJID *JID; /// \brief The node's opaque name of the node @property (readonly, nonatomic) OFString *node; /// \brief The node's human friendly name (may be unspecified) @property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *name; /// \brief The node's list of identities @property (readonly, nonatomic) OFSortedList *identities; /// \brief The node's list of features @property (readonly, nonatomic) OFSortedList *features; /// \brief The node's children @property (readonly, nonatomic) OFDictionary *childNodes; /** * \brief Creates a new autoreleased XMPPDiscoNode with the specified * JID and node * * \param JID The JID this node lives on * \param node The node's opaque name * \return A new autoreleased XMPPDiscoNode */ + (instancetype)discoNodeWithJID: (XMPPJID*)JID node: (nullable OFString *)node; /** * \brief Creates a new autoreleased XMPPDiscoNode with the specified * JID, node and name * * \param JID The JID this node lives on * \param node The node's opaque name * \param name The node's human friendly name * \return A new autoreleased XMPPDiscoNode */ + (instancetype)discoNodeWithJID: (XMPPJID*)JID node: (nullable OFString *)node name: (nullable OFString *)name; /** * \brief Initializes an already allocated XMPPDiscoNode with the specified * JID and node * * \param JID The JID this node lives on * \param node The node's opaque name * \return An initialized XMPPDiscoNode */ - initWithJID: (XMPPJID*)JID node: (nullable OFString *)node; /** * \brief Initializes an already allocated XMPPDiscoNode with the specified * JID, node and name * * \param JID The JID this node lives on * \param node The node's opaque name * \param name The node's human friendly name * \return An initialized XMPPDiscoNode */ - initWithJID: (XMPPJID*)JID node: (nullable OFString *)node name: (nullable OFString *)name OF_DESIGNATED_INITIALIZER; /** * \brief Adds an XMPPDiscoIdentity to the node * * \param identity The XMPPDiscoIdentity to add */ - (void)addIdentity: (XMPPDiscoIdentity*)identity; |
︙ | ︙ | |||
116 117 118 119 120 121 122 123 | /** * \brief Adds a XMPPDiscoNode as child of the node * * \param node The XMPPDiscoNode to add as child */ - (void)addChildNode: (XMPPDiscoNode*)node; | > < | < < < | 118 119 120 121 122 123 124 125 126 127 | /** * \brief Adds a XMPPDiscoNode as child of the node * * \param node The XMPPDiscoNode to add as child */ - (void)addChildNode: (XMPPDiscoNode*)node; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPDiscoNode.m from [adea212c4a] to [07959d2558].
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 27 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPConnection.h" #import "XMPPIQ.h" #import "XMPPJID.h" #import "XMPPDiscoEntity.h" | > > < | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPDiscoNode.h" #import "XMPPDiscoNode+Private.h" #import "XMPPConnection.h" #import "XMPPIQ.h" #import "XMPPJID.h" #import "XMPPDiscoEntity.h" #import "XMPPDiscoIdentity.h" #import "namespaces.h" @implementation XMPPDiscoNode @synthesize JID = _JID, node = _node, name = _name, identities = _identities; @synthesize features = _features, childNodes = _childNodes; |
︙ | ︙ | |||
93 94 95 96 97 98 99 100 101 102 103 104 105 106 | [_name release]; [_identities release]; [_features release]; [_childNodes release]; [super dealloc]; } - (void)addIdentity: (XMPPDiscoIdentity*)identity { [_identities insertObject: identity]; } - (void)addFeature: (OFString*)feature | > > > > > | 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | [_name release]; [_identities release]; [_features release]; [_childNodes release]; [super dealloc]; } - (OFDictionary *)childNodes { return [[_childNodes copy] autorelease]; } - (void)addIdentity: (XMPPDiscoIdentity*)identity { [_identities insertObject: identity]; } - (void)addFeature: (OFString*)feature |
︙ | ︙ |
Modified src/XMPPEXTERNALAuth.h from [87300c70b8] to [0051e84d45].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> #import "XMPPAuthenticator.h" /** * \brief A class to authenticate using SASL EXTERNAL */ @interface XMPPEXTERNALAuth: XMPPAuthenticator /** * \brief Creates a new autoreleased XMPPEXTERNALAuth. * * \return A new autoreleased XMPPEXTERNALAuth */ + (instancetype)EXTERNALAuth; /** * \brief Creates a new autoreleased XMPPEXTERNALAuth with an authzid. * * \param authzid The authzid to get authorization for * \return A new autoreleased XMPPEXTERNALAuth */ | > > | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> #import "XMPPAuthenticator.h" OF_ASSUME_NONNULL_BEGIN /** * \brief A class to authenticate using SASL EXTERNAL */ @interface XMPPEXTERNALAuth: XMPPAuthenticator /** * \brief Creates a new autoreleased XMPPEXTERNALAuth. * * \return A new autoreleased XMPPEXTERNALAuth */ + (instancetype)EXTERNALAuth; /** * \brief Creates a new autoreleased XMPPEXTERNALAuth with an authzid. * * \param authzid The authzid to get authorization for * \return A new autoreleased XMPPEXTERNALAuth */ + (instancetype)EXTERNALAuthWithAuthzid: (nullable OFString *)authzid; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPEXTERNALAuth.m from [4c3013d555] to [c6103d3079].
whitespace changes only
Modified src/XMPPExceptions.h from [69b290104a] to [679b6851a0].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> @class XMPPConnection; @class XMPPAuthenticator; /** * \brief A base class for XMPP related exceptions */ @interface XMPPException: OFException { XMPPConnection *_connection; } /// \brief The connection the exception relates to | > > | | > > | > | | | > > | | | | | > > | | | | | > > | | | > > | | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN @class XMPPConnection; @class XMPPAuthenticator; /** * \brief A base class for XMPP related exceptions */ @interface XMPPException: OFException { XMPPConnection *_connection; } /// \brief The connection the exception relates to @property OF_NULLABLE_PROPERTY (readonly, nonatomic) XMPPConnection *connection; /** * \brief Creates a new XMPPException. * * \param connection The connection that received the data responsible * for this exception * \return A new XMPPException */ + (instancetype)exceptionWithConnection: (nullable XMPPConnection *)connection; - init OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPException. * * \param connection The connection that received the data responsible * for this exception * \return An initialized XMPPException */ - initWithConnection: (nullable XMPPConnection *)connection OF_DESIGNATED_INITIALIZER; @end /** * \brief An exception indicating a stream error was received */ @interface XMPPStreamErrorException: XMPPException { OFString *_condition, *_reason; } /// \brief The defined error condition specified by the stream error @property (readonly, nonatomic) OFString *condition; /// \brief The descriptive free-form text specified by the stream error @property (readonly, nonatomic) OFString *reason; /** * \brief Creates a new XMPPStreamErrorException. * * \param connection The connection that received the stream error * \param condition The defined error condition specified by the stream error * \param reason The descriptive free-form text specified by the stream error * \return A new XMPPStreamErrorException */ + (instancetype)exceptionWithConnection: (nullable XMPPConnection *)connection condition: (OFString*)condition reason: (OFString*)reason; - initWithConnection: (nullable XMPPConnection *)connection OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPStreamErrorException. * * \param connection The connection that received the stream error * \param condition The defined error condition specified by the stream error * \param reason The descriptive free-form text specified by the stream error * \return An initialized XMPPStreamErrorException */ - initWithConnection: (nullable XMPPConnection *)connection condition: (OFString*)condition reason: (OFString *)reason OF_DESIGNATED_INITIALIZER; @end /** * \brief An exception indicating a stringprep profile * did not apply to a string */ @interface XMPPStringPrepFailedException: XMPPException { OFString *_profile, *_string; } /// \brief The name of the stringprep profile that did not apply @property (readonly, nonatomic) OFString *profile; /// \brief The string that failed the stringprep profile @property (readonly, nonatomic) OFString *string; /** * \brief Creates a new XMPPStringPrepFailedException. * * \param connection The connection the string relates to * \param profile The name of the stringprep profile that did not apply * \param string The string that failed the stringprep profile * \return A new XMPPStringPrepFailedException */ + (instancetype)exceptionWithConnection: (nullable XMPPConnection *)connection profile: (OFString*)profile string: (OFString*)string; - initWithConnection: (nullable XMPPConnection *)connection OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPStringPrepFailedException. * * \param connection The connection the string relates to * \param profile The name of the stringprep profile that did not apply * \param string The string that failed the stringprep profile * \return An initialized XMPPStringPrepFailedException */ - initWithConnection: (nullable XMPPConnection *)connection profile: (OFString*)profile string: (OFString *)string OF_DESIGNATED_INITIALIZER; @end /** * \brief An exception indicating IDNA translation of a string failed */ @interface XMPPIDNATranslationFailedException: XMPPException { OFString *_operation, *_string; } /// \brief The IDNA translation operation which failed @property (readonly, nonatomic) OFString *operation; /// \brief The string that could not be translated @property (readonly, nonatomic) OFString *string; /** * \brief Creates a new XMPPIDNATranslationFailedException. * * \param connection The connection the string relates to * \param operation The name of the stringprep profile that did not apply * \param string The string that could not be translated * \return A new XMPPIDNATranslationFailedException */ + (instancetype)exceptionWithConnection: (nullable XMPPConnection *)connection operation: (OFString*)operation string: (OFString*)string; - initWithConnection: (nullable XMPPConnection *)connection OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPIDNATranslationFailedException. * * \param connection The connection the string relates to * \param operation The name of the stringprep profile that did not apply * \param string The string that could not be translated * \return An initialized XMPPIDNATranslationFailedException */ - initWithConnection: (nullable XMPPConnection *)connection operation: (OFString*)operation string: (OFString*)string; @end /** * \brief An exception indicating authentication failed */ @interface XMPPAuthFailedException: XMPPException { OFString *_reason; } /// \brief The reason the authentication failed @property (readonly, nonatomic) OFString *reason; /** * \brief Creates a new XMPPAuthFailedException. * * \param connection The connection that could not be authenticated * \param reason The reason the authentication failed * \return A new XMPPAuthFailedException */ + (instancetype)exceptionWithConnection: (nullable XMPPConnection *)connection reason: (OFString*)reason; - initWithConnection: (nullable XMPPConnection *)connection OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPAuthFailedException. * * \param connection The connection that could not be authenticated * \param reason The reason the authentication failed * \return An initialized XMPPAuthFailedException */ - initWithConnection: (nullable XMPPConnection *)connection reason: (OFString *)reason OF_DESIGNATED_INITIALIZER; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPExceptions.m from [d64ce8e761] to [b482b72e53].
whitespace changes only
Modified src/XMPPFileStorage.h from [8262bc5c51] to [7e93a8c354].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/OFObject.h> #import "XMPPStorage.h" @class OFMutableDictionary; @interface XMPPFileStorage: OFObject <XMPPStorage> { OFString *_file; OFMutableDictionary *_data; } - initWithFile: (OFString*)file; @end | > > > > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/OFObject.h> #import "XMPPStorage.h" OF_ASSUME_NONNULL_BEGIN @class OFMutableDictionary; @interface XMPPFileStorage: OFObject <XMPPStorage> { OFString *_file; OFMutableDictionary *_data; } - init OF_UNAVAILABLE; - initWithFile: (OFString*)file; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPFileStorage.m from [522ef88dbb] to [d3dafb0daf].
︙ | ︙ | |||
36 37 38 39 40 41 42 | #import <ObjFW/OFNotImplementedException.h> #import "XMPPFileStorage.h" @implementation XMPPFileStorage - init { | < < < < < < | < | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #import <ObjFW/OFNotImplementedException.h> #import "XMPPFileStorage.h" @implementation XMPPFileStorage - init { OF_INVALID_INIT_METHOD } - initWithFile: (OFString*)file { self = [super init]; @try { |
︙ | ︙ | |||
116 117 118 119 120 121 122 | forKey: [pathComponents lastObject]]; else [iter removeObjectForKey: [pathComponents lastObject]]; } - (id)XMPP_objectForPath: (OFString*)path { | < < < | | 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | forKey: [pathComponents lastObject]]; else [iter removeObjectForKey: [pathComponents lastObject]]; } - (id)XMPP_objectForPath: (OFString*)path { id object = _data; for (OFString *component in [path componentsSeparatedByString: @"."]) object = [object objectForKey: component]; return object; } - (void)setStringValue: (OFString*)string forPath: (OFString*)path |
︙ | ︙ |
Modified src/XMPPIQ.h from [15421246e4] to [e565b6e506].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPStanza.h" /** * \brief A class describing an IQ stanza. */ @interface XMPPIQ: XMPPStanza /** * \brief Creates a new XMPPIQ with the specified type and ID. * | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPStanza.h" OF_ASSUME_NONNULL_BEGIN /** * \brief A class describing an IQ stanza. */ @interface XMPPIQ: XMPPStanza /** * \brief Creates a new XMPPIQ with the specified type and ID. * |
︙ | ︙ | |||
61 62 63 64 65 66 67 | * \param type An error type as defined by RFC 6120 * \param condition An error condition as defined by RFC 6120 * \param text A descriptive text * \return A new autoreleased XMPPIQ */ - (XMPPIQ*)errorIQWithType: (OFString*)type condition: (OFString*)condition | | > > | 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | * \param type An error type as defined by RFC 6120 * \param condition An error condition as defined by RFC 6120 * \param text A descriptive text * \return A new autoreleased XMPPIQ */ - (XMPPIQ*)errorIQWithType: (OFString*)type condition: (OFString*)condition text: (nullable OFString *)text; /** * \brief Generates an error IQ for the receiving object. * * \param type An error type as defined by RFC 6120 * \param condition A defined conditions from RFC 6120 * \return A new autoreleased XMPPIQ */ - (XMPPIQ*)errorIQWithType: (OFString*)type condition: (OFString*)condition; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPIQ.m from [a625c5453d] to [4202e71e12].
whitespace changes only
Modified src/XMPPJID.h from [db8b96c7e4] to [bbf76b475f].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> /** * \brief A class for easy handling of JIDs. */ @interface XMPPJID: OFObject <OFCopying> { OFString *_node, *_domain, *_resource; } /// \brief The JID's localpart | > > | | | | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN /** * \brief A class for easy handling of JIDs. */ @interface XMPPJID: OFObject <OFCopying> { OFString *_node, *_domain, *_resource; } /// \brief The JID's localpart @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *node; /// \brief The JID's domainpart @property (nonatomic, copy) OFString *domain; /// \brief The JID's resourcepart @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *resource; /** * \brief Creates a new autoreleased XMPPJID. * * \return A new autoreleased XMPPJID */ + (instancetype)JID; |
︙ | ︙ | |||
71 72 73 74 75 76 77 | /** * \brief Returns the full JID. * * \return An OFString containing the full JID */ - (OFString*)fullJID; @end | > > | 73 74 75 76 77 78 79 80 81 | /** * \brief Returns the full JID. * * \return An OFString containing the full JID */ - (OFString*)fullJID; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPJID.m from [48ba6c2d57] to [bccd623ec3].
︙ | ︙ | |||
29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <stringprep.h> #import "XMPPJID.h" #import "XMPPExceptions.h" @implementation XMPPJID + (instancetype)JID { return [[[self alloc] init] autorelease]; } + (instancetype)JIDWithString: (OFString*)string { | > > | 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <stringprep.h> #import "XMPPJID.h" #import "XMPPExceptions.h" @implementation XMPPJID @synthesize node = _node, domain = _domain, resource = _resource; + (instancetype)JID { return [[[self alloc] init] autorelease]; } + (instancetype)JIDWithString: (OFString*)string { |
︙ | ︙ | |||
128 129 130 131 132 133 134 | } @finally { free(nodepart); } [old release]; } | < < < < < | 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | } @finally { free(nodepart); } [old release]; } - (void)setDomain: (OFString*)domain { OFString *old = _domain; char *srv; Stringprep_rc rc; if (((rc = stringprep_profile([domain UTF8String], &srv, |
︙ | ︙ | |||
156 157 158 159 160 161 162 | } @finally { free(srv); } [old release]; } | < < < < < | 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | } @finally { free(srv); } [old release]; } - (void)setResource: (OFString*)resource { OFString *old = _resource; char *res; Stringprep_rc rc; if (resource == nil) { |
︙ | ︙ | |||
190 191 192 193 194 195 196 | } @finally { free(res); } [old release]; } | < < < < < | 182 183 184 185 186 187 188 189 190 191 192 193 194 195 | } @finally { free(res); } [old release]; } - (OFString*)bareJID { if (_node != nil) return [OFString stringWithFormat: @"%@@%@", _node, _domain]; else return [OFString stringWithFormat: @"%@", _domain]; } |
︙ | ︙ |
Modified src/XMPPMessage.h from [546573fa68] to [c499d3c2dc].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPStanza.h" /** * \brief A class describing a message stanza. */ @interface XMPPMessage: XMPPStanza /** The text content of the body of the message. */ @property (copy) OFString *body; /** * \brief Creates a new autoreleased XMPPMessage. * * \return A new autoreleased XMPPMessage */ + (instancetype)message; /** * \brief Creates a new autoreleased XMPPMessage with the specified ID. * * \param ID The value for the stanza's id attribute * \return A new autoreleased XMPPMessage */ | > > | | | | | | | | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPStanza.h" OF_ASSUME_NONNULL_BEGIN /** * \brief A class describing a message stanza. */ @interface XMPPMessage: XMPPStanza /** The text content of the body of the message. */ @property (copy) OFString *body; /** * \brief Creates a new autoreleased XMPPMessage. * * \return A new autoreleased XMPPMessage */ + (instancetype)message; /** * \brief Creates a new autoreleased XMPPMessage with the specified ID. * * \param ID The value for the stanza's id attribute * \return A new autoreleased XMPPMessage */ + (instancetype)messageWithID: (nullable OFString *)ID; /** * \brief Creates a new autoreleased XMPPMessage with the specified type. * * \param type The value for the stanza's type attribute * \return A new autoreleased XMPPMessage */ + (instancetype)messageWithType: (nullable OFString *)type; /** * \brief Creates a new autoreleased XMPPMessage with the specified type and ID. * * \param type The value for the stanza's type attribute * \param ID The value for the stanza's id attribute * \return A new autoreleased XMPPMessage */ + (instancetype)messageWithType: (nullable OFString *)type ID: (nullable OFString *)ID; /** * \brief Initializes an already allocated XMPPMessage with the specified ID. * * \param ID The value for the stanza's id attribute * \return A initialized XMPPMessage */ - initWithID: (nullable OFString *)ID; /** * \brief Initializes an already allocated XMPPMessage with the specified type. * * \param type The value for the stanza's type attribute * \return A initialized XMPPMessage */ - initWithType: (nullable OFString *)type; /** * \brief Initializes an already allocated XMPPMessage with the specified type * and ID. * * \param type The value for the stanza's type attribute * \param ID The value for the stanza's id attribute * \return A initialized XMPPMessage */ - initWithType: (nullable OFString *)type ID: (nullable OFString *)ID OF_DESIGNATED_INITIALIZER; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPMessage.m from [19d004e57c] to [64ae4d9271].
whitespace changes only
Modified src/XMPPMulticastDelegate.h from [9c7e2a3fbd] to [51673325c7].
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/OFObject.h> @class OFDataArray; /** * \brief A class to provide multiple delegates in a single class */ @interface XMPPMulticastDelegate: OFObject { | > > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/OFObject.h> OF_ASSUME_NONNULL_BEGIN @class OFDataArray; /** * \brief A class to provide multiple delegates in a single class */ @interface XMPPMulticastDelegate: OFObject { |
︙ | ︙ | |||
49 50 51 52 53 54 55 | /** * \brief Broadcasts a selector with an object to all registered delegates. * * \param selector The selector to broadcast * \param object The object to broadcast */ - (bool)broadcastSelector: (SEL)selector | | | | > > | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | /** * \brief Broadcasts a selector with an object to all registered delegates. * * \param selector The selector to broadcast * \param object The object to broadcast */ - (bool)broadcastSelector: (SEL)selector withObject: (nullable id)object; /** * \brief Broadcasts a selector with two objects to all registered delegates. * * \param selector The selector to broadcast * \param object1 The first object to broadcast * \param object2 The second object to broadcast */ - (bool)broadcastSelector: (SEL)selector withObject: (nullable id)object1 withObject: (nullable id)object2; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPPLAINAuth.h from [5dfa895145] to [3c1bd83caf].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> #import "XMPPAuthenticator.h" /** * \brief A class to authenticate using SASL PLAIN */ @interface XMPPPLAINAuth: XMPPAuthenticator /** * \brief Creates a new autoreleased XMPPPLAINAuth with an authcid and password. * * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \return A new autoreleased XMPPPLAINAuth */ | > > | | | | | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> #import "XMPPAuthenticator.h" OF_ASSUME_NONNULL_BEGIN /** * \brief A class to authenticate using SASL PLAIN */ @interface XMPPPLAINAuth: XMPPAuthenticator /** * \brief Creates a new autoreleased XMPPPLAINAuth with an authcid and password. * * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \return A new autoreleased XMPPPLAINAuth */ + (instancetype)PLAINAuthWithAuthcid: (nullable OFString *)authcid password: (nullable OFString *)password; /** * \brief Creates a new autoreleased XMPPPLAINAuth with an authzid, authcid and * password. * * \param authzid The authzid to get authorization for * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \return A new autoreleased XMPPPLAINAuth */ + (instancetype)PLAINAuthWithAuthzid: (nullable OFString *)authzid authcid: (nullable OFString *)authcid password: (nullable OFString *)password; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPPLAINAuth.m from [9d4992173d] to [9f0783c62c].
whitespace changes only
Modified src/XMPPPresence.h from [3d03c9db92] to [0497c404f5].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPStanza.h" /** * \brief A class describing a presence stanza. */ @interface XMPPPresence: XMPPStanza <OFComparing> { OFString *_status, *_show; OFNumber *_priority; } /** * The text content of the status element. */ | > > > > > > > | | | | | | | | | | | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPStanza.h" OF_ASSUME_NONNULL_BEGIN /** * \brief A class describing a presence stanza. */ @interface XMPPPresence: XMPPStanza <OFComparing> { OFString *_status, *_show; OFNumber *_priority; } /** * The value of the stanza's type attribute. */ @property OF_NULL_RESETTABLE_PROPERTY (nonatomic, copy) OFString *type; /** * The text content of the status element. */ @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *status; /** * The text content of the show element of the presence stanza. */ @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *show; /** * The numeric content of the priority element. */ @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFNumber *priority; /** * \brief Creates a new autoreleased XMPPPresence. * * \return A new autoreleased XMPPPresence */ + (instancetype)presence; /** * \brief Creates a new autoreleased XMPPPresence with the specified ID. * * \param ID The value for the stanza's id attribute * \return A new autoreleased XMPPPresence */ + (instancetype)presenceWithID: (nullable OFString *)ID; /** * \brief Creates a new autoreleased XMPPPresence with the specified type. * * \param type The value for the stanza's type attribute * \return A new autoreleased XMPPPresence */ + (instancetype)presenceWithType: (nullable OFString *)type; /** * \brief Creates a new autoreleased XMPPPresence with the specified type and * ID. * * \param type The value for the stanza's type attribute * \param ID The value for the stanza's id attribute * \return A new autoreleased XMPPPresence */ + (instancetype)presenceWithType: (nullable OFString *)type ID: (nullable OFString *)ID; /** * \brief Initializes an already allocated XMPPPresence with the specified ID. * * \param ID The value for the stanza's id attribute * \return A initialized XMPPPresence */ - initWithID: (nullable OFString *)ID; /** * \brief Initializes an already allocated XMPPPresence with the specified type. * * \param type The value for the stanza's type attribute * \return A initialized XMPPPresence */ - initWithType: (nullable OFString *)type; /** * \brief Initializes an already allocated XMPPPresence with the specified type * and ID. * * \param type The value for the stanza's type attribute * \param ID The value for the stanza's id attribute * \return A initialized XMPPPresence */ - initWithType: (nullable OFString *)type ID: (nullable OFString *)ID; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPPresence.m from [5c903aded4] to [defd4ee1a6].
︙ | ︙ | |||
45 46 47 48 49 50 51 52 53 54 55 56 57 58 | if ([show isEqual: @"xa"]) return 4; OF_ENSURE(0); } @implementation XMPPPresence + (instancetype)presence { return [[[self alloc] init] autorelease]; } + (instancetype)presenceWithID: (OFString*)ID { | > > | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | if ([show isEqual: @"xa"]) return 4; OF_ENSURE(0); } @implementation XMPPPresence @dynamic type; + (instancetype)presence { return [[[self alloc] init] autorelease]; } + (instancetype)presenceWithID: (OFString*)ID { |
︙ | ︙ | |||
131 132 133 134 135 136 137 | [_status release]; [_show release]; [_priority release]; [super dealloc]; } | | | | | | 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | [_status release]; [_show release]; [_priority release]; [super dealloc]; } - (void)setType: (OFString *)type { if (type == nil) type = @"available"; [super setType: type]; } - (void)setShow: (OFString*)show { OFXMLElement *oldShow = [self elementForName: @"show" namespace: XMPP_NS_CLIENT]; OFString *old; |
︙ | ︙ | |||
158 159 160 161 162 163 164 | stringValue: show]]; old = _show; _show = [show copy]; [old release]; } | < < < < < < < < < < | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | stringValue: show]]; old = _show; _show = [show copy]; [old release]; } - (void)setStatus: (OFString*)status { OFXMLElement *oldStatus = [self elementForName: @"status" namespace: XMPP_NS_CLIENT]; OFString *old; if (oldStatus != nil) [self removeChild: oldStatus]; if (status != nil) [self addChild: [OFXMLElement elementWithName: @"status" namespace: XMPP_NS_CLIENT stringValue: status]]; old = _status; _status = [status copy]; [old release]; } - (void)setPriority: (OFNumber*)priority { intmax_t prio = [priority intMaxValue]; OFNumber *old; if ((prio < -128) || (prio > 127)) @throw [OFInvalidArgumentException exception]; |
︙ | ︙ | |||
212 213 214 215 216 217 218 | stringValue: priority_s]]; old = _priority; _priority = [priority copy]; [old release]; } | < < < < < | 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | stringValue: priority_s]]; old = _priority; _priority = [priority copy]; [old release]; } - (of_comparison_result_t)compare: (id <OFComparing>)object { XMPPPresence *otherPresence; OFNumber *otherPriority; OFString *otherShow; of_comparison_result_t priorityOrder; |
︙ | ︙ |
Modified src/XMPPRoster.h from [9f74b009a4] to [7a62e71bc2].
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | */ #import <ObjFW/ObjFW.h> #import "XMPPConnection.h" #import "XMPPStorage.h" @class XMPPRosterItem; @class XMPPIQ; @class XMPPRoster; @class XMPPMulticastDelegate; /** * \brief A protocol that should be (partially) implemented by delegates * of a XMPPRoster */ @protocol XMPPRosterDelegate | > > < < < | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | */ #import <ObjFW/ObjFW.h> #import "XMPPConnection.h" #import "XMPPStorage.h" OF_ASSUME_NONNULL_BEGIN @class XMPPRosterItem; @class XMPPIQ; @class XMPPRoster; @class XMPPMulticastDelegate; /** * \brief A protocol that should be (partially) implemented by delegates * of a XMPPRoster */ @protocol XMPPRosterDelegate @optional /** * \brief This callback is called after the roster was received (as a result of * calling -requestRoster). * * \param roster The roster that was received */ |
︙ | ︙ | |||
76 77 78 79 80 81 82 | @property (readonly, assign) XMPPConnection *connection; /** * \brief An object for data storage, conforming to the XMPPStorage protocol. * * Inherited from the connection if not overridden. */ | | | > > > | | | | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | @property (readonly, assign) XMPPConnection *connection; /** * \brief An object for data storage, conforming to the XMPPStorage protocol. * * Inherited from the connection if not overridden. */ @property (nonatomic, assign) id <XMPPStorage> dataStorage; /** * \brief The list of contacts as an OFDictionary with the bare JID as a string * as key. */ @property (readonly, nonatomic) OFDictionary OF_GENERIC(OFString *, XMPPRosterItem *) *rosterItems; - init OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPRoster. * * \param connection The connection roster related stanzas are send and * received over * \return An initialized XMPPRoster */ - initWithConnection: (XMPPConnection *)connection OF_DESIGNATED_INITIALIZER; /** * \brief Requests the roster from the server. */ - (void)requestRoster; /** |
︙ | ︙ | |||
132 133 134 135 136 137 138 | /** * \brief Removes the specified delegate. * * \param delegate The delegate to remove */ - (void)removeDelegate: (id <XMPPRosterDelegate>)delegate; | < < < < < < < > | 134 135 136 137 138 139 140 141 142 143 | /** * \brief Removes the specified delegate. * * \param delegate The delegate to remove */ - (void)removeDelegate: (id <XMPPRosterDelegate>)delegate; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPRoster.m from [8b7b6f027e] to [7642c78519].
︙ | ︙ | |||
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #import "XMPPRoster.h" #import "XMPPRosterItem.h" #import "XMPPConnection.h" #import "XMPPIQ.h" #import "XMPPJID.h" #import "XMPPMulticastDelegate.h" #import "namespaces.h" @implementation XMPPRoster @synthesize connection = _connection, dataStorage = _dataStorage; @synthesize rosterItems = _rosterItems; - initWithConnection: (XMPPConnection*)connection { self = [super init]; @try { _rosterItems = [[OFMutableDictionary alloc] init]; | > > > > > > > > > > > > > > > > | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #import "XMPPRoster.h" #import "XMPPRosterItem.h" #import "XMPPConnection.h" #import "XMPPIQ.h" #import "XMPPJID.h" #import "XMPPMulticastDelegate.h" #import "namespaces.h" OF_ASSUME_NONNULL_BEGIN @interface XMPPRoster () - (void)XMPP_updateRosterItem: (XMPPRosterItem *)rosterItem; - (void)XMPP_handleInitialRosterForConnection: (XMPPConnection *)connection IQ: (XMPPIQ *)IQ; - (XMPPRosterItem *)XMPP_rosterItemWithXMLElement: (OFXMLElement *)element; @end OF_ASSUME_NONNULL_END @implementation XMPPRoster @synthesize connection = _connection, dataStorage = _dataStorage; @synthesize rosterItems = _rosterItems; - init { OF_INVALID_INIT_METHOD } - initWithConnection: (XMPPConnection*)connection { self = [super init]; @try { _rosterItems = [[OFMutableDictionary alloc] init]; |
︙ | ︙ | |||
99 100 101 102 103 104 105 | [_connection sendIQ: iq callbackTarget: self selector: @selector(XMPP_handleInitialRosterForConnection: IQ:)]; } - (bool)connection: (XMPPConnection*)connection | | | | | | 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | [_connection sendIQ: iq callbackTarget: self selector: @selector(XMPP_handleInitialRosterForConnection: IQ:)]; } - (bool)connection: (XMPPConnection*)connection didReceiveIQ: (XMPPIQ *)IQ { OFXMLElement *rosterElement; OFXMLElement *element; XMPPRosterItem *rosterItem; OFString *origin; rosterElement = [IQ elementForName: @"query" namespace: XMPP_NS_ROSTER]; if (rosterElement == nil) return false; if (![[IQ type] isEqual: @"set"]) return false; // Ensure the roster push has been sent by the server origin = [[IQ from] fullJID]; if (origin != nil && ![origin isEqual: [[connection JID] bareJID]]) return false; element = [rosterElement elementForName: @"item" namespace: XMPP_NS_ROSTER]; if (element != nil) { |
︙ | ︙ | |||
142 143 144 145 146 147 148 | OFString *ver = [[rosterElement attributeForName: @"ver"] stringValue]; [_dataStorage setStringValue: ver forPath: @"roster.ver"]; [_dataStorage save]; } | | | 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | OFString *ver = [[rosterElement attributeForName: @"ver"] stringValue]; [_dataStorage setStringValue: ver forPath: @"roster.ver"]; [_dataStorage save]; } [connection sendStanza: [IQ resultIQ]]; return true; } - (void)addRosterItem: (XMPPRosterItem*)rosterItem { [self updateRosterItem: rosterItem]; |
︙ | ︙ | |||
220 221 222 223 224 225 226 | if (_rosterRequested) /* FIXME: Find a better exception! */ @throw [OFInvalidArgumentException exception]; _dataStorage = dataStorage; } | < < < < < < < < < < | 236 237 238 239 240 241 242 243 244 245 246 247 248 249 | if (_rosterRequested) /* FIXME: Find a better exception! */ @throw [OFInvalidArgumentException exception]; _dataStorage = dataStorage; } - (void)XMPP_updateRosterItem: (XMPPRosterItem*)rosterItem { if ([_connection supportsRosterVersioning]) { OFMutableDictionary *items = [[[_dataStorage dictionaryForPath: @"roster.items"] mutableCopy] autorelease]; if (items == nil) |
︙ | ︙ | |||
309 310 311 312 313 314 315 | return rosterItem; } - (void)XMPP_handleInitialRosterForConnection: (XMPPConnection*)connection IQ: (XMPPIQ*)IQ { | | < < < < | 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 | return rosterItem; } - (void)XMPP_handleInitialRosterForConnection: (XMPPConnection*)connection IQ: (XMPPIQ*)IQ { OFXMLElement *rosterElement = [IQ elementForName: @"query" namespace: XMPP_NS_ROSTER]; if ([connection supportsRosterVersioning]) { if (rosterElement == nil) { OFDictionary *items = [_dataStorage dictionaryForPath: @"roster.items"]; OFEnumerator *enumerator = [items objectEnumerator]; |
︙ | ︙ | |||
346 347 348 349 350 351 352 | forKey: [JID bareJID]]; } } else [_dataStorage setDictionary: nil forPath: @"roster.items"]; } | | < | 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 | forKey: [JID bareJID]]; } } else [_dataStorage setDictionary: nil forPath: @"roster.items"]; } for (OFXMLElement *element in [rosterElement children]) { OFAutoreleasePool *pool; XMPPRosterItem *rosterItem; if (![[element name] isEqual: @"item"] || ![[element namespace] isEqual: XMPP_NS_ROSTER]) continue; |
︙ | ︙ |
Modified src/XMPPRosterItem.h from [fbf33416fb] to [b424f574a0].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> @class XMPPJID; /** * \brief A class for representing an item in the roster. */ @interface XMPPRosterItem: OFObject { XMPPJID *_JID; OFString *_name; OFString *_subscription; OFArray *_groups; } /// \brief The JID of the roster item | > > | | | | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN @class XMPPJID; /** * \brief A class for representing an item in the roster. */ @interface XMPPRosterItem: OFObject { XMPPJID *_JID; OFString *_name; OFString *_subscription; OFArray *_groups; } /// \brief The JID of the roster item @property (nonatomic, copy) XMPPJID *JID; /// \brief The name of the roster item to show to the user @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *name; /// \brief The subscription for the roster item @property (nonatomic, copy) OFString *subscription; /// \brief An array of groups in which the roster item is @property (nonatomic, copy) OFArray OF_GENERIC(OFString *) *groups; /** * \brief Creates a new autoreleased roster item. * * \return A new autoreleased roster item. */ + (instancetype)rosterItem; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPRosterItem.m from [896b51646c] to [5e285f3028].
whitespace changes only
Modified src/XMPPSCRAMAuth.h from [caa9d18a81] to [fc2ab6d5ef].
︙ | ︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> #import "XMPPAuthenticator.h" #import "XMPPConnection.h" /** * \brief A class to authenticate using SCRAM */ @interface XMPPSCRAMAuth: XMPPAuthenticator { Class _hashType; OFString *_cNonce; | > > | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> #import "XMPPAuthenticator.h" #import "XMPPConnection.h" OF_ASSUME_NONNULL_BEGIN /** * \brief A class to authenticate using SCRAM */ @interface XMPPSCRAMAuth: XMPPAuthenticator { Class _hashType; OFString *_cNonce; |
︙ | ︙ | |||
45 46 47 48 49 50 51 | * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \param connection The connection over which authentication is done * \param hash The class to use for calulating hashes * \param plusAvailable Whether the PLUS variant was offered * \return A new autoreleased XMPPSCRAMAuth */ | | | | | | > > > > > > | | | | | | > < | < < < < < < < < < | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \param connection The connection over which authentication is done * \param hash The class to use for calulating hashes * \param plusAvailable Whether the PLUS variant was offered * \return A new autoreleased XMPPSCRAMAuth */ + (instancetype)SCRAMAuthWithAuthcid: (nullable OFString *)authcid password: (nullable OFString *)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable; /** * \brief Creates a new autoreleased XMPPSCRAMAuth with an authzid, authcid and * password. * * \param authzid The authzid to get authorization for * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \param connection The connection over which authentication is done * \param hash The class to use for calulating hashes * \param plusAvailable Whether the PLUS variant was offered * \return A new autoreleased XMPPSCRAMAuth */ + (instancetype)SCRAMAuthWithAuthzid: (nullable OFString *)authzid authcid: (nullable OFString *)authcid password: (nullable OFString *)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable; - initWithAuthcid: (nullable OFString *)authcid password: (nullable OFString *)password OF_UNAVAILABLE; - initWithAuthzid: (nullable OFString *)authzid authcid: (nullable OFString *)authcid password: (nullable OFString *)password OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPSCRAMAuth with an authcid and * password. * * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \param connection The connection over which authentication is done * \param hash The class to use for calulating hashes * \param plusAvailable Whether the PLUS variant was offered * \return A initialized XMPPSCRAMAuth */ - initWithAuthcid: (nullable OFString *)authcid password: (nullable OFString *)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable; /** * \brief Initializes an already allocated XMPPSCRAMAuth with a authzid, * authcid and password. * * \param authzid The authzid to get authorization for * \param authcid The authcid to authenticate with * \param password The password to authenticate with * \param connection The connection over which authentication is done * \param hash The class to use for calulating hashes * \param plusAvailable Whether the PLUS variant was offered * \return A initialized XMPPSCRAMAuth */ - initWithAuthzid: (nullable OFString *)authzid authcid: (nullable OFString *)authcid password: (nullable OFString *)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable OF_DESIGNATED_INITIALIZER; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPSCRAMAuth.m from [ec991072f9] to [e2f43c5d67].
︙ | ︙ | |||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #import <ObjOpenSSL/SSLSocket.h> #import "XMPPSCRAMAuth.h" #import "XMPPExceptions.h" #define HMAC_IPAD 0x36 #define HMAC_OPAD 0x5c @implementation XMPPSCRAMAuth + (instancetype)SCRAMAuthWithAuthcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable | > > > > > > > > > > > > > > > | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #import <ObjOpenSSL/SSLSocket.h> #import "XMPPSCRAMAuth.h" #import "XMPPExceptions.h" #define HMAC_IPAD 0x36 #define HMAC_OPAD 0x5c OF_ASSUME_NONNULL_BEGIN @interface XMPPSCRAMAuth () - (OFString *)XMPP_genNonce; - (const uint8_t *)XMPP_HMACWithKey: (OFDataArray *)key data: (OFDataArray *)data; - (OFDataArray *)XMPP_hiWithData: (OFDataArray *)str salt: (OFDataArray *)salt iterationCount: (intmax_t)i; - (OFDataArray *)XMPP_parseServerFirstMessage: (OFDataArray *)data; - (OFDataArray *)XMPP_parseServerFinalMessage: (OFDataArray *)data; @end OF_ASSUME_NONNULL_END @implementation XMPPSCRAMAuth + (instancetype)SCRAMAuthWithAuthcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable |
︙ | ︙ | |||
249 250 251 252 253 254 255 | @throw [OFInvalidServerReplyException exception]; // Add c=<base64(GS2Header+channelBindingData)> tmpArray = [OFDataArray dataArray]; [tmpArray addItems: [_GS2Header UTF8String] count: [_GS2Header UTF8StringLength]]; if (_plusAvailable && [_connection encrypted]) { | | > | 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 | @throw [OFInvalidServerReplyException exception]; // Add c=<base64(GS2Header+channelBindingData)> tmpArray = [OFDataArray dataArray]; [tmpArray addItems: [_GS2Header UTF8String] count: [_GS2Header UTF8StringLength]]; if (_plusAvailable && [_connection encrypted]) { OFDataArray *channelBinding = [((SSLSocket *)[_connection socket]) channelBindingDataWithType: @"tls-unique"]; [tmpArray addItems: [channelBinding items] count: [channelBinding count]]; } tmpString = [tmpArray stringByBase64Encoding]; [ret addItems: "c=" count: 2]; |
︙ | ︙ |
Modified src/XMPPSRVLookup.h from [f29224bbe8] to [c9768d0ace].
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | */ #include <netinet/in.h> #include <arpa/nameser.h> #include <resolv.h> #import <ObjFW/ObjFW.h> @interface XMPPSRVEntry: OFObject { uint16_t _priority; uint16_t _weight; uint32_t _accumulatedWeight; uint16_t _port; OFString *_target; } @property (readonly) uint16_t priority; @property (readonly) uint16_t weight; @property uint32_t accumulatedWeight; @property (readonly) uint16_t port; | > > | > | > < < < > > > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | */ #include <netinet/in.h> #include <arpa/nameser.h> #include <resolv.h> #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN @interface XMPPSRVEntry: OFObject { uint16_t _priority; uint16_t _weight; uint32_t _accumulatedWeight; uint16_t _port; OFString *_target; } @property (readonly) uint16_t priority; @property (readonly) uint16_t weight; @property uint32_t accumulatedWeight; @property (readonly) uint16_t port; @property (readonly, nonatomic) OFString *target; + (instancetype)entryWithPriority: (uint16_t)priority weight: (uint16_t)weight port: (uint16_t)port target: (OFString*)target; + (instancetype)entryWithResourceRecord: (ns_rr)resourceRecord handle: (ns_msg)handle; - init OF_UNAVAILABLE; - initWithPriority: (uint16_t)priority weight: (uint16_t)weight port: (uint16_t)port target: (OFString*)target; - initWithResourceRecord: (ns_rr)resourceRecord handle: (ns_msg)handle; @end @interface XMPPSRVLookup: OFObject <OFEnumerating> { OFString *_domain; struct __res_state _resState; OFList *_list; } @property (readonly, nonatomic) OFString *domain; + (instancetype)lookupWithDomain: (OFString*)domain; - init OF_UNAVAILABLE; - initWithDomain: (OFString*)domain; @end @interface XMPPSRVEnumerator: OFEnumerator { OFList *_list; of_list_object_t *_listIter; OFList *_subListCopy; bool _done; } - init OF_UNAVAILABLE; - initWithList: (OFList*)list; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPSRVLookup.m from [b57e70e54d] to [e13fa9dc89].
︙ | ︙ | |||
35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include <netdb.h> #include <sys/types.h> #include <openssl/rand.h> #import "XMPPSRVLookup.h" #import <ObjFW/OFLocalization.h> @implementation XMPPSRVEntry @synthesize priority = _priority, weight = _weight; @synthesize accumulatedWeight = _accumulatedWeight, port = _port; @synthesize target = _target; + (instancetype)entryWithPriority: (uint16_t)priority | > > > > > > > > > | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <netdb.h> #include <sys/types.h> #include <openssl/rand.h> #import "XMPPSRVLookup.h" #import <ObjFW/OFLocalization.h> OF_ASSUME_NONNULL_BEGIN @interface XMPPSRVLookup () - (void)XMPP_lookup; - (void)XMPP_addEntry: (XMPPSRVEntry *)item; @end OF_ASSUME_NONNULL_END @implementation XMPPSRVEntry @synthesize priority = _priority, weight = _weight; @synthesize accumulatedWeight = _accumulatedWeight, port = _port; @synthesize target = _target; + (instancetype)entryWithPriority: (uint16_t)priority |
︙ | ︙ | |||
61 62 63 64 65 66 67 | { return [[[self alloc] initWithResourceRecord: resourceRecord handle: handle] autorelease]; } - init { | < < < < < < | < | 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | { return [[[self alloc] initWithResourceRecord: resourceRecord handle: handle] autorelease]; } - init { OF_INVALID_INIT_METHOD } - initWithPriority: (uint16_t)priority weight: (uint16_t)weight port: (uint16_t)port target: (OFString*)target { |
︙ | ︙ | |||
143 144 145 146 147 148 149 150 151 152 153 154 155 156 | @implementation XMPPSRVLookup @synthesize domain = _domain; + (instancetype)lookupWithDomain: (OFString*)domain { return [[[self alloc] initWithDomain: domain] autorelease]; } - initWithDomain: (OFString*)domain { self = [super init]; @try { _list = [[OFList alloc] init]; | > > > > > | 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | @implementation XMPPSRVLookup @synthesize domain = _domain; + (instancetype)lookupWithDomain: (OFString*)domain { return [[[self alloc] initWithDomain: domain] autorelease]; } - init { OF_INVALID_INIT_METHOD } - initWithDomain: (OFString*)domain { self = [super init]; @try { _list = [[OFList alloc] init]; |
︙ | ︙ | |||
276 277 278 279 280 281 282 283 284 285 286 287 288 289 | - (OFEnumerator*)objectEnumerator { return [[[XMPPSRVEnumerator alloc] initWithList: _list] autorelease]; } @end @implementation XMPPSRVEnumerator - initWithList: (OFList*)list { self = [super init]; @try { _list = [list copy]; } @catch (id e) { | > > > > > | 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 | - (OFEnumerator*)objectEnumerator { return [[[XMPPSRVEnumerator alloc] initWithList: _list] autorelease]; } @end @implementation XMPPSRVEnumerator - init { OF_INVALID_INIT_METHOD } - initWithList: (OFList*)list { self = [super init]; @try { _list = [list copy]; } @catch (id e) { |
︙ | ︙ |
Modified src/XMPPStanza.h from [7ce6b98454] to [a0d35df9af].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> @class XMPPJID; /** * \brief A class describing an XMPP Stanza. */ @interface XMPPStanza: OFXMLElement { XMPPJID *_from, *_to; OFString *_type, *_ID, *_language; } /// \brief The value of the stanza's from attribute | > > | | | | | | | | | > > > > > > > > > > | | | | > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/ObjFW.h> OF_ASSUME_NONNULL_BEGIN @class XMPPJID; /** * \brief A class describing an XMPP Stanza. */ @interface XMPPStanza: OFXMLElement { XMPPJID *_from, *_to; OFString *_type, *_ID, *_language; } /// \brief The value of the stanza's from attribute @property OF_NULLABLE_PROPERTY (nonatomic, copy) XMPPJID *from; /// \brief The value of the stanza's to attribute @property OF_NULLABLE_PROPERTY (nonatomic, copy) XMPPJID *to; /// \brief The value of the stanza's type attribute @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *type; /// \brief The value of the stanza's id attribute @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *ID; /// \brief The stanza's xml:lang @property OF_NULLABLE_PROPERTY (nonatomic, copy) OFString *language; /** * \brief Creates a new autoreleased XMPPStanza with the specified name. * * \param name The stanza's name (one of iq, message or presence) * \return A new autoreleased XMPPStanza */ + (instancetype)stanzaWithName: (OFString*)name; /** * \brief Creates a new autoreleased XMPPStanza with the specified name and * type. * * \param name The stanza's name (one of iq, message or presence) * \param type The value for the stanza's type attribute * \return A new autoreleased XMPPStanza */ + (instancetype)stanzaWithName: (OFString*)name type: (nullable OFString *)type; /** * \brief Creates a new autoreleased XMPPStanza with the specified name and ID. * * \param name The stanza's name (one of iq, message or presence) * \param ID The value for the stanza's id attribute * \return A new autoreleased XMPPStanza */ + (instancetype)stanzaWithName: (OFString*)name ID: (nullable OFString *)ID; /** * \brief Creates a new autoreleased XMPPStanza with the specified name, type * and ID. * * \param name The stanza's name (one of iq, message or presence) * \param type The value for the stanza's type attribute * \param ID The value for the stanza's id attribute * \return A new autoreleased XMPPStanza */ + (instancetype)stanzaWithName: (OFString*)name type: (nullable OFString *)type ID: (nullable OFString *)ID; /** * \brief Creates a new autoreleased XMPPStanza from an OFXMLElement. * * \param element The element to base the XMPPStanza on * \return A new autoreleased XMPPStanza */ + (instancetype)stanzaWithElement: (OFXMLElement*)element; - initWithName: (OFString *)name stringValue: (nullable OFString *)stringValue OF_UNAVAILABLE; - initWithName: (OFString *)name namespace: (nullable OFString *)namespace OF_UNAVAILABLE; - initWithName: (OFString *)name namespace: (nullable OFString *)namespace stringValue: (nullable OFString *)stringValue OF_UNAVAILABLE; - initWithXMLString: (OFString *)string OF_UNAVAILABLE; - initWithFile: (OFString *)path OF_UNAVAILABLE; /** * \brief Initializes an already allocated XMPPStanza with the specified name. * * \param name The stanza's name (one of iq, message or presence) * \return A initialized XMPPStanza */ - initWithName: (OFString*)name; /** * \brief Initializes an already allocated XMPPStanza with the specified name * and type. * * \param name The stanza's name (one of iq, message or presence) * \param type The value for the stanza's type attribute * \return A initialized XMPPStanza */ - initWithName: (OFString*)name type: (nullable OFString *)type; /** * \brief Initializes an already allocated XMPPStanza with the specified name * and ID. * * \param name The stanza's name (one of iq, message or presence) * \param ID The value for the stanza's id attribute * \return A initialized XMPPStanza */ - initWithName: (OFString*)name ID: (nullable OFString *)ID; /** * \brief Initializes an already allocated XMPPStanza with the specified name, * type and ID. * * \param name The stanza's name (one of iq, message or presence) * \param type The value for the stanza's type attribute * \param ID The value for the stanza's id attribute * \return A initialized XMPPStanza */ - initWithName: (OFString*)name type: (nullable OFString *)type ID: (nullable OFString *)ID; /** * \brief Initializes an already allocated XMPPStanza based on a OFXMLElement. * * \param element The element to base the XMPPStanza on * \return A initialized XMPPStanza */ - initWithElement: (OFXMLElement*)element; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPStanza.m from [62c85c1076] to [26c7c49d18].
︙ | ︙ | |||
26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #endif #import "XMPPStanza.h" #import "XMPPJID.h" #import "namespaces.h" @implementation XMPPStanza + (instancetype)stanzaWithName: (OFString*)name { return [[[self alloc] initWithName: name] autorelease]; } + (instancetype)stanzaWithName: (OFString*)name type: (OFString*)type | > > > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #endif #import "XMPPStanza.h" #import "XMPPJID.h" #import "namespaces.h" @implementation XMPPStanza @synthesize from = _from, to = _to, type = _type, ID = _ID; @synthesize language = _language; + (instancetype)stanzaWithName: (OFString*)name { return [[[self alloc] initWithName: name] autorelease]; } + (instancetype)stanzaWithName: (OFString*)name type: (OFString*)type |
︙ | ︙ | |||
58 59 60 61 62 63 64 65 66 67 68 69 70 71 | ID: ID] autorelease]; } + (instancetype)stanzaWithElement: (OFXMLElement*)element { return [[[self alloc] initWithElement: element] autorelease]; } - initWithName: (OFString*)name { return [self initWithName: name type: nil ID: nil]; } | > > > > > > > > > > > > > > > > > | 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | ID: ID] autorelease]; } + (instancetype)stanzaWithElement: (OFXMLElement*)element { return [[[self alloc] initWithElement: element] autorelease]; } - initWithName: (OFString *)name namespace: (nullable OFString *)namespace stringValue: (nullable OFString *)stringValue { OF_INVALID_INIT_METHOD } - initWithXMLString: (OFString *)string { OF_INVALID_INIT_METHOD } - initWithFile: (OFString *)path { OF_INVALID_INIT_METHOD } - initWithName: (OFString*)name { return [self initWithName: name type: nil ID: nil]; } |
︙ | ︙ | |||
162 163 164 165 166 167 168 | [self removeAttributeForName: @"from"]; if (from != nil) [self addAttributeWithName: @"from" stringValue: [from fullJID]]; } | < < < < < < < < < < < < < < < < < < < < < < < < < | 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 | [self removeAttributeForName: @"from"]; if (from != nil) [self addAttributeWithName: @"from" stringValue: [from fullJID]]; } - (void)setTo: (XMPPJID*)to { XMPPJID *old = _to; _to = [to copy]; [old release]; [self removeAttributeForName: @"to"]; if (to != nil) [self addAttributeWithName: @"to" stringValue: [to fullJID]]; } - (void)setType: (OFString*)type { OFString *old = _type; _type = [type copy]; [old release]; [self removeAttributeForName: @"type"]; if (type != nil) [self addAttributeWithName: @"type" stringValue: type]; } - (void)setID: (OFString*)ID { OFString *old = _ID; _ID = [ID copy]; [old release]; [self removeAttributeForName: @"id"]; if (ID != nil) [self addAttributeWithName: @"id" stringValue: ID]; } - (void)setLanguage: (OFString*)language { OFString *old = _language; _language = [language copy]; [old release]; [self removeAttributeForName: @"lang" namespace: @"http://www.w3.org/XML/1998/namespace"]; if (language != nil) [self addAttributeWithName: @"lang" namespace: @"http://www.w3.org/XML/1998/" @"namespace" stringValue: language]; } @end |
Modified src/XMPPStorage.h from [f2a91237cc] to [1c089b9216].
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/OFObject.h> @class OFString; @class OFArray; @class OFDictionary; @protocol XMPPStorage <OFObject> - (void)save; | > > | | | | | | > > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/OFObject.h> OF_ASSUME_NONNULL_BEGIN @class OFString; @class OFArray; @class OFDictionary; @protocol XMPPStorage <OFObject> - (void)save; - (void)setStringValue: (nullable OFString *)string forPath: (OFString*)path; - (nullable OFString *)stringValueForPath: (OFString *)path; - (void)setBooleanValue: (bool)boolean forPath: (OFString*)path; - (bool)booleanValueForPath: (OFString*)path; - (void)setIntegerValue: (intmax_t)integer forPath: (OFString*)path; - (intmax_t)integerValueForPath: (OFString*)path; - (void)setArray: (nullable OFArray *)array forPath: (OFString*)path; - (nullable OFArray *)arrayForPath: (OFString *)path; - (void)setDictionary: (nullable OFDictionary *)dictionary forPath: (OFString*)path; - (nullable OFDictionary *)dictionaryForPath: (OFString *)path; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPStreamManagement.h from [dbbf14c9a5] to [eba4bbe440].
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPConnection.h" @interface XMPPStreamManagement: OFObject <XMPPConnectionDelegate> { XMPPConnection *_connection; uint32_t _receivedCount; } - initWithConnection: (XMPPConnection*)connection; @end | > > > > > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import "XMPPConnection.h" OF_ASSUME_NONNULL_BEGIN @interface XMPPStreamManagement: OFObject <XMPPConnectionDelegate> { XMPPConnection *_connection; uint32_t _receivedCount; } - init OF_UNAVAILABLE; - initWithConnection: (XMPPConnection*)connection; @end OF_ASSUME_NONNULL_END |
Modified src/XMPPStreamManagement.m from [9dc52c523a] to [57b85a948f].
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <inttypes.h> #import "XMPPStreamManagement.h" #import "namespaces.h" @implementation XMPPStreamManagement - initWithConnection: (XMPPConnection*)connection { self = [super init]; @try { _connection = connection; [_connection addDelegate: self]; | > > > > > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <inttypes.h> #import "XMPPStreamManagement.h" #import "namespaces.h" @implementation XMPPStreamManagement - init { OF_INVALID_INIT_METHOD } - initWithConnection: (XMPPConnection*)connection { self = [super init]; @try { _connection = connection; [_connection addDelegate: self]; |
︙ | ︙ |
Modified src/XMPPXMLElementBuilder.h from [e6038a457f] to [60ea5de24d].
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/OFXMLElementBuilder.h> @interface XMPPXMLElementBuilder: OFXMLElementBuilder @end | > > > > | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #import <ObjFW/OFXMLElementBuilder.h> OF_ASSUME_NONNULL_BEGIN @interface XMPPXMLElementBuilder: OFXMLElementBuilder @end OF_ASSUME_NONNULL_END |
Modified src/XMPPXMLElementBuilder.m from [c3e2053f34] to [757efe5b8a].
whitespace changes only
Modified tests/test.m from [1e6a6151cf] to [a93ba6280b].
︙ | ︙ | |||
34 35 36 37 38 39 40 | #import "XMPPMessage.h" #import "XMPPPresence.h" #import "XMPPRoster.h" #import "XMPPStreamManagement.h" #import "XMPPFileStorage.h" @interface AppDelegate: OFObject | < < | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #import "XMPPMessage.h" #import "XMPPPresence.h" #import "XMPPRoster.h" #import "XMPPStreamManagement.h" #import "XMPPFileStorage.h" @interface AppDelegate: OFObject <OFApplicationDelegate, XMPPConnectionDelegate, XMPPRosterDelegate> { XMPPConnection *conn; XMPPRoster *roster; } @end OF_APPLICATION_DELEGATE(AppDelegate) |
︙ | ︙ |