This is a collection of Frequently Asked Questions and Preemptively Answered Questions.
- How can I connect to Google Talk?
- Does gloox support Unicode and/or UTF-8?
- gloox throws a parse error and disconnects unexpectedly
- Is gloox’ API stable?
- Does gloox support SSL connections to port 5223?
- Will you add feature xyz?
- Something does not work as expected! What can I do?
- gloox has sooo many dependencies. Why’s that?
- Somebody told me gloox was a C++ wrapper around Smack?
- Why does my [Presence,Subscription,…]Handler never get called?
- Compilation fails with many GnuTLS-related errors
- gloox doesn’t work with domain/server xyz!
- Can you please add a workaround so it works with a non-XMPP-compliant server?
- gloox keeps saying: “This server is not XMPP-compliant (it does not send a ‘version’ attribute). Please try another one.”. What can I do?
- Does gloox run on MacOS X?
- Does gloox run on Microsoft Windows?
- Does gloox run on SkyOS?
- How about Syllable?
- Is Windows CE/PocketPC/Windows Mobile supported?
- How about reentrancy and thread-safety?
- Can I use gloox in a commercial application?
- Can you please release a LGPL/BSD licensed version?
- How can I connect to Google Talk?
Just use gloox like you would with any other Jabber/XMPP server. However, you should use a TLS/SSL-enabled gloox to save you some trouble. Also, GTalk requires lookup of SRV records which gloox does not yet support on all platforms. On such systems (e.g., SkyOS) you can use ClientBase::setServer( “talk.google.com” ) to manually tell gloox which server to connect to.
- Does gloox support Unicode and/or UTF-8?
Short answer: yes. Long answer: It supports UTF-8 which is the only character encoding supported by XMPP. gloox handles this perfectly fine using std::string and there is no need to compile gloox with UNICODE defined. If your platform’s character encoding is not UTF-8 you have to convert it to UTF-8 before feeding data into gloox.
- gloox throws a parse error and disconnects unexpectedly
Several entities on the XMPP network inject unescaped ‘ and ” characters into XMPP streams. This is explicitely forbidden by the current XMPP spec. These entities are in violation of RFC3920. However, this part of the RFC is currently being discussed by the XSF and it is possible it is lifted in the future. gloox will be updated as soon as a decision is made.
- Is gloox’ API stable?
In general, the API is stable within a branch, yes. That is, all the 0.9.x releases should be source compatible. If bugfixing makes source compatibility impossible, this will be clearly announced in the ChangeLog for the affected release.
- Does gloox support SSL connections to port 5223?
No, old-style SSL-only connections are not supported. They are not specified in the XMPP standard.
- Will you add feature xyz?
Maybe. See the roadmap for up-to-date scheduling. Also, feel free to contact me if you want to sponsor me to add certain functionality.
- Something does not work as expected! What can I do?
First, make sure you are using the latest release of gloox. Also make sure you have appropriate versions of the dependencies installed (if you need them). If this doesn’t solve your problem send a message to the mailinglist describing what goes wrong. Please don’t forget to mention your operating system and compiler, and include any relevant debug output and source code that could help to reproduce the problem.
- gloox has sooo many dependencies. Why’s that?
All the dependencies are optional (but recommended) and add functionality which the specifications require. For example, you can choose from two TLS implementations which gloox supports. Re-implementing such functionality would be a waste of resources.
- Somebody told me gloox was a C++ wrapper around Smack?
Uhm… no. gloox is neither related to Smack nor has it anything to do with Java. gloox is pure C++.
- Why does my [Presence,Subscription,…]Handler never get called?
Most likely because you forgot to register it with the Client (or the respective object).
- Compilation fails with many GnuTLS-related errors (undefined reference to gnutls_x509_crt_t, etc).
Make sure you have GnuTLS 1.2.x or above installed. The older 1.0.x versions are not supported.
- gloox doesn’t work with domain/server xyz!
Make sure the server is compliant to the XMPP specs. An important piece to watch out for is, for example, the ‘version’ attribute of the initial stream element sent by the server. If this attribute is missing, you probably won’t have much fun.
- Can you please add a workaround so it works with a non-XMPP-compliant server?
No, sorry, I will not work around old or buggy server implementations as that is counter-productive for adoption of XMPP-compliant software. If you encounter problems with a particular server, please contact that server’s owner/admin and urge them to update their server software. All the major server implementations are fairly compliant to the specs nowadays.
- gloox keeps saying: “This server is not XMPP-compliant (it does not send a ‘version’ attribute). Please try another one.”. What can I do?
See the previous questions/answers.
- Does gloox run on MacOS X?
Yes, gloox compiles and runs on MacOS X.
- Does gloox run on Microsoft Windows?
Yes, starting with the 0.7 release, gloox compiles in MinGW and MSVC. See README.win32 for more information. It is quite likely that it also compiles in Cygwin, however Cygwin is not an officially supported build target (yet?).
- Does gloox run on SkyOS?
Yes, since 0.7.
- How about Syllable?
Yes, since the 0.7.6 release gloox supports Syllable.
- Is Windows CE/PocketPC/Windows Mobile supported?
As of 0.9, yes.
- How about reentrancy and thread-safety?
All functions are reentrant. No state is kept in shared or global variables.
gloox is thread-safe in that there are neither shared memory nor global variables. However, write access to gloox objects from multiple threads needs appropriate synchronization. In gloox 0.9, access to TCP send() and recv() as well as SOCKS5BytestreamServer is synchronized internally.
- Can I use gloox in a commercial application?
Yes, contact me if you’re interested in a commercial license.
- Can you please release a LGPL/BSD licensed version?
No, sorry.