+/* Assembler fragment destructor */
+
+static void silc_mime_assembler_dest(void *key, void *context,
+ void *user_context)
+{
+ SilcMimeFragmentId id = key;
+
+ silc_free(id->id);
+ silc_free(id);
+
+ /* Free all fragments */
+ silc_hash_table_free(context);
+}
+
+/* Assembler partial MIME fragmentn destructor */
+
+static void silc_mime_assemble_dest(void *key, void *context,
+ void *user_context)
+{
+ silc_mime_free(context);
+}
+
+/* MIME fragment ID hashing */
+
+static SilcUInt32 silc_mime_hash_id(void *key, void *user_context)
+{
+ SilcMimeFragmentId id = key;
+ return silc_hash_string_case(id->id, user_context);
+}
+
+/* MIME fragment ID comparing */
+
+static SilcBool silc_mime_id_compare(void *key1, void *key2,
+ void *user_context)
+{
+ SilcMimeFragmentId id1 = key1, id2 = key2;
+ return silc_hash_string_case_compare(id1->id, id2->id, user_context);
+}
+
+
+/******************************* Public API *********************************/
+
+/* Allocate MIME context */
+