Changes in protocols/oscar/im.c [3e1de87:b7d3cc34]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/oscar/im.c
r3e1de87 rb7d3cc34 1996 1996 } 1997 1997 1998 /*1999 * Subtype 0x0014 - Send a mini typing notification (mtn) packet.2000 *2001 * This is supported by winaim5 and newer, MacAIM bleh and newer, iChat bleh and newer,2002 * and Gaim 0.60 and newer.2003 *2004 */2005 int aim_im_sendmtn(aim_session_t *sess, guint16 type1, const char *sn, guint16 type2)2006 {2007 aim_conn_t *conn;2008 aim_frame_t *fr;2009 aim_snacid_t snacid;2010 2011 if (!sess || !(conn = aim_conn_findbygroup(sess, 0x0002)))2012 return -EINVAL;2013 2014 if (!sn)2015 return -EINVAL;2016 2017 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+11+strlen(sn)+2)))2018 return -ENOMEM;2019 2020 snacid = aim_cachesnac(sess, 0x0004, 0x0014, 0x0000, NULL, 0);2021 aim_putsnac(&fr->data, 0x0004, 0x0014, 0x0000, snacid);2022 2023 /*2024 * 8 days of light2025 * Er, that is to say, 8 bytes of 0's2026 */2027 aimbs_put16(&fr->data, 0x0000);2028 aimbs_put16(&fr->data, 0x0000);2029 aimbs_put16(&fr->data, 0x0000);2030 aimbs_put16(&fr->data, 0x0000);2031 2032 /*2033 * Type 1 (should be 0x0001 for mtn)2034 */2035 aimbs_put16(&fr->data, type1);2036 2037 /*2038 * Dest sn2039 */2040 aimbs_put8(&fr->data, strlen(sn));2041 aimbs_putraw(&fr->data, sn, strlen(sn));2042 2043 /*2044 * Type 2 (should be 0x0000, 0x0001, or 0x0002 for mtn)2045 */2046 aimbs_put16(&fr->data, type2);2047 2048 aim_tx_enqueue(sess, fr);2049 2050 return 0;2051 }2052 2053 /*2054 * Subtype 0x0014 - Receive a mini typing notification (mtn) packet.2055 *2056 * This is supported by winaim5 and newer, MacAIM bleh and newer, iChat bleh and newer,2057 * and Gaim 0.60 and newer.2058 *2059 */2060 static int mtn_receive(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)2061 {2062 int ret = 0;2063 aim_rxcallback_t userfunc;2064 char *sn;2065 guint8 snlen;2066 guint16 type1, type2;2067 2068 aim_bstream_advance(bs, 8); /* Unknown - All 0's */2069 type1 = aimbs_get16(bs);2070 snlen = aimbs_get8(bs);2071 sn = aimbs_getstr(bs, snlen);2072 type2 = aimbs_get16(bs);2073 2074 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))2075 ret = userfunc(sess, rx, type1, sn, type2);2076 2077 g_free(sn);2078 2079 return ret;2080 }2081 2082 1998 static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) 2083 1999 { … … 2095 2011 else if (snac->subtype == 0x000c) 2096 2012 return msgack(sess, mod, rx, snac, bs); 2097 else if (snac->subtype == 0x0014)2098 return mtn_receive(sess, mod, rx, snac, bs);2099 2013 2100 2014 return 0;
Note: See TracChangeset
for help on using the changeset viewer.