X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccore%2Fsilcpayload.c;h=dc2ad30f998423cd8025494e4204c4122db0b64b;hb=5a014c54d33edcca7c15a2c88b1f4a916a6a99b8;hp=294ebac8356d6581dd9c4b160e338e926df417c3;hpb=97d6f634fc88ab129e07253314bb7e8cd4e59e42;p=silc.git diff --git a/lib/silccore/silcpayload.c b/lib/silccore/silcpayload.c index 294ebac8..dc2ad30f 100644 --- a/lib/silccore/silcpayload.c +++ b/lib/silccore/silcpayload.c @@ -161,22 +161,30 @@ SilcBuffer silc_id_payload_encode(void *id, SilcIdType type) unsigned char *id_data; uint32 len; + id_data = silc_id_id2str(id, type); + len = silc_id_get_len(id, type); + buffer = silc_id_payload_encode_data((const unsigned char *)id_data, + len, type); + silc_free(id_data); + return buffer; +} + +SilcBuffer silc_id_payload_encode_data(const unsigned char *id, + uint32 id_len, SilcIdType type) +{ + SilcBuffer buffer; + SILC_LOG_DEBUG(("Encoding %s ID payload", type == SILC_ID_CLIENT ? "Client" : type == SILC_ID_SERVER ? "Server" : "Channel")); - id_data = silc_id_id2str(id, type); - len = silc_id_get_len(id, type); - - buffer = silc_buffer_alloc(4 + len); + buffer = silc_buffer_alloc(4 + id_len); silc_buffer_pull_tail(buffer, SILC_BUFFER_END(buffer)); silc_buffer_format(buffer, SILC_STR_UI_SHORT(type), - SILC_STR_UI_SHORT(len), - SILC_STR_UI_XNSTRING(id_data, len), + SILC_STR_UI_SHORT(id_len), + SILC_STR_UI_XNSTRING(id, id_len), SILC_STR_END); - silc_free(id_data); - return buffer; }