Mercurial > pidgin
diff libpurple/protocols/mxit/protocol.c @ 29938:4232e6b27bea
Add support for message delivery notification.
| author | andrew.victor@mxit.com |
|---|---|
| date | Thu, 13 May 2010 09:02:58 +0000 |
| parents | 1147389b5424 |
| children | 815bd8b41638 207662bad69c |
line wrap: on
line diff
--- a/libpurple/protocols/mxit/protocol.c Thu May 13 07:21:51 2010 +0000 +++ b/libpurple/protocols/mxit/protocol.c Thu May 13 09:02:58 2010 +0000 @@ -962,6 +962,31 @@ /*------------------------------------------------------------------------ + * Send a message event packet. + * + * @param session The MXit session object + * @param to The username of the original sender (ie, recipient of the event) + * @param id The identifier of the event (received in message) + * @param event Identified the type of event + */ +void mxit_send_msgevent( struct MXitSession* session, const char* to, const char* id, int event) +{ + char data[CP_MAX_PACKET]; + int datalen; + + purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_msgevent: to=%s id=%s event=%i\n", to, id, event ); + + /* convert the packet to a byte stream */ + datalen = sprintf( data, "ms=%s%c%s%c%i", /* "ms"=contactAddress \1 id \1 event */ + to, CP_FLD_TERM, id, CP_FLD_TERM, event + ); + + /* queue packet for transmission */ + mxit_queue_packet( session, data, datalen, CP_CMD_MSGEVENT ); +} + + +/*------------------------------------------------------------------------ * Send packet to create a MultiMX room. * * @param session The MXit session object @@ -1355,6 +1380,12 @@ return; } + if ( msgflags & CP_MSG_NOTIFY_DELIVERY ) { + /* delivery notification is requested */ + if ( records[0]->fcount >= 4 ) + mxit_send_msgevent( session, records[0]->fields[0]->data, records[0]->fields[3]->data, CP_MSGEVENT_DELIVERED ); + } + /* create and initialise new markup struct */ mx = g_new0( struct RXMsgData, 1 ); mx->msg = g_string_sized_new( msglen ); @@ -1917,6 +1948,8 @@ /* profile update */ case CP_CMD_SPLASHCLICK : /* splash-screen clickthrough */ + case CP_CMD_MSGEVENT : + /* event message */ break; default : @@ -2020,6 +2053,7 @@ mxit_popup( PURPLE_NOTIFY_MSG_WARNING, _( "Profile Error" ), _( errdesc ) ); break; case CP_CMD_SPLASHCLICK : + case CP_CMD_MSGEVENT : /* ignore error */ break; case CP_CMD_PING :
