libfaim/msgcookie.c

Mon, 05 Mar 2001 03:59:32 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Mon, 05 Mar 2001 03:59:32 +0000
changeset 1535
b118fbab0556
permissions
-rw-r--r--

[gaim-migrate @ 1545]
libfaim updates.

1535
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 * Cookie Caching stuff. Adam wrote this, apparently just some
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 * derivatives of n's SNAC work. I cleaned it up, added comments.
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 /*
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * I'm assuming that cookies are type-specific. that is, we can have
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * "1234578" for type 1 and type 2 concurrently. if i'm wrong, then we
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 * lose some error checking. if we assume cookies are not type-specific and are
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * wrong, we get quirky behavior when cookies step on each others' toes.
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 #define FAIM_INTERNAL
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 #include <aim.h>
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 /**
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * aim_cachecookie - appends a cookie to the cookie list
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 * @sess: session to add to
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 * @cookie: pointer to struct to append
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 * if cookie->cookie for type cookie->type is found, updates the
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 * ->addtime of the found structure; otherwise adds the given cookie
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24 * to the cache
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 * returns -1 on error, 0 on append, 1 on update. the cookie you pass
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27 * in may be free'd, so don't count on its value after calling this!
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
29 */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
30 faim_internal int aim_cachecookie(struct aim_session_t *sess,
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31 struct aim_msgcookie_t *cookie)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32 {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33 struct aim_msgcookie_t *newcook;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35 if (!sess || !cookie)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36 return -1;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38 if( (newcook = aim_checkcookie(sess, cookie->cookie, cookie->type)) ) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 if(newcook != cookie) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 aim_cookie_free(sess, newcook);
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 } else {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 newcook->addtime = time(NULL);
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 return 1;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47 cookie->addtime = time(NULL);
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 cookie->next = sess->msgcookies;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 sess->msgcookies = cookie;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 return 0;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 /**
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 * aim_uncachecookie - grabs a cookie from the cookie cache (removes it from the list)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 * @sess: session to grab cookie from
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58 * @cookie: cookie string to look for
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 * @type: cookie type to look for
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
61 * takes a cookie string and a cookie type and finds the cookie struct associated with that duple, removing it from the cookie list ikn the process.
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 * if found, returns the struct; if none found (or on error), returns NULL:
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64 */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 faim_internal struct aim_msgcookie_t *aim_uncachecookie(struct aim_session_t *sess, unsigned char *cookie, int type)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67 struct aim_msgcookie_t *cur, **prev;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 if (!cookie || !sess->msgcookies)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70 return NULL;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
71
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72 for (prev = &sess->msgcookies; (cur = *prev); ) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 if ((cur->type == type) &&
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 (memcmp(cur->cookie, cookie, 8) == 0)) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 *prev = cur->next;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76 return cur;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78 prev = &cur->next;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
81 return NULL;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 /**
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 * aim_mkcookie - generate an aim_msgcookie_t *struct from a cookie string, a type, and a data pointer.
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86 * @c: pointer to the cookie string array
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87 * @type: cookie type to use
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 * @data: data to be cached with the cookie
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90 * returns NULL on error, a pointer to the newly-allocated cookie on
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 * success.
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
92 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94 faim_internal struct aim_msgcookie_t *aim_mkcookie(unsigned char *c, int type, void *data)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 struct aim_msgcookie_t *cookie;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98 if (!c)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 return NULL;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101 if (!(cookie = calloc(1, sizeof(struct aim_msgcookie_t))))
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 return NULL;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
103
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 cookie->data = data;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105 cookie->type = type;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 memcpy(cookie->cookie, c, 8);
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 return cookie;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 /**
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 * aim_checkcookie - check to see if a cookietuple has been cached
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 * @sess: session to check for the cookie in
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114 * @cookie: pointer to the cookie string array
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 * @type: type of the cookie to look for
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117 * this returns a pointer to the cookie struct (still in the list) on
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 * success; returns NULL on error/not found
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 faim_internal struct aim_msgcookie_t *aim_checkcookie(struct aim_session_t *sess,
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 const unsigned char *cookie,
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 const int type)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125 {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 struct aim_msgcookie_t *cur;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 for (cur = sess->msgcookies; cur; cur = cur->next) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 if ((cur->type == type) &&
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
130 (memcmp(cur->cookie, cookie, 8) == 0))
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
131 return cur;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 return NULL;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
136
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
137 #if 0 /* debugging feature */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138 faim_internal int aim_dumpcookie(struct aim_msgcookie_t *cookie)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
139 {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 if(!cookie)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141 return -1;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 printf("\tCookie at %p: %d/%s with %p, next %p\n", cookie, cookie->type, cookie->cookie, cookie->data, cookie->next);
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143 return 0;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 #endif
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147 /**
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
148 * aim_cookie_free - free an aim_msgcookie_t struct
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 * @sess: session to remove the cookie from
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 * @cookiep: the address of a pointer to the cookie struct to remove
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
152 * this function removes the cookie *cookie from teh list of cookies
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153 * in sess, and then frees all memory associated with it. including
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 * its data! if you want to use the private data after calling this,
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 * make sure you copy it first.
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 * returns -1 on error, 0 on success.
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 *
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161 faim_internal int aim_cookie_free(struct aim_session_t *sess,
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162 struct aim_msgcookie_t *cookie)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163 {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164 struct aim_msgcookie_t *cur, **prev;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
165
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
166 if (!sess || !cookie)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
167 return -1;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
168
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
169 if(!cookie)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
170 return 0;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
171
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
172 for (prev = &sess->msgcookies; (cur = *prev); ) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
173 if (cur == cookie) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
174 *prev = cur->next;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
175 } else
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
176 prev = &cur->next;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
177 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
178
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
179 if(cookie->data)
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
180 free(cookie->data);
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182 free(cookie);
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
183
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
184 return 0;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
186
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
187 faim_internal int aim_msgcookie_gettype(int reqclass) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
188 /* XXX: hokey-assed. needs fixed. */
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
189 switch(reqclass) {
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
190 case AIM_CAPS_BUDDYICON:
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
191 return AIM_COOKIETYPE_OFTICON;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
192 break;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
193 case AIM_CAPS_VOICE:
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
194 return AIM_COOKIETYPE_OFTVOICE;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
195 break;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
196 case AIM_CAPS_IMIMAGE:
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197 return AIM_COOKIETYPE_OFTIMAGE;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
198 break;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
199 case AIM_CAPS_CHAT:
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
200 return AIM_COOKIETYPE_CHAT;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
201 break;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
202 case AIM_CAPS_GETFILE:
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
203 return AIM_COOKIETYPE_OFTGET;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
204 break;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
205 case AIM_CAPS_SENDFILE:
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
206 return AIM_COOKIETYPE_OFTSEND;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 break;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
208 default:
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
209 return AIM_COOKIETYPE_UNKNOWN;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
210 break;
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
211 }
b118fbab0556 [gaim-migrate @ 1545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
212 }

mercurial