+faim_internal struct aim_msgcookie_t *aim_mkcookie(unsigned char *c, int type, void *data)
+{
+ struct aim_msgcookie_t *cookie;
+
+ if(!c)
+ return(NULL);
+
+ if( (cookie = calloc(1, sizeof(struct aim_msgcookie_t))) == NULL)
+ return(NULL);
+
+ cookie->data = data;
+
+ cookie->type = type;
+
+ memcpy(cookie->cookie, c, 8);
+
+ return(cookie);
+}
+
+faim_internal struct aim_msgcookie_t *aim_checkcookie(struct aim_session_t *sess, unsigned char *cookie, int type)
+{
+ struct aim_msgcookie_t *cur;
+
+ if(!sess->msgcookies)
+ return NULL;
+
+ cur = sess->msgcookies;
+
+ if( (memcmp(cur->cookie, cookie, 8) == 0) && (cur->type == type))
+ return(cur);
+
+ while( (cur = cur->next) )
+ if( (memcmp(cur->cookie, cookie, 8) == 0) && (cur->type == type))
+ return(cur);
+
+ return(NULL);
+}
+
+static int aim_freecookie(struct aim_msgcookie_t *cookie) {
+ return(0);
+}
+
+faim_internal int aim_msgcookie_gettype(int reqclass) {
+ /* XXX: hokey-assed. needs fixed. */
+ switch(reqclass) {
+ case AIM_CAPS_BUDDYICON:
+ return AIM_COOKIETYPE_OFTICON;
+ break;
+ case AIM_CAPS_VOICE:
+ return AIM_COOKIETYPE_OFTVOICE;
+ break;
+ case AIM_CAPS_IMIMAGE:
+ return AIM_COOKIETYPE_OFTIMAGE;
+ break;
+ case AIM_CAPS_CHAT:
+ return AIM_COOKIETYPE_CHAT;
+ break;
+ case AIM_CAPS_GETFILE:
+ return AIM_COOKIETYPE_OFTGET;
+ break;
+ case AIM_CAPS_SENDFILE:
+ return AIM_COOKIETYPE_OFTSEND;
+ break;
+ default:
+ return AIM_COOKIETYPE_UNKNOWN;
+ break;
+ }
+}