Index: src/Makefile ================================================================== --- src/Makefile +++ src/Makefile @@ -27,14 +27,14 @@ XMPPRoster.m \ XMPPRosterItem.m \ XMPPSCRAMAuth.m \ XMPPStanza.m \ XMPPStreamManagement.m \ - XMPPXMLElementBuilder.m + XMPPXMLElementBuilder.m \ + namespaces.m INCLUDES = ${SRCS:.m=.h} \ - namespaces.h \ ObjXMPP.h \ XMPPStorage.h include ../buildsys.mk Index: src/XMPPConnection.m ================================================================== --- src/XMPPConnection.m +++ src/XMPPConnection.m @@ -636,13 +636,17 @@ langString = [OFString stringWithFormat: @"xml:lang='%@' ", _language]; [_socket writeFormat: @"\n" @"", _domain, langString]; + @"xmlns='%@' " + @"xmlns:stream='%@' %@" + @"version='1.0'>", + _domain, + XMPPClientNS, + XMPPStreamNS, + langString]; _streamOpen = true; } - (void)close Index: src/namespaces.h ================================================================== --- src/namespaces.h +++ src/namespaces.h @@ -18,20 +18,22 @@ * 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. */ -#define XMPPBindNS @"urn:ietf:params:xml:ns:xmpp-bind" -#define XMPPCapsNS @"http://jabber.org/protocol/caps" -#define XMPPClientNS @"jabber:client" -#define XMPPDiscoInfoNS @"http://jabber.org/protocol/disco#info" -#define XMPPDiscoItemsNS @"http://jabber.org/protocol/disco#items" -#define XMPPMUCNS @"http://jabber.org/protocol/muc" -#define XMPPRosterNS @"jabber:iq:roster" -#define XMPPRosterVerNS @"urn:xmpp:features:rosterver" -#define XMPPSASLNS @"urn:ietf:params:xml:ns:xmpp-sasl" -#define XMPPSessionNS @"urn:ietf:params:xml:ns:xmpp-session" -#define XMPPSMNS @"urn:xmpp:sm:3" -#define XMPPStanzasNS @"urn:ietf:params:xml:ns:xmpp-stanzas" -#define XMPPStartTLSNS @"urn:ietf:params:xml:ns:xmpp-tls" -#define XMPPStreamNS @"http://etherx.jabber.org/streams" -#define XMPPXMPPStreamNS @"urn:ietf:params:xml:ns:xmpp-streams" +#import + +extern OFString *const XMPPBindNS; +extern OFString *const XMPPCapsNS; +extern OFString *const XMPPClientNS; +extern OFString *const XMPPDiscoInfoNS; +extern OFString *const XMPPDiscoItemsNS; +extern OFString *const XMPPMUCNS; +extern OFString *const XMPPRosterNS; +extern OFString *const XMPPRosterVerNS; +extern OFString *const XMPPSASLNS; +extern OFString *const XMPPSessionNS; +extern OFString *const XMPPSMNS; +extern OFString *const XMPPStanzasNS; +extern OFString *const XMPPStartTLSNS; +extern OFString *const XMPPStreamNS; +extern OFString *const XMPPXMPPStreamNS; ADDED src/namespaces.m Index: src/namespaces.m ================================================================== --- /dev/null +++ src/namespaces.m @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2011, 2021, Jonathan Schleifer + * + * https://heap.zone/objxmpp/ + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * 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 "namespaces.h" + +OFString *const XMPPBindNS = @"urn:ietf:params:xml:ns:xmpp-bind"; +OFString *const XMPPCapsNS = @"http://jabber.org/protocol/caps"; +OFString *const XMPPClientNS = @"jabber:client"; +OFString *const XMPPDiscoInfoNS = @"http://jabber.org/protocol/disco#info"; +OFString *const XMPPDiscoItemsNS = @"http://jabber.org/protocol/disco#items"; +OFString *const XMPPMUCNS = @"http://jabber.org/protocol/muc"; +OFString *const XMPPRosterNS = @"jabber:iq:roster"; +OFString *const XMPPRosterVerNS = @"urn:xmpp:features:rosterver"; +OFString *const XMPPSASLNS = @"urn:ietf:params:xml:ns:xmpp-sasl"; +OFString *const XMPPSessionNS = @"urn:ietf:params:xml:ns:xmpp-session"; +OFString *const XMPPSMNS = @"urn:xmpp:sm:3"; +OFString *const XMPPStanzasNS = @"urn:ietf:params:xml:ns:xmpp-stanzas"; +OFString *const XMPPStartTLSNS = @"urn:ietf:params:xml:ns:xmpp-tls"; +OFString *const XMPPStreamNS = @"http://etherx.jabber.org/streams"; +OFString *const XMPPXMPPStreamNS = @"urn:ietf:params:xml:ns:xmpp-streams";