Back to index

citadel  8.12
Functions
xmpp_messages.c File Reference
#include "sysdep.h"
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
#include <pwd.h>
#include <errno.h>
#include <sys/types.h>
#include <time.h>
#include <sys/wait.h>
#include <string.h>
#include <limits.h>
#include <ctype.h>
#include <expat.h>
#include <libcitadel.h>
#include "citadel.h"
#include "server.h"
#include "citserver.h"
#include "support.h"
#include "config.h"
#include "internet_addressing.h"
#include "md5.h"
#include "ctdl_module.h"
#include "serv_xmpp.h"

Go to the source code of this file.

Functions

void xmpp_output_incoming_messages (void)
void xmpp_send_message (char *message_to, char *message_body)

Function Documentation

Definition at line 65 of file xmpp_messages.c.

                                         {

       struct ExpressMessage *ptr;
       char xmlbuf1[4096];
       char xmlbuf2[4096];

       while (CC->FirstExpressMessage != NULL) {

              begin_critical_section(S_SESSION_TABLE);
              ptr = CC->FirstExpressMessage;
              CC->FirstExpressMessage = CC->FirstExpressMessage->next;
              end_critical_section(S_SESSION_TABLE);

              cprintf("<message to=\"%s\" from=\"%s\" type=\"chat\">",
                     xmlesc(xmlbuf1, XMPP->client_jid, sizeof xmlbuf1),
                     xmlesc(xmlbuf2, ptr->sender_email, sizeof xmlbuf2)
              );
              if (ptr->text != NULL) {
                     striplt(ptr->text);
                     cprintf("<body>%s</body>", xmlesc(xmlbuf1, ptr->text, sizeof xmlbuf1));
                     free(ptr->text);
              }
              cprintf("</message>");
              free(ptr);
       }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void xmpp_send_message ( char *  message_to,
char *  message_body 
)

Definition at line 95 of file xmpp_messages.c.

                                                             {
       char *recp = NULL;
       struct CitContext *cptr;

       if (message_body == NULL) return;
       if (message_to == NULL) return;
       if (IsEmptyStr(message_to)) return;
       if (!CC->logged_in) return;

       for (cptr = ContextList; cptr != NULL; cptr = cptr->next) {
              if (   (cptr->logged_in)
                     && (cptr->can_receive_im)
                     && (!strcasecmp(cptr->cs_inet_email, message_to))
              ) {
                     recp = cptr->user.fullname;
              }
       }

       if (recp) {
              PerformXmsgHooks(CC->user.fullname, CC->cs_inet_email, recp, message_body);
       }

       free(XMPP->message_body);
       XMPP->message_body = NULL;
       XMPP->message_to[0] = 0;
       time(&CC->lastidle);
}

Here is the call graph for this function:

Here is the caller graph for this function: