src/protocols/oscar/info.c

changeset 2122
95b41c0f938e
parent 2086
007508451e2c
child 2246
8ade8b7421af
--- a/src/protocols/oscar/info.c	Fri Aug 03 18:30:46 2001 +0000
+++ b/src/protocols/oscar/info.c	Sat Aug 04 01:37:49 2001 +0000
@@ -539,20 +539,30 @@
   return 0;
 }
 
+/*
+ * Normally contains:
+ *   t(0001)  - short containing max profile length (value = 1024)
+ *   t(0002)  - short - unknown (value = 16) [max MIME type length?]
+ *   t(0003)  - short - unknown (value = 7)
+ */
 static int rights(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
 {
-  struct aim_tlvlist_t *tlvlist;
-  aim_rxcallback_t userfunc;
-  int ret = 0;
+	struct aim_tlvlist_t *tlvlist;
+	aim_rxcallback_t userfunc;
+	int ret = 0;
+	unsigned short maxsiglen = 0;
 
-  tlvlist = aim_readtlvchain(data, datalen);
+	tlvlist = aim_readtlvchain(data, datalen);
 
-  if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
-    ret = userfunc(sess, rx);
+	if (aim_gettlv(tlvlist, 0x0001, 1))
+		maxsiglen = aim_gettlv16(tlvlist, 0x0001, 1);
 
-  aim_freetlvchain(&tlvlist);
+	if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
+		ret = userfunc(sess, rx, maxsiglen);
 
-  return ret;
+	aim_freetlvchain(&tlvlist);
+
+	return ret;
 }
 
 static int userinfo(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)

mercurial