changeset 403:17aa60c6dc63

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.
author Mikael Berthe <mikael@lilotux.net>
date Sat, 27 Aug 2005 11:21:27 +0200
parents 4f36d41695a9
children fb2325d24d13
files mcabber/libjabber/jabber.h mcabber/libjabber/jconn.c mcabber/src/jabglue.c mcabber/src/jabglue.h mcabber/src/main.c
diffstat 5 files changed, 17 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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)