Allow a different server name than the jid domain name
authorMikael Berthe <mikael@lilotux.net>
Sat, 27 Aug 2005 11:21:27 +0200
changeset 403 17aa60c6dc63
parent 402 4f36d41695a9
child 404 fb2325d24d13
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.
mcabber/libjabber/jabber.h
mcabber/libjabber/jconn.c
mcabber/src/jabglue.c
mcabber/src/jabglue.h
mcabber/src/main.c
--- 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);
--- 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;
--- 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);
--- 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);
--- 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)