Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/caps.c @ 1662:63ebb1d32c7d
Fix for entity capabilities hash generation.
author | Myhailo Danylenko <isbear@ukrpost.net> |
---|---|
date | Sat, 12 Dec 2009 16:23:21 +0200 |
parents | d3cd4db23f55 |
children |
comparison
equal
deleted
inserted
replaced
1661:64a7428afcb3 | 1662:63ebb1d32c7d |
---|---|
142 GChecksum *sha1; | 142 GChecksum *sha1; |
143 guint8 digest[20]; | 143 guint8 digest[20]; |
144 gsize digest_size = 20; | 144 gsize digest_size = 20; |
145 gchar *hash, *old_hash = NULL; | 145 gchar *hash, *old_hash = NULL; |
146 caps *old_caps; | 146 caps *old_caps; |
147 unsigned int i; | |
148 caps *c = g_hash_table_lookup(caps_cache, ""); | 147 caps *c = g_hash_table_lookup(caps_cache, ""); |
149 | 148 |
150 g_hash_table_steal(caps_cache, ""); | 149 g_hash_table_steal(caps_cache, ""); |
151 sha1 = g_checksum_new(G_CHECKSUM_SHA1); | 150 sha1 = g_checksum_new(G_CHECKSUM_SHA1); |
152 identity = g_strdup_printf("%s/%s/%s<", c->category, c->type, c->name); | 151 identity = g_strdup_printf("%s/%s//%s<", c->category, c->type, c->name); |
153 g_checksum_update(sha1, (guchar*)identity, -1); | 152 g_checksum_update(sha1, (guchar*)identity, -1); |
154 g_free(identity); | 153 g_free(identity); |
155 | 154 |
156 features = g_list_copy(g_hash_table_get_values(c->features)); | 155 features = g_hash_table_get_values(c->features); |
157 features = g_list_sort(features, _strcmp_sort); | 156 features = g_list_sort(features, _strcmp_sort); |
158 for (i=0; i < g_list_length(features); i++) { | 157 { |
159 g_checksum_update(sha1, g_list_nth_data(features, i), -1); | 158 GList *feature; |
160 g_checksum_update(sha1, (guchar *)"<", -1); | 159 for (feature=features; feature; feature=feature->next) { |
160 g_checksum_update(sha1, feature->data, -1); | |
161 g_checksum_update(sha1, (guchar *)"<", -1); | |
162 } | |
161 } | 163 } |
162 g_list_free(features); | 164 g_list_free(features); |
163 | 165 |
164 g_checksum_get_digest(sha1, digest, &digest_size); | 166 g_checksum_get_digest(sha1, digest, &digest_size); |
165 hash = g_base64_encode(digest, digest_size); | 167 hash = g_base64_encode(digest, digest_size); |