]> andersk Git - libfaim.git/commitdiff
- Fri Sep 7 19:59:43 PDT 2001
authormid <mid>
Sat, 8 Sep 2001 03:11:47 +0000 (03:11 +0000)
committermid <mid>
Sat, 8 Sep 2001 03:11:47 +0000 (03:11 +0000)
  - Fix buddyicons. Yay! (checksums are 32bits all the time. duh.)

CHANGES
include/aim.h
src/im.c
utils/faimtest/faimtest.c

diff --git a/CHANGES b/CHANGES
index 7506427dd8053bf8a16a633f9c8feee770df770b..10bfd15cf6feff5abce322ad753c63bdd0f8da7d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
 
 No release numbers
 ------------------
+ - Fri Sep  7 19:59:43 PDT 2001
+  - Fix buddyicons. Yay! (checksums are 32bits all the time. duh.)
+
  - Mon Sep  3 18:48:26 PDT 2001
   - Reformat everything to use real tabs (and to my latest coding style)
   - Abstract out the numerical data types to fu8/16/32_t for portability.
index a12b95c91fdb47aa5b899a0345d84d300a97afe9..fc125fa58ca1cc2068d5add9effae74d3eac2305 100644 (file)
@@ -702,10 +702,10 @@ struct aim_incomingim_ch2_args {
        unsigned short status;
        union {
                struct {
-                       unsigned long checksum;
-                       unsigned int length;
+                       fu32_t checksum;
+                       fu32_t length;
                        time_t timestamp;
-                       unsigned char *icon;
+                       fu8_t *icon;
                } icon;
                struct {
                } voice;
@@ -727,8 +727,8 @@ struct aim_incomingim_ch2_args {
 
 faim_export int aim_send_im_ext(aim_session_t *sess, aim_conn_t *conn, struct aim_sendimext_args *args);
 faim_export int aim_send_im(aim_session_t *, aim_conn_t *, const char *destsn, unsigned short flags, const char *msg);
-faim_export int aim_send_icon(aim_session_t *sess, aim_conn_t *conn, const char *sn, const unsigned char *icon, int iconlen, time_t stamp, unsigned short iconsum);
-faim_export unsigned short aim_iconsum(const unsigned char *buf, int buflen);
+faim_export int aim_send_icon(aim_session_t *sess, aim_conn_t *conn, const char *sn, const fu8_t *icon, int iconlen, time_t stamp, fu32_t iconsum);
+faim_export fu32_t aim_iconsum(const fu8_t *buf, int buflen);
 faim_export int aim_send_im_direct(aim_session_t *, aim_conn_t *, const char *msg);
 faim_export aim_conn_t *aim_directim_initiate(aim_session_t *, aim_conn_t *, struct aim_directim_priv *, const char *destsn);
 faim_export aim_conn_t *aim_directim_connect(aim_session_t *, aim_conn_t *, struct aim_directim_priv *);
index 6494b6d2457fef9646d5da3e6f1b1295c8974d12..c656557bc2a00f94cc3c148a81731338f2d80a3e 100644 (file)
--- a/src/im.c
+++ b/src/im.c
@@ -84,7 +84,7 @@ faim_export fu16_t aim_fingerprintclient(fu8_t *msghdr, int len)
 }
 
 /* This should be endian-safe now... but who knows... */
-faim_export fu16_t aim_iconsum(const fu8_t *buf, int buflen)
+faim_export fu32_t aim_iconsum(const fu8_t *buf, int buflen)
 {
        fu32_t sum;
        int i;
@@ -94,7 +94,7 @@ faim_export fu16_t aim_iconsum(const fu8_t *buf, int buflen)
 
        sum = ((sum & 0xffff0000) >> 16) + (sum & 0x0000ffff);
 
-       return sum & 0xffff;
+       return sum;
 }
 
 /*
@@ -260,11 +260,10 @@ faim_export int aim_send_im_ext(aim_session_t *sess, aim_conn_t *conn, struct ai
         * Set the I HAVE A REALLY PURTY ICON flag.
         */
        if (args->flags & AIM_IMFLAGS_HASICON) {
-               aimbs_put16(&fr->data, 0x0009);
+               aimbs_put16(&fr->data, 0x0008);
                aimbs_put16(&fr->data, 0x000c);
                aimbs_put32(&fr->data, args->iconlen);
-               aimbs_put16(&fr->data, 0x0001); /* XXX is this right?! */
-               aimbs_put16(&fr->data, args->iconsum);
+               aimbs_put32(&fr->data, args->iconsum);
                aimbs_put32(&fr->data, args->iconstamp);
        }
 
@@ -303,7 +302,7 @@ faim_export int aim_send_im(aim_session_t *sess, aim_conn_t *conn, const char *d
  * This is also performance sensative. (If you can believe it...)
  *
  */
-faim_export int aim_send_icon(aim_session_t *sess, aim_conn_t *conn, const char *sn, const fu8_t *icon, int iconlen, time_t stamp, fu16_t iconsum)
+faim_export int aim_send_icon(aim_session_t *sess, aim_conn_t *conn, const char *sn, const fu8_t *icon, int iconlen, time_t stamp, fu32_t iconsum)
 {
        int i;
        fu8_t ck[8];
@@ -365,8 +364,7 @@ faim_export int aim_send_icon(aim_session_t *sess, aim_conn_t *conn, const char
        /* TLV t(2711) */
        aimbs_put16(&fr->data, 0x2711);
        aimbs_put16(&fr->data, 4+4+4+iconlen+strlen(AIM_ICONIDENT));
-       aimbs_put16(&fr->data, 0x0000); /* XXX is this right?! */
-       aimbs_put16(&fr->data, iconsum);
+       aimbs_put32(&fr->data, iconsum);
        aimbs_put32(&fr->data, iconlen);
        aimbs_put32(&fr->data, stamp);
        aimbs_putraw(&fr->data, icon, iconlen);
index 2ad710b3999c479aeb06914b06996d2493cd9c87..e339f30072185319b3fc49b573180195dd1fead7 100644 (file)
@@ -1105,6 +1105,7 @@ static int faimtest_handlecmd(aim_session_t *sess, aim_conn_t *conn, struct aim_
  */
 static int faimtest_parse_incoming_im_chan1(aim_session_t *sess, aim_conn_t *conn, struct aim_userinfo_s *userinfo, va_list ap)
 {
+       struct faimtest_priv *priv = (struct faimtest_priv *)sess->aux_data;
        char *tmpstr;
        struct aim_incomingim_ch1_args *args;
        int clienttype = AIM_CLIENTTYPE_UNKNOWN;
@@ -1209,6 +1210,9 @@ static int faimtest_parse_incoming_im_chan1(aim_session_t *sess, aim_conn_t *con
 
        }
 
+       if (priv->buddyicon && (args->icbmflags & AIM_IMFLAGS_BUDDYREQ))
+               aim_send_icon(sess, conn, userinfo->sn, priv->buddyicon, priv->buddyiconlen, priv->buddyiconstamp, priv->buddyiconsum);
+
        return 1;
 }
 
@@ -1272,7 +1276,7 @@ static int faimtest_parse_incoming_im_chan2(aim_session_t *sess, aim_conn_t *con
 
        } else if (args->reqclass == AIM_CAPS_BUDDYICON) {
 
-               dvprintf("faimtest: Buddy Icon from %s, length = %u\n", userinfo->sn, args->info.icon.length);
+               dvprintf("faimtest: Buddy Icon from %s, length = %lu\n", userinfo->sn, args->info.icon.length);
 
        } else {
 
This page took 0.094978 seconds and 5 git commands to generate.