Comment: | Get rid of BOOL. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
dd2c1286f96b2ffcd943efa2ddbcbfd8 |
User & Date: | js on 2013-06-23 19:57:46 |
Other Links: | manifest | tags |
2013-06-23
| ||
20:13 | Prefix *all* IVars with _. check-in: cce64dfcd6 user: js tags: trunk | |
19:57 | Get rid of BOOL. check-in: dd2c1286f9 user: js tags: trunk | |
14:19 | Adjust to reworked exception API. check-in: 543fb8b84d user: js tags: trunk | |
Modified src/XMPPAuthenticator.m from [e2fbdc8bf6] to [5bc209efe7].
︙ | ︙ | |||
60 61 62 63 64 65 66 | [_password release]; [super dealloc]; } - (void)setAuthzid: (OFString*)authzid { | | | | | | | | 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 | [_password release]; [super dealloc]; } - (void)setAuthzid: (OFString*)authzid { OF_SETTER(_authzid, authzid, true, 1) } - (OFString*)authzid { OF_GETTER(_authzid, true) } - (void)setAuthcid: (OFString*)authcid { OF_SETTER(_authcid, authcid, true, 1) } - (OFString*)authcid { OF_GETTER(_authcid, true) } - (void)setPassword: (OFString*)password { OF_SETTER(_password, password, true, 1) } - (OFString*)password { OF_GETTER(_password, true) } - (OFDataArray*)initialMessage { return nil; } |
︙ | ︙ |
Modified src/XMPPConnection.h from [c4469e22bb] to [0881649e7a].
︙ | ︙ | |||
83 84 85 86 87 88 89 | /** * \brief This callback is called when the connection received an IQ stanza. * * \param connection The connection that received the stanza * \param iq The IQ stanza that was received */ | | | 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | /** * \brief This callback is called when the connection received an IQ stanza. * * \param connection The connection that received the stanza * \param iq The IQ stanza that was received */ - (bool)connection: (XMPPConnection*)connection didReceiveIQ: (XMPPIQ*)iq; /** * \brief This callback is called when the connection received a presence * stanza. * * \param connection The connection that received the stanza |
︙ | ︙ | |||
162 163 164 165 166 167 168 | XMPPJID *_JID; uint16_t _port; id <XMPPStorage> _dataStorage; OFString *_language; XMPPMulticastDelegate *_delegates; OFMutableDictionary *_callbacks; XMPPAuthenticator *_authModule; | | | | | | | 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | XMPPJID *_JID; uint16_t _port; id <XMPPStorage> _dataStorage; OFString *_language; XMPPMulticastDelegate *_delegates; OFMutableDictionary *_callbacks; XMPPAuthenticator *_authModule; bool _streamOpen; bool _needsSession; bool _encryptionRequired, _encrypted; bool _supportsRosterVersioning; bool _supportsStreamManagement; unsigned int _lastID; } #ifdef OF_HAVE_PROPERTIES /// \brief The username to use for authentication @property (copy) OFString *username; /// \brief The password to use for authentication |
︙ | ︙ | |||
200 201 202 203 204 205 206 | /// \brief The port to connect to @property uint16_t port; /// \brief An object for data storage, conforming to the XMPPStorage protocol @property (assign) id <XMPPStorage> dataStorage; /// \brief The socket used for the connection @property (readonly, retain) OFTCPSocket *socket; /// \brief Whether encryption is required | | | | | | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | /// \brief The port to connect to @property uint16_t port; /// \brief An object for data storage, conforming to the XMPPStorage protocol @property (assign) id <XMPPStorage> dataStorage; /// \brief The socket used for the connection @property (readonly, retain) 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 @property (readonly) bool supportsStreamManagement; #endif /** * \brief Creates a new autoreleased XMPPConnection. * * \return A new autoreleased XMPPConnection */ |
︙ | ︙ | |||
249 250 251 252 253 254 255 | * 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 */ | | | 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 | * 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**)reason; /** * \brief Adds the connection to the run loop. */ - (void)handleConnection; /** |
︙ | ︙ | |||
286 287 288 289 290 291 292 | - (OFTCPSocket*)socket; /** * \brief Returns whether encryption is encrypted. * * \return Whether encryption is encrypted */ | | | | | 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 | - (OFTCPSocket*)socket; /** * \brief Returns whether encryption is encrypted. * * \return Whether encryption is encrypted */ - (bool)encryptionRequired; /** * \brief Sets whether encryption is required. * * \param required Whether encryption is required */ - (void)setEncryptionRequired: (bool)required; /** * \brief Returns whether the connection is encrypted. * * \return Whether the connection is encrypted */ - (bool)encrypted; /** * \brief Sends an OFXMLElement, usually an XMPPStanza. * * \param element The element to send */ - (void)sendStanza: (OFXMLElement*)element; |
︙ | ︙ | |||
356 357 358 359 360 361 362 | - (XMPPJID*)JID; - (void)setPort: (uint16_t)port; - (uint16_t)port; - (void)setDataStorage: (id <XMPPStorage>)dataStorage; - (id <XMPPStorage>)dataStorage; - (void)setLanguage: (OFString*)language; - (OFString*)language; | | | | 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 | - (XMPPJID*)JID; - (void)setPort: (uint16_t)port; - (uint16_t)port; - (void)setDataStorage: (id <XMPPStorage>)dataStorage; - (id <XMPPStorage>)dataStorage; - (void)setLanguage: (OFString*)language; - (OFString*)language; - (bool)supportsRosterVersioning; - (bool)supportsStreamManagement; - (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; |
︙ | ︙ |
Modified src/XMPPConnection.m from [8415025e4d] to [0ccfb1340e].
︙ | ︙ | |||
104 105 106 107 108 109 110 | { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; [connection connect]; [self performSelector: @selector(didConnect) onThread: sourceThread | | < < | 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 | { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; [connection connect]; [self performSelector: @selector(didConnect) onThread: sourceThread waitUntilDone: false]; [pool release]; return nil; } @end @implementation XMPPConnection + connection { return [[[self alloc] init] autorelease]; } - init { self = [super init]; @try { _port = 5222; _delegates = [[XMPPMulticastDelegate alloc] init]; _callbacks = [[OFMutableDictionary alloc] init]; } @catch (id e) { [self release]; @throw e; } |
︙ | ︙ | |||
305 306 307 308 309 310 311 | - (OFString*)password { return [[_password copy] autorelease]; } - (void)setPrivateKeyFile: (OFString*)privateKeyFile { | | | | | | 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 | - (OFString*)password { return [[_password copy] autorelease]; } - (void)setPrivateKeyFile: (OFString*)privateKeyFile { OF_SETTER(_privateKeyFile, privateKeyFile, true, 1) } - (OFString*)privateKeyFile { OF_GETTER(_privateKeyFile, true) } - (void)setCertificateFile: (OFString*)certificateFile { OF_SETTER(_certificateFile, certificateFile, true, 1) } - (OFString*)certificateFile { OF_GETTER(_certificateFile, true) } - (void)connect { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; XMPPSRVEntry *candidate = nil; XMPPSRVLookup *SRVLookup = nil; |
︙ | ︙ | |||
393 394 395 396 397 398 399 | [[[[XMPPConnection_ConnectThread alloc] initWithSourceThread: [OFThread currentThread] connection: self] autorelease] start]; [pool release]; } | | | | | | | | | | | | | | | | | | | | | | | | | 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 | [[[[XMPPConnection_ConnectThread alloc] initWithSourceThread: [OFThread currentThread] connection: self] autorelease] start]; [pool release]; } - (bool)XMPP_parseBuffer: (const void*)buffer length: (size_t)length { if ([_socket isAtEndOfStream]) { [_delegates broadcastSelector: @selector(connectionWasClosed:) withObject: self]; return false; } @try { [_parser parseBuffer: buffer length: length]; } @catch (OFMalformedXMLException *e) { [self XMPP_sendStreamError: @"bad-format" text: nil]; [self close]; return false; } return true; } - (void)parseBuffer: (const void*)buffer length: (size_t)length { [self XMPP_parseBuffer: buffer length: length]; [_oldParser release]; [_oldElementBuilder release]; _oldParser = nil; _oldElementBuilder = nil; } - (bool)stream: (OFStream*)stream didReadIntoBuffer: (char*)buffer length: (size_t)length exception: (OFException*)exception { if (exception != nil) { [_delegates broadcastSelector: @selector(connection: didThrowException:) withObject: self withObject: exception]; [self close]; return false; } @try { if (![self XMPP_parseBuffer: buffer length: length]) return false; } @catch (id e) { [_delegates broadcastSelector: @selector(connection: didThrowException:) withObject: self withObject: e]; [self close]; return false; } if (_oldParser != nil || _oldElementBuilder != nil) { [_oldParser release]; [_oldElementBuilder release]; _oldParser = nil; _oldElementBuilder = nil; [_socket asyncReadIntoBuffer: buffer length: BUFFER_LENGTH target: self selector: @selector(stream: didReadIntoBuffer:length: exception:)]; return false; } return true; } - (OFTCPSocket*)socket { return [[_socket retain] autorelease]; } - (bool)encryptionRequired { return _encryptionRequired; } - (void)setEncryptionRequired: (bool)encryptionRequired { _encryptionRequired = encryptionRequired; } - (bool)encrypted { return _encrypted; } - (bool)streamOpen { return _streamOpen; } - (bool)supportsRosterVersioning { return _supportsRosterVersioning; } - (bool)supportsStreamManagement { return _supportsStreamManagement; } - (bool)checkCertificateAndGetReason: (OFString**)reason { X509Certificate *cert; OFDictionary *SANs; bool serviceSpecific = false; @try { [_socket verifyPeerCertificate]; } @catch (SSLInvalidCertificateException *e) { if (reason != NULL) *reason = [[[e reason] copy] autorelease]; return false; } cert = [_socket peerCertificate]; SANs = [cert subjectAlternativeName]; if ([[SANs objectForKey: @"otherName"] objectForKey: OID_SRVName] != nil || [SANs objectForKey: @"dNSName"] != nil || [SANs objectForKey: @"uniformResourceIdentifier"] != nil) serviceSpecific = true; if ([cert hasSRVNameMatchingDomain: _domainToASCII service: @"xmpp-client"] || [cert hasDNSNameMatchingDomain: _domainToASCII]) return true; if (!serviceSpecific && [cert hasCommonNameMatchingDomain: _domainToASCII]) return true; return false; } - (void)sendStanza: (OFXMLElement*)element { [_delegates broadcastSelector: @selector(connection:didSendElement:) withObject: self withObject: element]; |
︙ | ︙ | |||
719 720 721 722 723 724 725 | [_socket writeFormat: @"<?xml version='1.0'?>\n" @"<stream:stream to='%@' " @"xmlns='" XMPP_NS_CLIENT @"' " @"xmlns:stream='" XMPP_NS_STREAM @"' %@" @"version='1.0'>", _domain, langString]; | | | | | 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 | [_socket writeFormat: @"<?xml version='1.0'?>\n" @"<stream:stream to='%@' " @"xmlns='" XMPP_NS_CLIENT @"' " @"xmlns:stream='" XMPP_NS_STREAM @"' %@" @"version='1.0'>", _domain, langString]; _streamOpen = true; } - (void)close { if (_streamOpen) [_socket writeString: @"</stream:stream>"]; [_oldParser release]; _oldParser = nil; [_oldElementBuilder release]; _oldElementBuilder = nil; [_authModule release]; _authModule = nil; [_socket release]; _socket = nil; [_JID release]; _JID = nil; _streamOpen = _needsSession = _encrypted = false; _supportsRosterVersioning = _supportsStreamManagement = false; _lastID = 0; } - (void)XMPP_handleStanza: (OFXMLElement*)element { if ([[element name] isEqual: @"iq"]) { [self XMPP_handleIQ: [XMPPIQ stanzaWithElement: element]]; |
︙ | ︙ | |||
889 890 891 892 893 894 895 | [newSock setCertificateFile: _certificateFile]; [newSock setPrivateKeyFile: _privateKeyFile]; [newSock setPrivateKeyPassphrase: _privateKeyPassphrase]; [newSock startTLS]; [_socket release]; _socket = newSock; | | | 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 | [newSock setCertificateFile: _certificateFile]; [newSock setPrivateKeyFile: _privateKeyFile]; [newSock setPrivateKeyPassphrase: _privateKeyPassphrase]; [newSock startTLS]; [_socket release]; _socket = newSock; _encrypted = true; [_delegates broadcastSelector: @selector( connectionDidUpgradeToTLS:) withObject: self]; /* Stream restart */ [self XMPP_startStream]; |
︙ | ︙ | |||
958 959 960 961 962 963 964 | } assert(0); } - (void)XMPP_handleIQ: (XMPPIQ*)iq { | | | 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 | } assert(0); } - (void)XMPP_handleIQ: (XMPPIQ*)iq { bool handled = false; XMPPCallback *callback; if ((callback = [_callbacks objectForKey: [iq ID]])) { [callback runWithIQ: iq connection: self]; [_callbacks removeObjectForKey: [iq ID]]; return; |
︙ | ︙ | |||
1019 1020 1021 1022 1023 1024 1025 | if (_encryptionRequired && !_encrypted) /* TODO: Find/create an exception to throw here */ @throw [OFException exception]; if ([element elementForName: @"ver" namespace: XMPP_NS_ROSTERVER] != nil) | | | | 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 | if (_encryptionRequired && !_encrypted) /* TODO: Find/create an exception to throw here */ @throw [OFException exception]; if ([element elementForName: @"ver" namespace: XMPP_NS_ROSTERVER] != nil) _supportsRosterVersioning = true; if ([element elementForName: @"sm" namespace: XMPP_NS_SM] != nil) _supportsStreamManagement = true; if (mechs != nil) { OFEnumerator *enumerator; OFXMLElement *mech; enumerator = [[mechs children] objectEnumerator]; while ((mech = [enumerator nextObject]) != nil) |
︙ | ︙ | |||
1046 1047 1048 1049 1050 1051 1052 | if ([mechanisms containsObject: @"SCRAM-SHA-1-PLUS"]) { _authModule = [[XMPPSCRAMAuth alloc] initWithAuthcid: _username password: _password connection: self hash: [OFSHA1Hash class] | | | | | 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 | if ([mechanisms containsObject: @"SCRAM-SHA-1-PLUS"]) { _authModule = [[XMPPSCRAMAuth alloc] initWithAuthcid: _username password: _password connection: self hash: [OFSHA1Hash class] plusAvailable: true]; [self XMPP_sendAuth: @"SCRAM-SHA-1-PLUS"]; return; } if ([mechanisms containsObject: @"SCRAM-SHA-1"]) { _authModule = [[XMPPSCRAMAuth alloc] initWithAuthcid: _username password: _password connection: self hash: [OFSHA1Hash class] plusAvailable: false]; [self XMPP_sendAuth: @"SCRAM-SHA-1"]; return; } if ([mechanisms containsObject: @"PLAIN"] && _encrypted) { _authModule = [[XMPPPLAINAuth alloc] initWithAuthcid: _username password: _password]; [self XMPP_sendAuth: @"PLAIN"]; return; } assert(0); } if (session != nil) _needsSession = true; if (bind != nil) { [self XMPP_sendResourceBind]; return; } assert(0); |
︙ | ︙ | |||
1252 1253 1254 1255 1256 1257 1258 | - (id <XMPPStorage>)dataStorage { return _dataStorage; } - (void)setLanguage: (OFString*)language { | | | | 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 | - (id <XMPPStorage>)dataStorage { return _dataStorage; } - (void)setLanguage: (OFString*)language { OF_SETTER(_language, language, true, 1) } - (OFString*)language { OF_GETTER(_language, true) } - (void)addDelegate: (id <XMPPConnectionDelegate>)delegate { [_delegates addDelegate: delegate]; } |
︙ | ︙ |
Modified src/XMPPContact.m from [fc587e181a] to [7146d5897e].
︙ | ︙ | |||
44 45 46 47 48 49 50 | [_presences release]; [super dealloc]; } - (XMPPRosterItem*)rosterItem { | | | | | | | | 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 | [_presences release]; [super dealloc]; } - (XMPPRosterItem*)rosterItem { OF_GETTER(_rosterItem, true) } - (OFDictionary*)presences { OF_GETTER(_presences, true) } - (void)sendMessage: (XMPPMessage*)message connection: (XMPPConnection*)connection { if (_lockedOnJID == nil) [message setTo: [_rosterItem JID]]; else [message setTo: _lockedOnJID]; [connection sendStanza: message]; } - (void)XMPP_setRosterItem: (XMPPRosterItem*)rosterItem { OF_SETTER(_rosterItem, rosterItem, true, 0); } - (void)XMPP_setPresence: (XMPPPresence*)presence resource: (OFString*)resource { if (resource != nil) [_presences setObject: presence forKey: resource]; else [_presences setObject: presence forKey: @""]; [self XMPP_setLockedOnJID: nil]; } - (void)XMPP_removePresenceForResource: (OFString*)resource { if (resource != nil) { [_presences removeObjectForKey: resource]; } else { [_presences release]; _presences = [[OFMutableDictionary alloc] init]; } [self XMPP_setLockedOnJID: nil]; } - (void)XMPP_setLockedOnJID: (XMPPJID*)JID; { OF_SETTER(_lockedOnJID, JID, true, 0); } @end |
Modified src/XMPPContactManager.m from [0337e14b25] to [9764686bc1].
︙ | ︙ | |||
82 83 84 85 86 87 88 | - (void)removeDelegate: (id <XMPPContactManagerDelegate>)delegate { [_delegates removeDelegate: delegate]; } - (OFDictionary*)contacts { | | | 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | - (void)removeDelegate: (id <XMPPContactManagerDelegate>)delegate { [_delegates removeDelegate: delegate]; } - (OFDictionary*)contacts { OF_GETTER(_contacts, true) } - (void)rosterWasReceived: (XMPPRoster*)roster_ { OFEnumerator *contactEnumerator; XMPPContact *contact; OFDictionary *rosterItems; |
︙ | ︙ |
Modified src/XMPPDiscoEntity.m from [3e8f059c34] to [f5817847ca].
︙ | ︙ | |||
70 71 72 73 74 75 76 | [_discoNodes release]; [super dealloc]; } - (OFDictionary*)discoNodes; { | | | | 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 | [_discoNodes release]; [super dealloc]; } - (OFDictionary*)discoNodes; { OF_GETTER(_discoNodes, true) } - (void)addDiscoNode: (XMPPDiscoNode*)node { [_discoNodes setObject: node forKey: [node node]]; } - (OFString*)capsNode { OF_GETTER(_capsNode, true) } - (OFString*)capsHash { OFEnumerator *enumerator; XMPPDiscoIdentity *identity; OFString *feature; |
︙ | ︙ | |||
117 118 119 120 121 122 123 | - (void)connection: (XMPPConnection*)connection wasBoundToJID: (XMPPJID*)JID { _JID = [JID copy]; } | | | | | 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 | - (void)connection: (XMPPConnection*)connection wasBoundToJID: (XMPPJID*)JID { _JID = [JID copy]; } - (bool)connection: (XMPPConnection*)connection didReceiveIQ: (XMPPIQ*)IQ { if (![[IQ to] isEqual: _JID]) return false; OFXMLElement *query = [IQ elementForName: @"query" namespace: XMPP_NS_DISCO_ITEMS]; if (query != nil) { OFString *node = [[query attributeForName: @"node"] stringValue]; if (node == nil) return [self XMPP_handleItemsIQ: IQ connection: connection]; XMPPDiscoNode *responder = [_discoNodes objectForKey: node]; if (responder != nil) return [responder XMPP_handleItemsIQ: IQ connection: connection]; return false; } query = [IQ elementForName: @"query" namespace: XMPP_NS_DISCO_INFO]; if (query != nil) { OFString *node = |
︙ | ︙ | |||
163 164 165 166 167 168 169 | connection: connection]; XMPPDiscoNode *responder = [_discoNodes objectForKey: node]; if (responder != nil) return [responder XMPP_handleInfoIQ: IQ connection: connection]; | | | | 163 164 165 166 167 168 169 170 171 172 173 174 175 | connection: connection]; XMPPDiscoNode *responder = [_discoNodes objectForKey: node]; if (responder != nil) return [responder XMPP_handleInfoIQ: IQ connection: connection]; return false; } return false; } @end |
Modified src/XMPPDiscoIdentity.m from [16fe7db118] to [0b7603d5d7].
︙ | ︙ | |||
87 88 89 90 91 92 93 | [_type release]; [super dealloc]; } - (OFString*)category { | | | | | | | | | | 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 | [_type release]; [super dealloc]; } - (OFString*)category { OF_GETTER(_category, true) } - (OFString*)name { OF_GETTER(_name, true) } - (OFString*)type { OF_GETTER(_type, true) } - (bool)isEqual: (id)object { XMPPDiscoIdentity *identity; if (object == self) return true; if (![object isKindOfClass: [XMPPDiscoIdentity class]]) return false; identity = object; if ([_category isEqual: identity->_category] && (_name == identity->_name || [_name isEqual: identity->_name]) && [_type isEqual: identity->_type]) return true; return false; } - (uint32_t)hash { uint32_t hash; OF_HASH_INIT(hash); OF_HASH_ADD_HASH(hash, [_category hash]); OF_HASH_ADD_HASH(hash, [_type hash]); |
︙ | ︙ |
Modified src/XMPPDiscoNode.h from [7742e7e268] to [0a98f21b19].
︙ | ︙ | |||
124 125 126 127 128 129 130 | - (XMPPJID*)JID; - (OFString*)node; - (OFSortedList*)identities; - (OFSortedList*)features; - (OFDictionary*)childNodes; | | | | 124 125 126 127 128 129 130 131 132 133 134 135 | - (XMPPJID*)JID; - (OFString*)node; - (OFSortedList*)identities; - (OFSortedList*)features; - (OFDictionary*)childNodes; - (bool)XMPP_handleItemsIQ: (XMPPIQ*)IQ connection: (XMPPConnection*)connection; - (bool)XMPP_handleInfoIQ: (XMPPIQ*)IQ connection: (XMPPConnection*)connection; @end |
Modified src/XMPPDiscoNode.m from [bd94402de0] to [443ba32ad2].
︙ | ︙ | |||
90 91 92 93 94 95 96 | [_childNodes release]; [super dealloc]; } - (XMPPJID*)JID { | | | | | | | | | | 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 | [_childNodes release]; [super dealloc]; } - (XMPPJID*)JID { OF_GETTER(_JID, true) } - (OFString*)node { OF_GETTER(_node, true) } - (OFString*)name { OF_GETTER(_name, true) } - (OFSortedList*)identities { OF_GETTER(_identities, true) } - (OFSortedList*)features { OF_GETTER(_features, true) } - (OFDictionary*)childNodes { OF_GETTER(_childNodes, true) } - (void)addIdentity: (XMPPDiscoIdentity*)identity { [_identities insertObject: identity]; } - (void)addFeature: (OFString*)feature { [_features insertObject: feature]; } - (void)addChildNode: (XMPPDiscoNode*)node { [_childNodes setObject: node forKey: [node node]]; } - (bool)XMPP_handleItemsIQ: (XMPPIQ*)IQ connection: (XMPPConnection*)connection { XMPPIQ *resultIQ; OFXMLElement *response; XMPPDiscoNode *child; OFEnumerator *enumerator; OFXMLElement *query = [IQ elementForName: @"query" namespace: XMPP_NS_DISCO_ITEMS]; OFString *node = [[query attributeForName: @"node"] stringValue]; if (!(node == _node) && ![node isEqual: _node]) return false; resultIQ = [IQ resultIQ]; response = [OFXMLElement elementWithName: @"query" namespace: XMPP_NS_DISCO_ITEMS]; [resultIQ addChild: response]; enumerator = [_childNodes objectEnumerator]; |
︙ | ︙ | |||
173 174 175 176 177 178 179 | stringValue: [child name]]; [response addChild: item]; } [connection sendStanza: resultIQ]; | | | | 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 | stringValue: [child name]]; [response addChild: item]; } [connection sendStanza: resultIQ]; return true; } - (bool)XMPP_handleInfoIQ: (XMPPIQ*)IQ connection: (XMPPConnection*)connection { XMPPIQ *resultIQ; OFXMLElement *response; OFEnumerator *enumerator; OFString *feature; XMPPDiscoIdentity *identity; |
︙ | ︙ | |||
219 220 221 222 223 224 225 | [featureElement addAttributeWithName: @"var" stringValue: feature]; [response addChild: featureElement]; } [connection sendStanza: resultIQ]; | | | 219 220 221 222 223 224 225 226 227 228 | [featureElement addAttributeWithName: @"var" stringValue: feature]; [response addChild: featureElement]; } [connection sendStanza: resultIQ]; return true; } @end |
Modified src/XMPPFileStorage.m from [e283a67940] to [b9ae4e6e80].
︙ | ︙ | |||
150 151 152 153 154 155 156 | string = [self XMPP_objectForPath: path]; [pool release]; return string; } | | | | | 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 | string = [self XMPP_objectForPath: path]; [pool release]; return string; } - (void)setBooleanValue: (bool)boolean forPath: (OFString*)path { OFAutoreleasePool *pool = [OFAutoreleasePool new]; [self XMPP_setObject: [OFNumber numberWithBool: boolean] forPath: path]; [pool release]; } - (bool)booleanValueForPath: (OFString*)path { OFAutoreleasePool *pool = [OFAutoreleasePool new]; bool boolean; boolean = [[self XMPP_objectForPath: path] boolValue]; [pool release]; return boolean; } |
︙ | ︙ |
Modified src/XMPPJID.m from [9c61bb91d6] to [caa5a8f132].
︙ | ︙ | |||
227 228 229 230 231 232 233 | } - (bool)isEqual: (id)object { XMPPJID *JID; if (object == self) | | | | | < | | | | 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | } - (bool)isEqual: (id)object { XMPPJID *JID; if (object == self) return true; if (![object isKindOfClass: [XMPPJID class]]) return false; JID = object; // Node and resource may be nil if ((_node == JID->_node || [_node isEqual: JID->_node]) && [_domain isEqual: JID->_domain] && (_resource == JID->_resource || [_resource isEqual: JID->_resource])) return true; return false; } - (uint32_t)hash { uint32_t hash; OF_HASH_INIT(hash); OF_HASH_ADD_HASH(hash, [_node hash]); OF_HASH_ADD_HASH(hash, [_domain hash]); |
︙ | ︙ |
Modified src/XMPPMulticastDelegate.h from [6630339e62] to [262039b6d3].
︙ | ︙ | |||
48 49 50 51 52 53 54 | /** * \brief Broadcasts a selector with an object to all registered delegates. * * \param selector The selector to broadcast * \param object The object to broadcast */ | | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | /** * \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: (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: (id)object1 withObject: (id)object2; @end |
Modified src/XMPPMulticastDelegate.m from [3c26c3b049] to [b067f77954].
︙ | ︙ | |||
66 67 68 69 70 71 72 | continue; [_delegates removeItemAtIndex: i]; return; } } | | | | | | | | 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 | continue; [_delegates removeItemAtIndex: i]; return; } } - (bool)broadcastSelector: (SEL)selector withObject: (id)object { OFDataArray *currentDelegates = [_delegates copy]; id *items = [currentDelegates items]; size_t i, count = [currentDelegates count]; bool handled = false; for (i = 0; i < count; i++) { id responder = items[i]; if (![responder respondsToSelector: selector]) continue; bool (*imp)(id, SEL, id) = (bool(*)(id, SEL, id)) [responder methodForSelector: selector]; handled |= imp(responder, selector, object); } return handled; } - (bool)broadcastSelector: (SEL)selector withObject: (id)object1 withObject: (id)object2 { OFDataArray *currentDelegates = [_delegates copy]; id *items = [currentDelegates items]; size_t i, count = [currentDelegates count]; bool handled = false; for (i = 0; i < count; i++) { id responder = items[i]; if (![responder respondsToSelector: selector]) continue; bool (*imp)(id, SEL, id, id) = (bool(*)(id, SEL, id, id)) [responder methodForSelector: selector]; handled |= imp(responder, selector, object1, object2); } return handled; } |
︙ | ︙ |
Modified src/XMPPPresence.m from [71bd226691] to [84efc4167a].
︙ | ︙ | |||
146 147 148 149 150 151 152 | [self removeChild: oldShow]; if (show != nil) [self addChild: [OFXMLElement elementWithName: @"show" namespace: XMPP_NS_CLIENT stringValue: show]]; | | | | 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 | [self removeChild: oldShow]; if (show != nil) [self addChild: [OFXMLElement elementWithName: @"show" namespace: XMPP_NS_CLIENT stringValue: show]]; OF_SETTER(_show, show, true, 1) } - (OFString*)show { return [[_show copy] autorelease]; } - (void)setStatus: (OFString*)status { OFXMLElement *oldStatus = [self elementForName: @"status" namespace: XMPP_NS_CLIENT]; if (oldStatus != nil) [self removeChild: oldStatus]; if (status != nil) [self addChild: [OFXMLElement elementWithName: @"status" namespace: XMPP_NS_CLIENT stringValue: status]]; OF_SETTER(_status, status, true, 1) } - (OFString*)status { return [[_status copy] autorelease]; } |
︙ | ︙ | |||
194 195 196 197 198 199 200 | OFString* priority_s = [OFString stringWithFormat: @"%" @PRId8, [priority int8Value]]; [self addChild: [OFXMLElement elementWithName: @"priority" namespace: XMPP_NS_CLIENT stringValue: priority_s]]; | | | 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | OFString* priority_s = [OFString stringWithFormat: @"%" @PRId8, [priority int8Value]]; [self addChild: [OFXMLElement elementWithName: @"priority" namespace: XMPP_NS_CLIENT stringValue: priority_s]]; OF_SETTER(_priority, priority, true, 1) } - (OFNumber*)priority { return [[_priority copy] autorelease]; } |
︙ | ︙ |
Modified src/XMPPRoster.h from [d21cceae6c] to [cd389fa1d0].
︙ | ︙ | |||
68 69 70 71 72 73 74 | <XMPPConnectionDelegate> #endif { XMPPConnection *_connection; OFMutableDictionary *_rosterItems; XMPPMulticastDelegate *_delegates; id <XMPPStorage> _dataStorage; | | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | <XMPPConnectionDelegate> #endif { XMPPConnection *_connection; OFMutableDictionary *_rosterItems; XMPPMulticastDelegate *_delegates; id <XMPPStorage> _dataStorage; bool _rosterRequested; } #ifdef OF_HAVE_PROPERTIES /** * \brief The connection to which the roster belongs */ @property (readonly, assign) XMPPConnection *connection; |
︙ | ︙ |
Modified src/XMPPRoster.m from [265f350014] to [3142167b8a].
︙ | ︙ | |||
73 74 75 76 77 78 79 | } - (void)requestRoster { XMPPIQ *iq; OFXMLElement *query; | | > | | | | | 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 | } - (void)requestRoster { XMPPIQ *iq; OFXMLElement *query; _rosterRequested = true; iq = [XMPPIQ IQWithType: @"get" ID: [_connection generateStanzaID]]; query = [OFXMLElement elementWithName: @"query" namespace: XMPP_NS_ROSTER]; if ([_connection supportsRosterVersioning]) { OFString *ver = [_dataStorage stringValueForPath: @"roster.ver"]; if (ver == nil) ver = @""; [query addAttributeWithName: @"ver" stringValue: ver]; } [iq addChild: query]; [_connection sendIQ: iq callbackTarget: self selector: @selector(XMPP_handleInitialRosterForConnection: IQ:)]; } - (bool)connection: (XMPPConnection*)connection didReceiveIQ: (XMPPIQ*)iq { OFXMLElement *rosterElement; OFXMLElement *element; XMPPRosterItem *rosterItem; rosterElement = [iq elementForName: @"query" namespace: XMPP_NS_ROSTER]; if (rosterElement == nil) return false; if (![[iq type] isEqual: @"set"]) return false; element = [rosterElement elementForName: @"item" namespace: XMPP_NS_ROSTER]; if (element != nil) { rosterItem = [self XMPP_rosterItemWithXMLElement: element]; |
︙ | ︙ | |||
139 140 141 142 143 144 145 | [_dataStorage setStringValue: ver forPath: @"roster.ver"]; [_dataStorage save]; } [connection sendStanza: [iq resultIQ]]; | | | 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | [_dataStorage setStringValue: ver forPath: @"roster.ver"]; [_dataStorage save]; } [connection sendStanza: [iq resultIQ]]; return true; } - (void)addRosterItem: (XMPPRosterItem*)rosterItem { [self updateRosterItem: rosterItem]; } |
︙ | ︙ |
Modified src/XMPPRosterItem.m from [aca510ff6a] to [78eee45854].
︙ | ︙ | |||
67 68 69 70 71 72 73 | return [OFString stringWithFormat: @"<XMPPRosterItem, JID=%@, name=%@, " @"subscription=%@, groups=%@>", _JID, _name, _subscription, _groups]; } - (void)setJID: (XMPPJID*)JID { | | | | | | | | | | 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 | return [OFString stringWithFormat: @"<XMPPRosterItem, JID=%@, name=%@, " @"subscription=%@, groups=%@>", _JID, _name, _subscription, _groups]; } - (void)setJID: (XMPPJID*)JID { OF_SETTER(_JID, JID, true, 1) } - (XMPPJID*)JID { OF_GETTER(_JID, true) } - (void)setName: (OFString*)name { OF_SETTER(_name, name, true, 1) } - (OFString*)name { OF_GETTER(_name, true) } - (void)setSubscription: (OFString*)subscription { OF_SETTER(_subscription, subscription, true, 1) } - (OFString*)subscription { OF_GETTER(_subscription, true) } - (void)setGroups: (OFArray*)groups { OF_SETTER(_groups, groups, true, 1) } - (OFArray*)groups { OF_GETTER(_groups, true) } @end |
Modified src/XMPPSCRAMAuth.h from [04e3d7ee03] to [b0a08a1248].
︙ | ︙ | |||
31 32 33 34 35 36 37 | { Class _hashType; OFString *_cNonce; OFString *_GS2Header; OFString *_clientFirstMessageBare; OFDataArray *_serverSignature; XMPPConnection *_connection; | | | | | | | | 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 | { Class _hashType; OFString *_cNonce; OFString *_GS2Header; OFString *_clientFirstMessageBare; OFDataArray *_serverSignature; XMPPConnection *_connection; bool _plusAvailable; bool _authenticated; } /** * \brief Creates a new autoreleased 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 new autoreleased XMPPSCRAMAuth */ + SCRAMAuthWithAuthcid: (OFString*)authcid password: (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 */ + SCRAMAuthWithAuthzid: (OFString*)authzid authcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable; /** * \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: (OFString*)authcid password: (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: (OFString*)authzid authcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable; /// \cond internal - (OFString*)XMPP_genNonce; - (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; /// \endcond @end |
Modified src/XMPPSCRAMAuth.m from [764a5f4df5] to [5849c66f1f].
︙ | ︙ | |||
38 39 40 41 42 43 44 | #define HMAC_OPAD 0x5c @implementation XMPPSCRAMAuth + SCRAMAuthWithAuthcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash | | | | | | 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 | #define HMAC_OPAD 0x5c @implementation XMPPSCRAMAuth + SCRAMAuthWithAuthcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable { return [[[self alloc] initWithAuthcid: authcid password: password connection: connection hash: hash plusAvailable: plusAvailable] autorelease]; } + SCRAMAuthWithAuthzid: (OFString*)authzid authcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable { return [[[self alloc] initWithAuthzid: authzid authcid: authcid password: password connection: connection hash: hash plusAvailable: plusAvailable] autorelease]; } - initWithAuthcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable { return [self initWithAuthzid: nil authcid: authcid password: password connection: connection hash: hash plusAvailable: plusAvailable]; } - initWithAuthzid: (OFString*)authzid authcid: (OFString*)authcid password: (OFString*)password connection: (XMPPConnection*)connection hash: (Class)hash plusAvailable: (bool)plusAvailable { self = [super initWithAuthzid: authzid authcid: authcid password: password]; _hashType = hash; _plusAvailable = plusAvailable; |
︙ | ︙ | |||
150 151 152 153 154 155 156 | /* New authentication attempt, reset status */ [_cNonce release]; _cNonce = nil; [_GS2Header release]; _GS2Header = nil; [_serverSignature release]; _serverSignature = nil; | | | 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | /* New authentication attempt, reset status */ [_cNonce release]; _cNonce = nil; [_GS2Header release]; _GS2Header = nil; [_serverSignature release]; _serverSignature = nil; _authenticated = false; if (_authzid) _GS2Header = [[OFString alloc] initWithFormat: @"%@,a=%@,", (_plusAvailable ? @"p=tls-unique" : @"y"), _authzid]; else |
︙ | ︙ | |||
386 387 388 389 390 391 392 | if ([mess hasPrefix: @"v="]) { if (![value isEqual: [_serverSignature stringByBase64Encoding]]) @throw [XMPPAuthFailedException exceptionWithConnection: nil reason: @"Received wrong " @"ServerSignature"]; | | | 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 | if ([mess hasPrefix: @"v="]) { if (![value isEqual: [_serverSignature stringByBase64Encoding]]) @throw [XMPPAuthFailedException exceptionWithConnection: nil reason: @"Received wrong " @"ServerSignature"]; _authenticated = true; } else @throw [XMPPAuthFailedException exceptionWithConnection: nil reason: value]; return nil; } |
︙ | ︙ |
Modified src/XMPPSRVLookup.h from [df58ba3514] to [648af96410].
︙ | ︙ | |||
82 83 84 85 86 87 88 | @end @interface XMPPSRVEnumerator: OFEnumerator { OFList *list; of_list_object_t *listIter; OFList *subListCopy; | | | 82 83 84 85 86 87 88 89 90 91 92 93 | @end @interface XMPPSRVEnumerator: OFEnumerator { OFList *list; of_list_object_t *listIter; OFList *subListCopy; bool done; } - initWithList: (OFList*)list; @end |
Modified src/XMPPSRVLookup.m from [54b7d6a8f6] to [0f6eec9046].
︙ | ︙ | |||
154 155 156 157 158 159 160 | - (uint16_t)port { return _port; } - (OFString*)target { | | | 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | - (uint16_t)port { return _port; } - (OFString*)target { OF_GETTER(_target, true) } @end @implementation XMPPSRVLookup + lookupWithDomain: (OFString*)domain { return [[[self alloc] initWithDomain: domain] autorelease]; |
︙ | ︙ | |||
191 192 193 194 195 196 197 | [_domain release]; [super dealloc]; } - (OFString*)domain; { | | | 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 | [_domain release]; [super dealloc]; } - (OFString*)domain; { OF_GETTER(_domain, true) } - (void)XMPP_lookup { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; unsigned char *answer = NULL; size_t pageSize = [OFSystemInfo pageSize]; |
︙ | ︙ | |||
362 363 364 365 366 367 368 | if ([subListCopy count] == 0) { [subListCopy release]; subListCopy = nil; listIter = listIter->next; if (listIter == NULL) | | | | 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 | if ([subListCopy count] == 0) { [subListCopy release]; subListCopy = nil; listIter = listIter->next; if (listIter == NULL) done = true; } return ret; } - (void)reset { listIter = NULL; [subListCopy release]; subListCopy = nil; done = false; } @end |
Modified src/XMPPStorage.h from [8671f67e66] to [4e3fe503e3].
︙ | ︙ | |||
16 17 18 19 20 21 22 | * 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. */ | | | | | 16 17 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 | * 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 <ObjFW/OFObject.h> @class OFString; @class OFArray; @class OFDictionary; @protocol XMPPStorage <OFObject> - (void)save; - (void)setStringValue: (OFString*)string forPath: (OFString*)path; - (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: (OFArray*)array forPath: (OFString*)path; - (OFArray*)arrayForPath: (OFString*)path; - (void)setDictionary: (OFDictionary*)dictionary |
︙ | ︙ |
Modified tests/test.m from [346e30a037] to [7d532cb80f].
︙ | ︙ | |||
149 150 151 152 153 154 155 | } - (void)connection: (XMPPConnection*)conn_ wasBoundToJID: (XMPPJID*)jid { of_log(@"Bound to JID: %@", [jid fullJID]); of_log(@"Supports SM: %@", | | | 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | } - (void)connection: (XMPPConnection*)conn_ wasBoundToJID: (XMPPJID*)jid { of_log(@"Bound to JID: %@", [jid fullJID]); of_log(@"Supports SM: %@", [conn_ supportsStreamManagement] ? @"true" : @"false"); XMPPDiscoEntity *discoEntity = [[XMPPDiscoEntity alloc] initWithConnection: conn]; [discoEntity addIdentity: [XMPPDiscoIdentity identityWithCategory: @"client" type: @"pc" |
︙ | ︙ | |||
240 241 242 243 244 245 246 | - (void)roster: (XMPPRoster*)roster_ didReceiveRosterItem: (XMPPRosterItem*)rosterItem { of_log(@"Got roster push: %@", rosterItem); } | | | 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | - (void)roster: (XMPPRoster*)roster_ didReceiveRosterItem: (XMPPRosterItem*)rosterItem { of_log(@"Got roster push: %@", rosterItem); } - (bool)connection: (XMPPConnection*)conn didReceiveIQ: (XMPPIQ*)iq { of_log(@"IQ: %@", iq); return NO; } |
︙ | ︙ |