# HG changeset patch # User Mikael Berthe # Date 1128269134 -7200 # Node ID 75442262c08255e97fdf878d63107376b953ce65 # Parent 82a27508fb856d682f9a57e20c6bdea2d57cd5c0 Disable some commands when not connected Disable status/status_to, add, rawxml, room, say/msay when not connected, as these commands could be called with an empty buddylist. diff -r 82a27508fb85 -r 75442262c082 mcabber/src/commands.c --- a/mcabber/src/commands.c Sun Oct 02 10:57:09 2005 +0200 +++ b/mcabber/src/commands.c Sun Oct 02 18:05:34 2005 +0200 @@ -231,6 +231,11 @@ { const char *jid; + if (!jb_getonline()) { + scr_LogPrint(LPRINT_NORMAL, "You are not connected"); + return; + } + if (!current_buddy) { scr_LogPrint(LPRINT_NORMAL, "No buddy currently selected."); return; @@ -403,6 +408,11 @@ int len; char *msg; + if (!jb_getonline()) { + scr_LogPrint(LPRINT_NORMAL, "You are not connected"); + return; + } + msg = strchr(arg, ' '); if (!msg) len = strlen(arg); @@ -475,6 +485,12 @@ static void do_add(char *arg) { char *id, *nick; + + if (!jb_getonline()) { + scr_LogPrint(LPRINT_NORMAL, "You are not connected"); + return; + } + if (!arg || (!*arg)) { scr_LogPrint(LPRINT_NORMAL, "Wrong usage"); return; @@ -928,6 +944,11 @@ static void do_rawxml(char *arg) { + if (!jb_getonline()) { + scr_LogPrint(LPRINT_NORMAL, "You are not connected"); + return; + } + if (!strncasecmp(arg, "send ", 5)) { gchar *buffer; for (arg += 5; *arg && *arg == ' '; arg++) @@ -950,6 +971,11 @@ { gpointer bud; + if (!jb_getonline()) { + scr_LogPrint(LPRINT_NORMAL, "You are not connected"); + return; + } + if (!arg || (!*arg)) { scr_LogPrint(LPRINT_NORMAL, "Missing parameter"); return; diff -r 82a27508fb85 -r 75442262c082 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Sun Oct 02 10:57:09 2005 +0200 +++ b/mcabber/src/jabglue.c Sun Oct 02 18:05:34 2005 +0200 @@ -43,7 +43,7 @@ static int s_id; static int regmode, regdone; static enum imstatus mystatus = offline; -unsigned char online; +static unsigned char online; char imstatus2char[imstatus_size+1] = { '_', 'o', 'i', 'f', 'd', 'n', 'a', '\0' @@ -120,6 +120,11 @@ return jid; } +inline unsigned char jb_getonline(void) +{ + return online; +} + jconn jb_connect(const char *jid, const char *server, unsigned int port, int ssl, const char *pass) { @@ -340,6 +345,8 @@ gchar *strtype; gchar *buffer = to_utf8(text); + if (!online) return; + if (type == ROSTER_TYPE_ROOM) strtype = TMSG_GROUPCHAT; else @@ -477,7 +484,8 @@ xmlnode x, y; gchar *roomid, *utf8_nickname; - if (!online || !room || !nickname) return; + if (!online || !room) return; + if (!nickname) return; utf8_nickname = to_utf8(nickname); roomid = g_strdup_printf("%s/%s", room, utf8_nickname); @@ -508,8 +516,7 @@ { xmlnode x, y, z; - if (!online) return; - if (!room) return; + if (!online || !room) return; x = jutil_iqnew(JPACKET__SET, "http://jabber.org/protocol/muc#owner"); xmlnode_put_attrib(x, "id", "unlock1"); // XXX diff -r 82a27508fb85 -r 75442262c082 mcabber/src/jabglue.h --- a/mcabber/src/jabglue.h Sun Oct 02 10:57:09 2005 +0200 +++ b/mcabber/src/jabglue.h Sun Oct 02 18:05:34 2005 +0200 @@ -40,6 +40,7 @@ const char *resource); jconn jb_connect(const char *jid, const char *server, unsigned int port, int ssl, const char *pass); +inline unsigned char jb_getonline(void); void jb_disconnect(void); void jb_main(); void jb_addbuddy(const char *jid, const char *name, const char *group);