Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/oscar/im.c

    r3e1de87 rb7d3cc34  
    19961996}
    19971997
    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 light
    2025          * Er, that is to say, 8 bytes of 0's
    2026          */
    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 sn
    2039          */
    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 
    20821998static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
    20831999{
     
    20952011        else if (snac->subtype == 0x000c)
    20962012                return msgack(sess, mod, rx, snac, bs);
    2097         else if (snac->subtype == 0x0014)
    2098                 return mtn_receive(sess, mod, rx, snac, bs);
    20992013
    21002014        return 0;
Note: See TracChangeset for help on using the changeset viewer.