Diff for /libaitrpc/src/lists.c between versions 1.4.2.3 and 1.5.2.1

version 1.4.2.3, 2011/09/01 11:39:26 version 1.5.2.1, 2011/11/03 13:35:39
Line 47  SUCH DAMAGE. Line 47  SUCH DAMAGE.
   
   
 /*  /*
 * rpc_srv_allocVars() Allocate array for call variables * rpc_srv_allocVars() Allocate array for call variables
                                if already allocated memory for RPC call reallocate used space 
  * @call = RPC function call   * @call = RPC function call
 * @varnum = Number of variables, if ==0 free previous allocated variables * @varnum = Number of variables, if ==0 return already allocated variables number
  * return: -1 error, !=-1 return varnum value   * return: -1 error, !=-1 return varnum value
  */   */
 inline int  inline int
Line 100  rpc_srv_destroyVars(rpc_func_t * __restrict call) Line 99  rpc_srv_destroyVars(rpc_func_t * __restrict call)
         }          }
   
         if (call->func_vars) {          if (call->func_vars) {
                rpc_srv_freeVals(call);                rpc_srv_freeVars(call);
   
                 io_arrayFree(call->func_vars);                  io_arrayFree(call->func_vars);
                 io_arrayDestroy(&call->func_vars);                  io_arrayDestroy(&call->func_vars);
Line 110  rpc_srv_destroyVars(rpc_func_t * __restrict call) Line 109  rpc_srv_destroyVars(rpc_func_t * __restrict call)
 }  }
   
 /*  /*
 * rpc_srv_freeVals() Clean values from variables of array * rpc_srv_freeVars() Clean values from variables of array
  * @call = RPC function call   * @call = RPC function call
  * return: -1 error, !=-1 Returned number of cleaned variables   * return: -1 error, !=-1 Returned number of cleaned variables
  */   */
 inline int  inline int
rpc_srv_freeVals(rpc_func_t * __restrict call)rpc_srv_freeVars(rpc_func_t * __restrict call)
 {  {
         register int i;          register int i;
   
Line 254  rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, con Line 253  rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, con
         func.func_tag = crcFletcher16((u_short*) str, sizeof str / 2);          func.func_tag = crcFletcher16((u_short*) str, sizeof str / 2);
         func.func_hash = hash_fnv((char*) str, sizeof str);          func.func_hash = hash_fnv((char*) str, sizeof str);
   
           pthread_mutex_lock(&srv->srv_mtx);
         f = rpc_srv_getCall(srv, func.func_tag, func.func_hash);          f = rpc_srv_getCall(srv, func.func_tag, func.func_hash);
         if (!f)                         /* not found element for unregister */          if (!f)                         /* not found element for unregister */
                 return 0;                  return 0;
   
        pthread_mutex_lock(&srv->srv_mtx);        if (srv->srv_funcs == f)        /* if is 1st element */
        if (srv->srv_funcs == f) {        /* if is 1st element */ 
                 srv->srv_funcs = srv->srv_funcs->func_next;                  srv->srv_funcs = srv->srv_funcs->func_next;
        else {
                if (f->func_vars) 
                        rpc_srv_destroyVars(f); 
                free(f); 
        } else { 
                 for (curr = srv->srv_funcs; curr->func_next != f; curr = curr->func_next);                  for (curr = srv->srv_funcs; curr->func_next != f; curr = curr->func_next);
                 curr->func_next = curr->func_next->func_next;                  curr->func_next = curr->func_next->func_next;
   
                 if (f->func_vars)  
                         rpc_srv_destroyVars(f);  
                 free(f);  
         }          }
           rpc_srv_destroyVars(f);
           free(f);
         pthread_mutex_unlock(&srv->srv_mtx);          pthread_mutex_unlock(&srv->srv_mtx);
   
         return 1;          return 1;
Line 353  rpc_srv_getBLOB(rpc_srv_t * __restrict srv, uint32_t v Line 346  rpc_srv_getBLOB(rpc_srv_t * __restrict srv, uint32_t v
                 return NULL;                  return NULL;
         }          }
   
         pthread_mutex_lock(&srv->srv_blob.mtx);  
         for (b = srv->srv_blob.blobs; b; b = b->blob_next) {          for (b = srv->srv_blob.blobs; b; b = b->blob_next) {
                 if (b->blob_var == var)                  if (b->blob_var == var)
                         break;                          break;
         }          }
         pthread_mutex_unlock(&srv->srv_blob.mtx);  
   
         return b;          return b;
 }  }
Line 409  rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uin Line 400  rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uin
         b = rpc_srv_getBLOB(srv, var);          b = rpc_srv_getBLOB(srv, var);
         if (!b)                         /* not found element for unregister */          if (!b)                         /* not found element for unregister */
                 return 0;                  return 0;
           /* if BLOB is unmapped force to unmap object */
           if (b->blob_data)
                   rpc_srv_blobUnmap(b);
   
         pthread_mutex_lock(&srv->srv_blob.mtx);          pthread_mutex_lock(&srv->srv_blob.mtx);
         if (srv->srv_blob.blobs == b) { /* if is 1st element */          if (srv->srv_blob.blobs == b) { /* if is 1st element */
Line 417  rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uin Line 411  rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uin
                 for (curr = srv->srv_blob.blobs; curr->blob_next != b; curr = curr->blob_next);                  for (curr = srv->srv_blob.blobs; curr->blob_next != b; curr = curr->blob_next);
                 curr->blob_next = curr->blob_next->blob_next;                  curr->blob_next = curr->blob_next->blob_next;
         }          }
           pthread_mutex_unlock(&srv->srv_blob.mtx);
         rpc_srv_blobFree(srv, b);          rpc_srv_blobFree(srv, b);
         free(b);          free(b);
         pthread_mutex_unlock(&srv->srv_blob.mtx);  
   
         return 1;          return 1;
 }  }

Removed from v.1.4.2.3  
changed lines
  Added in v.1.5.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>