Mercurial > hg
diff mcabber/src/jabglue.c @ 298:35cda94e570d
Add /connect and /disconnect commands
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 10 Jul 2005 15:38:45 +0100 |
parents | 871e53769084 |
children | 12f919be3da5 |
line wrap: on
line diff
--- a/mcabber/src/jabglue.c Sat Jul 09 23:20:36 2005 +0100 +++ b/mcabber/src/jabglue.c Sun Jul 10 15:38:45 2005 +0100 @@ -40,7 +40,7 @@ time_t LastPingTime; unsigned int KeepaliveDelay; static unsigned int prio; -static int s_id = 1; // FIXME which use?? +static int s_id; static int regmode, regdone; static enum imstatus mystatus = offline; unsigned char online; @@ -117,6 +117,19 @@ return alias; } +char *compose_jid(const char *username, const char *servername, + const char *resource) +{ + char *jid = g_new(char, + strlen(username)+strlen(servername)+strlen(resource)+3); + strcpy(jid, username); + 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) { if (!port) { @@ -126,16 +139,18 @@ port = JABBERPORT; } - if (jc) - free(jc); + //if (jc) + // free(jc); XXX + s_id = 1; jc = jab_new((char*)jid, (char*)pass, port, ssl); + /* These 3 functions can deal with a NULL jc, no worry... */ jab_logger(jc, file_logger); jab_packet_handler(jc, &packethandler); jab_state_handler(jc, &statehandler); - if (jc->user) { + if (jc && jc->user) { online = TRUE; jstate = STATE_CONNECTING; statehandler(0, -1); @@ -147,7 +162,12 @@ void jb_disconnect(void) { + if (!jc) return; + statehandler(jc, JCONN_STATE_OFF); + jab_delete(jc); + //free(jc); XXX + jc = NULL; } inline void jb_reset_keepalive()