- ret = silc_hash_table_del_by_context(conn->attrs,
- (void *)(SilcUInt32)attribute, attr);
+ if (!conn->internal->attrs)
+ return FALSE;
+
+ if (attr) {
+ attribute = silc_attribute_get_attribute(attr);
+ ret = silc_hash_table_del_by_context(conn->internal->attrs,
+ SILC_32_TO_PTR(attribute), attr);
+ } else if (attribute) {
+ silc_hash_table_find_foreach(conn->internal->attrs,
+ SILC_32_TO_PTR(attribute),
+ silc_client_attribute_del_foreach, conn);
+ ret = TRUE;
+ } else{
+ return FALSE;
+ }