mcabber/src/jabglue.c
changeset 113 8ac67e951eab
parent 112 edb5591e2e64
child 114 065d8368c36b
equal deleted inserted replaced
112:edb5591e2e64 113:8ac67e951eab
    23 
    23 
    24 #include "../libjabber/jabber.h"
    24 #include "../libjabber/jabber.h"
    25 #include "jabglue.h"
    25 #include "jabglue.h"
    26 #include "roster.h"
    26 #include "roster.h"
    27 #include "screen.h"
    27 #include "screen.h"
       
    28 #include "hooks.h"
    28 #include "utils.h"
    29 #include "utils.h"
    29 
    30 
    30 #define JABBERPORT      5222
    31 #define JABBERPORT      5222
    31 #define JABBERSSLPORT   5223
    32 #define JABBERSSLPORT   5223
    32 
    33 
    66 {
    67 {
    67   screen_logger(j, io, buf);
    68   screen_logger(j, io, buf);
    68   file_logger(j, io, buf);
    69   file_logger(j, io, buf);
    69 }
    70 }
    70 
    71 
       
    72 /*
    71 static void jidsplit(const char *jid, char **user, char **host,
    73 static void jidsplit(const char *jid, char **user, char **host,
    72         char **res)
    74         char **res)
    73 {
    75 {
    74   char *tmp, *ptr;
    76   char *tmp, *ptr;
    75   tmp = strdup(jid);
    77   tmp = strdup(jid);
    87     *host = NULL;
    89     *host = NULL;
    88 
    90 
    89   *user = strdup(tmp);
    91   *user = strdup(tmp);
    90   free(tmp);
    92   free(tmp);
    91 }
    93 }
       
    94 */
    92 
    95 
    93 char *jidtodisp(const char *jid)
    96 char *jidtodisp(const char *jid)
    94 {
    97 {
    95   char *ptr;
    98   char *ptr;
    96   char *alias = strdup(jid);
    99   char *alias = strdup(jid);
   138   time(&LastPingTime);
   141   time(&LastPingTime);
   139 }
   142 }
   140 
   143 
   141 void jb_keepalive()
   144 void jb_keepalive()
   142 {
   145 {
   143   if (jc) {
   146   if (jc && online)
   144     // XXX Only if connected...
       
   145     jab_send_raw(jc, "  \t  ");
   147     jab_send_raw(jc, "  \t  ");
   146     scr_LogPrint("Sent keepalive");
       
   147   }
       
   148   jb_reset_keepalive();
   148   jb_reset_keepalive();
   149 }
   149 }
   150 
   150 
   151 void jb_set_keepalive_delay(unsigned int delay)
   151 void jb_set_keepalive_delay(unsigned int delay)
   152 {
   152 {
   363 }
   363 }
   364 
   364 
   365 void gotmessage(char *type, const char *from, const char *body,
   365 void gotmessage(char *type, const char *from, const char *body,
   366         const char *enc)
   366         const char *enc)
   367 {
   367 {
   368   char *u, *h, *r;
   368   char *jid;
   369 
   369 
   370   jidsplit(from, &u, &h, &r);
       
   371   /*
   370   /*
       
   371   //char *u, *h, *r;
       
   372   //jidsplit(from, &u, &h, &r);
   372   // Maybe we should remember the resource?
   373   // Maybe we should remember the resource?
   373   if (r)
   374   if (r)
   374     scr_LogPrint("There is an extra part in message (resource?): %s", r);
   375     scr_LogPrint("There is an extra part in message (resource?): %s", r);
       
   376   //scr_LogPrint("Msg from <%s>, type=%s", jidtodisp(from), type);
   375   */
   377   */
   376 
   378 
   377   //scr_LogPrint("Msg from <%s>, type=%s", jidtodisp(from), type);
   379   jid = jidtodisp(from);
   378   scr_WriteIncomingMessage(jidtodisp(from), body);
   380   hk_message_in(jid, 0, body);
       
   381   free(jid);
   379 }
   382 }
   380 
   383 
   381 void statehandler(jconn conn, int state)
   384 void statehandler(jconn conn, int state)
   382 {
   385 {
   383   static int previous_state = -1;
   386   static int previous_state = -1;
   652         if (type && !strcmp(type, "unavailable")) {
   655         if (type && !strcmp(type, "unavailable")) {
   653           ust = offline;
   656           ust = offline;
   654         }
   657         }
   655 
   658 
   656         r = jidtodisp(from);
   659         r = jidtodisp(from);
       
   660         /*
   657         if (ust != roster_getstatus(r))
   661         if (ust != roster_getstatus(r))
   658           scr_LogPrint("Buddy status has changed: [%c>%c] <%s>",
   662           scr_LogPrint("Buddy status has changed: [%c>%c] <%s>",
   659                   imstatus2char[roster_getstatus(r)], imstatus2char[ust], r);
   663                   imstatus2char[roster_getstatus(r)], imstatus2char[ust], r);
   660         roster_setstatus(r, ust);
   664         roster_setstatus(r, ust);
       
   665         */
       
   666         if (ust != roster_getstatus(r))
       
   667           hk_statuschange(r, 0, ust);
   661         free(r);
   668         free(r);
   662         buddylist_build();
   669         buddylist_build();
   663         scr_DrawRoster();
   670         scr_DrawRoster();
   664         /*
   671         /*
   665         if (x = xmlnode_get_tag(packet->x, "status"))
   672         if (x = xmlnode_get_tag(packet->x, "status"))