diff options
author | Martin Willi <martin@revosec.ch> | 2015-04-17 14:19:05 +0200 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2015-06-01 09:42:10 +0200 |
commit | 823a8a9b464140524cfb14c1af7780b00acb68eb (patch) | |
tree | ea96b9f2c3585e022b20b174c734bfb7d5df1202 /src | |
parent | b8399a2edc291a04bab7de59d1b5750f42fd8d5f (diff) | |
download | strongswan-823a8a9b464140524cfb14c1af7780b00acb68eb.tar.bz2 strongswan-823a8a9b464140524cfb14c1af7780b00acb68eb.tar.xz |
message: Show the fragmentation numbers in message stringification
Diffstat (limited to 'src')
-rw-r--r-- | src/libcharon/encoding/message.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/libcharon/encoding/message.c b/src/libcharon/encoding/message.c index e51c94691..1ee2cf81b 100644 --- a/src/libcharon/encoding/message.c +++ b/src/libcharon/encoding/message.c @@ -1411,6 +1411,42 @@ static char* get_string(private_message_t *this, char *buf, int len) len -= written; } } + if (payload->get_type(payload) == PLV1_FRAGMENT) + { + fragment_payload_t *frag; + + frag = (fragment_payload_t*)payload; + if (frag->is_last(frag)) + { + written = snprintf(pos, len, "(%u/%u)", + frag->get_number(frag), frag->get_number(frag)); + } + else + { + written = snprintf(pos, len, "(%u)", frag->get_number(frag)); + } + if (written >= len || written < 0) + { + return buf; + } + pos += written; + len -= written; + } + if (payload->get_type(payload) == PLV2_FRAGMENT) + { + encrypted_fragment_payload_t *frag; + + frag = (encrypted_fragment_payload_t*)payload; + written = snprintf(pos, len, "(%u/%u)", + frag->get_fragment_number(frag), + frag->get_total_fragments(frag)); + if (written >= len || written < 0) + { + return buf; + } + pos += written; + len -= written; + } } enumerator->destroy(enumerator); |