diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-11-12 15:04:27 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-11-12 15:04:27 +0100 |
commit | be929dbe2dffa82ca1f91538f56a1bb0490000bd (patch) | |
tree | bb51b76662ce49aab71af132487c28d8c664b3f0 | |
parent | 5ddca2604f03fc33a427ebd6e49fda7d6967f993 (diff) | |
download | fastd-be929dbe2dffa82ca1f91538f56a1bb0490000bd.tar fastd-be929dbe2dffa82ca1f91538f56a1bb0490000bd.zip |
Use peer specifier from log instead of the peer name for the status output
This fixes a crash when status sockets are used with peers without names, but
the JSON output format is changed: named peers will now use "<name>" as key
instead of "name".
-rw-r--r-- | src/log.c | 4 | ||||
-rw-r--r-- | src/log.h | 1 | ||||
-rw-r--r-- | src/status.c | 5 |
3 files changed, 7 insertions, 3 deletions
@@ -92,7 +92,7 @@ size_t fastd_snprint_peer_address(char *buffer, size_t size, const fastd_peer_ad } /** Creates a string representation of a peer */ -static size_t snprint_peer_str(char *buffer, size_t size, const fastd_peer_t *peer) { +size_t fastd_snprint_peer_str(char *buffer, size_t size, const fastd_peer_t *peer) { if (peer) { if (peer->name) { return snprintf_safe(buffer, size, "<%s>", peer->name); @@ -168,7 +168,7 @@ static int fastd_vsnprintf(char *buffer, size_t size, const char *format, va_lis break; case 'P': - buffer += snprint_peer_str(buffer, buffer_end-buffer, va_arg(ap, const fastd_peer_t *)); + buffer += fastd_snprint_peer_str(buffer, buffer_end-buffer, va_arg(ap, const fastd_peer_t *)); break; case 'I': @@ -54,6 +54,7 @@ typedef enum fastd_loglevel { size_t fastd_snprint_peer_address(char *buffer, size_t size, const fastd_peer_address_t *address, const char *iface, bool bind_address, bool hide); +size_t fastd_snprint_peer_str(char *buffer, size_t size, const fastd_peer_t *peer); void fastd_logf(const fastd_loglevel_t level, const char *format, ...); diff --git a/src/status.c b/src/status.c index 8e0c427..36a38b6 100644 --- a/src/status.c +++ b/src/status.c @@ -174,7 +174,10 @@ static void dump_status(int fd) { if (!fastd_peer_is_enabled(peer)) continue; - json_object_object_add(peers, peer->name, dump_peer(peer)); + char name[1024]; + fastd_snprint_peer_str(name, sizeof(name), peer); + + json_object_object_add(peers, name, dump_peer(peer)); } |