# HG changeset patch # User Mikael Berthe # Date 1125134487 -7200 # Node ID 17aa60c6dc63285fb62a3c518e8e87c7fdc80a0a # Parent 4f36d41695a90c00df8967a80c933d03f5f5fd7c Allow a different server name than the jid domain name Sync libjabber with upstream (centericq). The libjabber patch is from Ian Johannesen. This allows connecting to Google Talk, for example. diff -r 4f36d41695a9 -r 17aa60c6dc63 mcabber/libjabber/jabber.h --- a/mcabber/libjabber/jabber.h Mon Aug 22 20:33:11 2005 +0200 +++ b/mcabber/libjabber/jabber.h Sat Aug 27 11:21:27 2005 +0200 @@ -271,6 +271,7 @@ int state; /* Connection state flag */ int cw_state; /* Low level connection state flag */ int fd; /* Connection file descriptor */ + char *server; /* The server we'll connect too */ int port; int ssl; jid user; /* User info */ @@ -294,7 +295,7 @@ typedef void (*jconn_packet_h)(jconn j, jpacket p); typedef void (*jconn_logger)(jconn j, int inout, const char *p); -jconn jab_new(char *user, char *pass, int port, int ssl); +jconn jab_new(char *user, char *pass, char *server, int port, int ssl); void jab_delete(jconn j); void jab_state_handler(jconn j, jconn_state_h h); void jab_packet_handler(jconn j, jconn_packet_h h); diff -r 4f36d41695a9 -r 17aa60c6dc63 mcabber/libjabber/jconn.c --- a/mcabber/libjabber/jconn.c Mon Aug 22 20:33:11 2005 +0200 +++ b/mcabber/libjabber/jconn.c Sat Aug 27 11:21:27 2005 +0200 @@ -41,7 +41,7 @@ * a pointer to the connection structure * or NULL if allocations failed */ -jconn jab_new(char *user, char *pass, int port, int ssl) +jconn jab_new(char *user, char *pass, char *server, int port, int ssl) { pool p; jconn j; @@ -57,6 +57,7 @@ j->user = jid_new(p, user); j->pass = pstrdup(p, pass); j->port = port; + j->server = server; j->state = JCONN_STATE_OFF; j->cw_state = 0; @@ -139,10 +140,10 @@ XML_SetCharacterDataHandler(j->parser, charData); if (j->cw_state & CW_CONNECT_BLOCKING) - j->fd = make_netsocket(j->port, j->user->server, NETSOCKET_CLIENT, j->ssl); + j->fd = make_netsocket(j->port, j->server, NETSOCKET_CLIENT, j->ssl); else - j->fd = make_nb_netsocket(j->port, j->user->server, NETSOCKET_CLIENT, j->ssl, &j->cw_state); - + j->fd = make_nb_netsocket(j->port, j->server, NETSOCKET_CLIENT, j->ssl, &j->cw_state); + if(j->fd < 0) { STATE_EVT(JCONN_STATE_OFF); return; diff -r 4f36d41695a9 -r 17aa60c6dc63 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Mon Aug 22 20:33:11 2005 +0200 +++ b/mcabber/src/jabglue.c Sat Aug 27 11:21:27 2005 +0200 @@ -114,14 +114,17 @@ char *jid = g_new(char, 3 + strlen(username) + strlen(servername) + strlen(resource)); strcpy(jid, username); - strcat(jid, "@"); - strcat(jid, servername); + if (!strchr(jid, '@')) { + strcat(jid, "@"); + strcat(jid, servername); + } strcat(jid, "/"); strcat(jid, resource); return jid; } -jconn jb_connect(const char *jid, unsigned int port, int ssl, const char *pass) +jconn jb_connect(const char *jid, const char *server, unsigned int port, + int ssl, const char *pass) { if (!port) { if (ssl) @@ -133,7 +136,7 @@ jb_disconnect(); s_id = 1; - jc = jab_new((char*)jid, (char*)pass, port, ssl); + jc = jab_new((char*)jid, (char*)pass, (char*)server, port, ssl); /* These 3 functions can deal with a NULL jc, no worry... */ jab_logger(jc, logger); diff -r 4f36d41695a9 -r 17aa60c6dc63 mcabber/src/jabglue.h --- a/mcabber/src/jabglue.h Mon Aug 22 20:33:11 2005 +0200 +++ b/mcabber/src/jabglue.h Sat Aug 27 11:21:27 2005 +0200 @@ -38,7 +38,8 @@ char *compose_jid(const char *username, const char *servername, const char *resource); -jconn jb_connect(const char *jid, unsigned int port, int ssl, const char *pass); +jconn jb_connect(const char *jid, const char *server, unsigned int port, + int ssl, const char *pass); void jb_disconnect(void); void jb_main(); void jb_addbuddy(const char *jid, const char *name, const char *group); diff -r 4f36d41695a9 -r 17aa60c6dc63 mcabber/src/main.c --- a/mcabber/src/main.c Mon Aug 22 20:33:11 2005 +0200 +++ b/mcabber/src/main.c Sat Aug 27 11:21:27 2005 +0200 @@ -82,7 +82,7 @@ scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using port %d", port); jid = compose_jid(username, servername, resource); - jc = jb_connect(jid, port, ssl, password); + jc = jb_connect(jid, servername, port, ssl, password); g_free(jid); if (!jc)