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";
char *remote_host, int port,
SilcClientConnectCallback callback,
void *context);
+SilcBuffer silc_client_attributes_process(SilcClient client,
+ SilcClientConnection conn,
+ SilcDList attrs);
#endif /* CLIENT_INTERNAL_H */
SilcCommandPayload payload,
SilcArgumentPayload args)
{
-#if 0
SilcDList attrs;
unsigned char *tmp;
SilcUInt32 tmp_len;
return;
}
- /* Send the attributes back */
+ /* Send the attributes back in COMMAND_REPLY packet */
packet =
silc_command_reply_payload_encode_va(SILC_COMMAND_WHOIS,
SILC_STATUS_OK, 0,
silc_command_get_ident(payload),
- 1, 11, buffer->data, buffer->len);
- silc_client_packet_send(client, sock, SILC_PACKET_COMMAND_REPLY,
- NULL, 0, NULL, NULL, packet->data,
- packet->len, TRUE);
+ 1, 11, buffer->data,
+ silc_buffer_len(buffer));
+ if (!packet) {
+ silc_buffer_free(buffer);
+ return;
+ }
+
+ SILC_LOG_DEBUG(("Sending back requested WHOIS attributes"));
+
+ silc_packet_send(conn->stream, SILC_PACKET_COMMAND_REPLY, 0,
+ silc_buffer_datalen(packet));
+
silc_buffer_free(packet);
silc_buffer_free(buffer);
-#endif /* 0 */
}
/* Client is able to receive some command packets even though they are