@@ -189,11 +189,12 @@ for (;;) { size_t len = [sock readNBytes: 512 intoBuffer: buf]; - if (len < 1) + if (len < 1 && [delegate respondsToSelector: + @selector(connectionWasClosed:)]) [delegate connectionWasClosed: self]; [of_stdout writeNBytes: len fromBuffer: buf]; [parser parseBuffer: buf @@ -264,11 +265,15 @@ if ([bindElem.name isEqual: @"bind"] && [bindElem.namespace isEqual: NS_BIND]) { OFXMLElement *jidElem = bindElem.children.firstObject; JID = [[XMPPJID alloc] initWithString: [jidElem.children.firstObject stringValue]]; - of_log(@"Bound to JID: %@", [JID fullJID]); + + if ([delegate respondsToSelector: + @selector(connection:wasBoundToJID:)]) + [delegate connection: self + wasBoundToJID: JID]; } } - (void)_handleFeatures: (OFXMLElement*)elem { @@ -311,24 +316,29 @@ if ([iq.ID isEqual: @"bind0"] && [iq.type isEqual: @"result"]) { [self _handleResourceBind: iq]; return; } - [delegate connection: self - didReceiveIQ: iq]; + if ([delegate respondsToSelector: @selector(connection:didReceiveIQ:)]) + [delegate connection: self + didReceiveIQ: iq]; } - (void)_handleMessage: (XMPPMessage*)msg { - [delegate connection: self - didReceiveMessage: msg]; + if ([delegate respondsToSelector: + @selector(connection:didReceiveMessage:)]) + [delegate connection: self + didReceiveMessage: msg]; } - (void)_handlePresence: (XMPPPresence*)pres { - [delegate connection: self - didReceivePresence: pres]; + if ([delegate respondsToSelector: + @selector(connection:didReceivePresence:)]) + [delegate connection: self + didReceivePresence: pres]; } - (void)elementBuilder: (OFXMLElementBuilder*)b didBuildElement: (OFXMLElement*)elem { @@ -406,11 +416,14 @@ if ([elem.name isEqual: @"success"]) { [authModule parseServerFinalMessage: [OFDataArray dataArrayWithBase64EncodedString: [elem.children.firstObject stringValue]]]; - of_log(@"Auth successful"); + + if ([delegate respondsToSelector: + @selector(connectionWasAuthenticated:)]) + [delegate connectionWasAuthenticated: self]; /* Stream restart */ parser.delegate = self; [self _startStream]; return;