diff --git a/libs/libdingaling/.update b/libs/libdingaling/.update index 020e6398ff..2ba15fe147 100644 --- a/libs/libdingaling/.update +++ b/libs/libdingaling/.update @@ -1 +1 @@ -Fri Oct 20 02:34:55 CDT 2006 +Fri Oct 20 19:58:38 CDT 2006 diff --git a/libs/libdingaling/src/libdingaling.c b/libs/libdingaling/src/libdingaling.c index 3dfa4753b9..2b4746560f 100644 --- a/libs/libdingaling/src/libdingaling.c +++ b/libs/libdingaling/src/libdingaling.c @@ -1574,11 +1574,37 @@ void ldl_handle_send_presence(ldl_handle_t *handle, char *from, char *to, char * void ldl_handle_send_msg(ldl_handle_t *handle, char *from, char *to, char *subject, char *body) { iks *msg; - + char *t, *e; + char *bdup = NULL; + int on = 0; + int len = 0; assert(handle != NULL); assert(body != NULL); + + if (strchr(body, '<')) { + len = (int) strlen(body); + if (!(bdup = malloc(len))) { + return; + } - + memset(bdup, 0, len); + + e = bdup; + for(t = body; *t; t++) { + if (*t == '<') { + on = 1; + } else if (*t == '>') { + t++; + on = 0; + } + + if (!on) { + *e++ = *t; + } + } + body = bdup; + } + msg = iks_make_msg(IKS_TYPE_NONE, to, body); iks_insert_attrib(msg, "type", "chat"); @@ -1592,6 +1618,10 @@ void ldl_handle_send_msg(ldl_handle_t *handle, char *from, char *to, char *subje iks_insert_attrib(msg, "subject", subject); } + if (bdup) { + free(bdup); + } + apr_queue_push(handle->queue, msg); }