]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
reference counting in epochs is being done using functions.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 20 Feb 2011 10:10:14 +0000 (11:10 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 20 Feb 2011 10:10:14 +0000 (11:10 +0100)
lib/gnutls_buffers.c
lib/gnutls_constate.h
lib/gnutls_dtls.c

index 4df1d57154b9bfee4bbf72f45242e3628b903ffc..9ba73c8c1f218271f3befdb16633d59881cfc82f 100644 (file)
@@ -883,7 +883,7 @@ _gnutls_handshake_io_cache_int (gnutls_session_t session,
       bufel->htype = htype;
       bufel->sequence = session->internals.dtls.hsk_write_seq-1;
 
-      params->usage_cnt++;
+      _gnutls_epoch_refcount_inc(params);
     }
   
   send_buffer =
index aa1cad8e2109a38ca31a6477114ce2715ee36744..9ec9f33b5c131380cd8e31c8bbc1a7b45448828f 100644 (file)
@@ -47,4 +47,18 @@ void _gnutls_epoch_gc (gnutls_session_t session);
 void _gnutls_epoch_free (gnutls_session_t session,
                          record_parameters_st * state);
 
+static inline void _gnutls_epoch_refcount_inc(record_parameters_st * params)
+{
+  params->usage_cnt++;
+}
+
+static inline int _gnutls_epoch_refcount_dec(record_parameters_st * params)
+{
+  params->usage_cnt--;
+  if (params->usage_cnt < 0)
+    return GNUTLS_E_INTERNAL_ERROR;
+  
+  return 0;
+}
+
 #endif
index 7c2ddfa7bf22c7e014690fdf3f67054dc8de8115..912f666df662cbdc7f125e72fa09564af1b508dd 100644 (file)
@@ -126,9 +126,10 @@ static int drop_usage_count(gnutls_session_t session)
       ret = _gnutls_epoch_get( session, cur->epoch, &params);
       if (ret < 0)
         return gnutls_assert_val(ret);
-      params->usage_cnt--;
-      if (params->usage_cnt < 0)
-        return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
+
+      ret = _gnutls_epoch_refcount_dec(params);
+      if (ret < 0)
+        return gnutls_assert_val(ret);
     }
 
   return 0;