Added silc_packet_engine_free_streams_list.
authorPekka Riikonen <priikone@silcnet.org>
Sun, 24 Jun 2007 14:16:01 +0000 (14:16 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sun, 24 Jun 2007 14:16:01 +0000 (14:16 +0000)
lib/silccore/silcpacket.c
lib/silccore/silcpacket.h

index 17f0a9e4fe98b2c5bb466ff1e710ebcf61ec9c66..cbf55bb8bc80aa5a7fa5fa4f3252b995b8a72cea 100644 (file)
@@ -638,7 +638,7 @@ static const char *packet_error[] = {
 const char *silc_packet_error_string(SilcPacketError error)
 {
   if (error < SILC_PACKET_ERR_READ || error > SILC_PACKET_ERR_NO_MEMORY)
-    return "";
+    return "<invalid error code>";
   return packet_error[error];
 }
 
@@ -655,13 +655,28 @@ SilcDList silc_packet_engine_get_streams(SilcPacketEngine engine)
 
   silc_mutex_lock(engine->lock);
   silc_list_start(engine->streams);
-  while ((ps = silc_list_get(engine->streams)))
+  while ((ps = silc_list_get(engine->streams))) {
+    silc_packet_stream_ref(ps);
     silc_dlist_add(list, ps);
+  }
   silc_mutex_unlock(engine->lock);
 
   return list;
 }
 
+/* Free list returned by silc_packet_engine_get_streams */
+
+void silc_packet_engine_free_streams_list(SilcDList streams)
+{
+  SilcPacketStream ps;
+
+  silc_dlist_start(streams);
+  while ((ps = silc_dlist_get(streams)))
+    silc_packet_stream_unref(ps);
+
+  silc_dlist_uninit(streams);
+}
+
 /* Create new packet stream */
 
 SilcPacketStream silc_packet_stream_create(SilcPacketEngine engine,
index 5eae06aa918fed9cddcce438b590674f6c587721..fc66439dccc0f3d98caf333265defdb26c1e5e8d 100644 (file)
@@ -400,11 +400,24 @@ const char *silc_packet_error_string(SilcPacketError error);
  * DESCRIPTION
  *
  *    Returns list of packet streams added to the packet engine.  The caller
- *    must free the list with silc_dlist_uninit.
+ *    must free the list with silc_packet_engine_free_streams_list.
  *
  ***/
 SilcDList silc_packet_engine_get_streams(SilcPacketEngine engine);
 
+/****f* silccore/SilcPacketAPI/silc_packet_engine_free_streams_list
+ *
+ * SYNOPSIS
+ *
+ *    void silc_packet_engine_free_streams_list(SilcDList streams);
+ *
+ * DESCRIPTION
+ *
+ *    Free's the streams list returned by silc_packet_engine_get_streams.
+ *
+ ***/
+void silc_packet_engine_free_streams_list(SilcDList streams);
+
 /****f* silccore/SilcPacketAPI/silc_packet_stream_create
  *
  * SYNOPSIS