]> andersk Git - libfaim.git/blobdiff - aim_snac.c
- Fri Dec 15 20:41:15 UTC 2000
[libfaim.git] / aim_snac.c
index dd878499403d9bf35399c93b4e222ff3b2181f97..ae46e47ed28b1af41fb51206c4439ca5ff611774 100644 (file)
@@ -18,7 +18,7 @@
 /*
  * Called from aim_session_init() to initialize the hash.
  */
-void aim_initsnachash(struct aim_session_t *sess)
+faim_internal void aim_initsnachash(struct aim_session_t *sess)
 {
   int i;
 
@@ -30,12 +30,31 @@ void aim_initsnachash(struct aim_session_t *sess)
   return;
 }
 
+faim_internal unsigned long aim_cachesnac(struct aim_session_t *sess,
+                                         const unsigned short family,
+                                         const unsigned short type,
+                                         const unsigned short flags,
+                                         const void *data, const int datalen)
+{
+  struct aim_snac_t snac;
+
+  snac.id = sess->snac_nextid++;
+  snac.family = family;
+  snac.type = type;
+  snac.flags = flags;
+
+  snac.data = malloc(datalen);
+  memcpy(snac.data, data, datalen);
+
+  return aim_newsnac(sess, &snac);
+}
+
 /*
  * Clones the passed snac structure and caches it in the
  * list/hash.
  */
-u_long aim_newsnac(struct aim_session_t *sess,
-                  struct aim_snac_t *newsnac) 
+faim_internal unsigned long aim_newsnac(struct aim_session_t *sess,
+                                       struct aim_snac_t *newsnac) 
 {
   struct aim_snac_t *snac = NULL;
   int index;
@@ -56,8 +75,6 @@ u_long aim_newsnac(struct aim_session_t *sess,
   sess->snac_hash[index] = snac;
   faim_mutex_unlock(&sess->snac_hash_locks[index]);
 
-  printf("faim: cached snac %lx\n", snac->id);
-
   return(snac->id);
 }
 
@@ -68,8 +85,8 @@ u_long aim_newsnac(struct aim_session_t *sess,
  * The returned structure must be freed by the caller.
  *
  */
-struct aim_snac_t *aim_remsnac(struct aim_session_t *sess, 
-                              u_long id) 
+faim_internal struct aim_snac_t *aim_remsnac(struct aim_session_t *sess, 
+                                            u_long id) 
 {
   struct aim_snac_t *cur = NULL;
   int index;
@@ -108,14 +125,15 @@ struct aim_snac_t *aim_remsnac(struct aim_session_t *sess,
  * maxage is the _minimum_ age in seconds to keep SNACs.
  *
  */
-int aim_cleansnacs(struct aim_session_t *sess,
-                  int maxage)
+faim_internal int aim_cleansnacs(struct aim_session_t *sess,
+                                int maxage)
 {
-  struct aim_snac_t *cur, *next, *prev = NULL;
-  time_t curtime;
   int i;
 
   for (i = 0; i < FAIM_SNAC_HASH_SIZE; i++) {
+    struct aim_snac_t *cur = NULL, *next = NULL, *prev = NULL;
+    time_t curtime;
+
     faim_mutex_lock(&sess->snac_hash_locks[i]);
     if (!sess->snac_hash[i]) {
       faim_mutex_unlock(&sess->snac_hash_locks[i]);
@@ -133,8 +151,6 @@ int aim_cleansnacs(struct aim_session_t *sess,
        else
          prev->next = next;
 
-       printf("faim: killing ancient snac %lx (%lx)\n", cur->id, curtime - cur->issuetime);
-       
        /* XXX should we have destructors here? */
        if (cur->data)
          free(cur->data);
@@ -152,7 +168,7 @@ int aim_cleansnacs(struct aim_session_t *sess,
   return 0;
 }
 
-int aim_putsnac(u_char *buf, int family, int subtype, int flags, u_long snacid)
+faim_internal int aim_putsnac(u_char *buf, int family, int subtype, int flags, u_long snacid)
 {
   int curbyte = 0;
   curbyte += aimutil_put16(buf+curbyte, (u_short)(family&0xffff));
This page took 0.036862 seconds and 4 git commands to generate.