char sasl_auth_mech[32]; /* SASL auth mechanism requested by the client */
- char message_to[256];
char *message_body; /* Message body in transit */
int html_tag_level; /* <html> tag nesting level */
void xmpp_process_events(void);
void xmpp_presence_notify(char *, int);
void xmpp_roster_item(struct CitContext *);
-void xmpp_send_message(char *, char *);
+void xmpp_send_message(StrBuf *, char *);
void xmpp_non_sasl_authenticate(StrBuf *IQ_id, char *, char *, char *);
void xmpp_massacre_roster(void);
void xmpp_delete_old_buddies_who_no_longer_exist_from_the_client_roster(void);
/*
* Client is sending a message.
*/
-void xmpp_send_message(char *message_to, char *message_body) {
+void xmpp_send_message(StrBuf *message_to, char *message_body) {
struct CitContext *CCC = CC;
char *recp = NULL;
struct CitContext *cptr;
if (message_body == NULL) return;
if (message_to == NULL) return;
- if (IsEmptyStr(message_to)) return;
+ if (StrLength(message_to) == 0) return;
if (!CCC->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))
+ && (!strcasecmp(cptr->cs_inet_email, ChrPtr(message_to)))
) {
recp = cptr->user.fullname;
}
free(XMPP->message_body);
XMPP->message_body = NULL;
- XMPP->message_to[0] = 0;
time(&CCC->lastidle);
}
void xmpp_end_message(void *data, const char *supplied_el, const char **attr)
{
- xmpp_send_message(XMPP->message_to, XMPP->message_body);
+ xmpp_send_message(XMPP->Message.to, XMPP->message_body);
XMPP->html_tag_level = 0;
}
*/
void xmpp_indicate_presence(char *presence_jid)
{
- XPrint(HKEY("presence"),
+ XPrint(HKEY("presence"), XCLOSED,
XPROPERTY("from", presence_jid, strlen(presence_jid)),
XPROPERTY("to", XMPP->client_jid, strlen(XMPP->client_jid)),
TYPE_ARGEND);
XPrint(HKEY("item"), 0,
XCPROPERTY("subscription", "both"),
- XPROPERTY("jid", CCC->cs_inet_email, strlen(CCC->cs_inet_email)),
+ XPROPERTY("jid", cptr->cs_inet_email, strlen(cptr->cs_inet_email)),
XPROPERTY("name", cptr->user.fullname, strlen(cptr->user.fullname)),
TYPE_ARGEND);
{
int supported_namespace = 0;
int roster_query = 0;
- const char *TypeStr;
- long TLen;
- ConstStr Type[] = {
+ static const ConstStr Type[] = {
{HKEY("result")},
{HKEY("error")}
};
* Beginning of query result.
*/
if (supported_namespace) {
- TypeStr = Type[0].Key;
- TLen = Type[0].len;
+ XPrint(HKEY("iq"), 0,
+ XPROPERTY("type", Type[0].Key, Type[0].len),
+ XSPROPERTY("to", IQ->from),
+ XSPROPERTY("id", IQ->id),
+ TYPE_ARGEND);
}
else {
- TypeStr = Type[1].Key;
- TLen = Type[1].len;
+ XPrint(HKEY("iq"), 0,
+ XPROPERTY("type", Type[1].Key, Type[1].len),
+ XSPROPERTY("id", IQ->id),
+ TYPE_ARGEND);
}
- XPrint(HKEY("iq"), 0,
- XPROPERTY("type", TypeStr, TLen),
- XSPROPERTY("to", IQ->from),
- XSPROPERTY("id", IQ->id),
- TYPE_ARGEND);
-
/*
* Is this a query we know how to handle?
*/