diff options
Diffstat (limited to 'protocols/msn/ns.c')
-rw-r--r-- | protocols/msn/ns.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/protocols/msn/ns.c b/protocols/msn/ns.c index 906208a7..d3fde5d1 100644 --- a/protocols/msn/ns.c +++ b/protocols/msn/ns.c @@ -723,21 +723,25 @@ int msn_ns_finish_login(struct im_connection *ic) return 1; } -// TODO: typing notifications, nudges lol, etc -int msn_ns_sendmessage(struct im_connection *ic, bee_user_t *bu, const char *text) +static int msn_ns_send_sdg(struct im_connection *ic, bee_user_t *bu, const char *message_type, const char *text) { struct msn_data *md = ic->proto_data; int retval = 0; char *buf; - if (strncmp(text, "\r\r\r", 3) == 0) { - /* Err. Shouldn't happen but I guess it can. Don't send others - any of the "SHAKE THAT THING" messages. :-D */ - return 1; - } - - buf = g_strdup_printf(MSN_MESSAGE_HEADERS, bu->handle, ic->acc->user, md->uuid, strlen(text), text); + buf = g_strdup_printf(MSN_MESSAGE_HEADERS, bu->handle, ic->acc->user, md->uuid, message_type, strlen(text), text); retval = msn_ns_write(ic, -1, "SDG %d %zd\r\n%s", ++md->trId, strlen(buf), buf); g_free(buf); return retval; } + +int msn_ns_send_typing(struct im_connection *ic, bee_user_t *bu) +{ + return msn_ns_send_sdg(ic, bu, "Control/Typing", ""); +} + +int msn_ns_send_message(struct im_connection *ic, bee_user_t *bu, const char *text) +{ + return msn_ns_send_sdg(ic, bu, "Text", text); +} + |