Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2002 - 2004, 2006 Pekka Riikonen
+ Copyright (C) 2002 - 2007 Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
SilcAttributePayload attr = context;
SilcAttrForeach *f = user_context;
const unsigned char *data;
+ unsigned char tmp[32];
SilcUInt32 data_len;
if (!context) {
SILC_LOG_DEBUG(("Attribute %d found", attribute));
data = silc_attribute_get_data(attr, &data_len);
-#if 0
/* We replace the TIMEZONE with valid value here */
if (attribute == SILC_ATTRIBUTE_TIMEZONE) {
- data = (const unsigned char *)silc_get_time(0);
- data_len = strlen(data);
- f->buffer = silc_attribute_payload_encode(f->buffer, attribute,
- SILC_ATTRIBUTE_FLAG_VALID,
- (void *)data, data_len);
+ if (silc_timezone(tmp, sizeof(tmp))) {
+ data = tmp;
+ data_len = strlen(tmp);
+ f->buffer = silc_attribute_payload_encode(f->buffer, attribute,
+ SILC_ATTRIBUTE_FLAG_VALID,
+ (void *)data, data_len);
+ }
return;
}
-#endif
f->buffer = silc_attribute_payload_encode_data(f->buffer, attribute,
SILC_ATTRIBUTE_FLAG_VALID,
/* If nothing is set by application assume that we don't want to use
attributes, ignore the request. */
- if (!conn->internal->attrs)
+ if (!conn->internal->attrs) {
+ SILC_LOG_DEBUG(("User has not set any attributes"));
return NULL;
+ }
/* Always put our public key. */
pk.type = "silc-rsa";
/* Finally compute the digital signature of all the data we provided. */
if (silc_pkcs_sign(conn->private_key, silc_buffer_data(buffer),
silc_buffer_len(buffer), sign, sizeof(sign), &sign_len,
- conn->internal->sha1hash)) {
+ TRUE, conn->internal->sha1hash)) {
pk.type = NULL;
pk.data = sign;
pk.data_len = sign_len;
if (!conn->internal->attrs)
conn->internal->attrs =
- silc_hash_table_alloc(0, silc_hash_ptr, NULL, NULL,
+ silc_hash_table_alloc(NULL, 0, silc_hash_ptr, NULL, NULL,
NULL, silc_client_attribute_destruct,
NULL, TRUE);
silc_hash_table_add(conn->internal->attrs,
/* Delete one attribute */
SilcBool silc_client_attribute_del(SilcClient client,
- SilcClientConnection conn,
- SilcAttribute attribute,
- SilcAttributePayload attr)
+ SilcClientConnection conn,
+ SilcAttribute attribute,
+ SilcAttributePayload attr)
{
SilcBool ret;
if (!attribute)
return silc_client_attributes_request(SILC_ATTRIBUTE_USER_INFO,
+ SILC_ATTRIBUTE_USER_ICON,
SILC_ATTRIBUTE_SERVICE,
SILC_ATTRIBUTE_STATUS_MOOD,
SILC_ATTRIBUTE_STATUS_FREETEXT,