From 606237606dc0f3db78503dc7fb6de31693bf5a6f Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Fri, 18 Sep 2020 17:57:34 -0500 Subject: [PATCH] Move APRS-IS connection code to aprs_is_connect() Move APRS-IS connection code to aprs_is_connect() in src/aprs_is.c --- src/aprs_is.c | 47 +++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/aprs_is.c b/src/aprs_is.c index 4e6b589..b4636f1 100644 --- a/src/aprs_is.c +++ b/src/aprs_is.c @@ -89,9 +89,8 @@ error_send_va: return -1; } -patty_ax25_aprs_is *patty_ax25_aprs_is_new(patty_ax25_aprs_is_info *info) { - patty_ax25_aprs_is *aprs; - +static int aprs_is_connect(patty_ax25_aprs_is *aprs, + patty_ax25_aprs_is_info *info) { struct addrinfo *ai0, *ai; @@ -99,17 +98,6 @@ patty_ax25_aprs_is *patty_ax25_aprs_is_new(patty_ax25_aprs_is_info *info) { goto error_getaddrinfo; } - if ((aprs = malloc(sizeof(*aprs))) == NULL) { - goto error_malloc_aprs; - } - - memset(aprs, '\0', sizeof(*aprs)); - - aprs->rx_bufsz = PATTY_AX25_APRS_IS_PACKET_MAX; - aprs->tx_bufsz = PATTY_AX25_APRS_IS_FRAME_MAX; - aprs->infosz = PATTY_AX25_APRS_IS_PAYLOAD_MAX; - aprs->state = APRS_IS_HEADER; - for (ai=ai0; ai; ai=ai->ai_next) { if ((aprs->fd = socket(ai->ai_family, ai->ai_socktype, @@ -135,15 +123,42 @@ patty_ax25_aprs_is *patty_ax25_aprs_is_new(patty_ax25_aprs_is_info *info) { goto error_send_fmt; } - return aprs; + return 0; } error_send_fmt: close(aprs->fd); + +error_getaddrinfo: + return -1; +} + +patty_ax25_aprs_is *patty_ax25_aprs_is_new(patty_ax25_aprs_is_info *info) { + patty_ax25_aprs_is *aprs; + + if ((aprs = malloc(sizeof(*aprs))) == NULL) { + goto error_malloc_aprs; + } + + memset(aprs, '\0', sizeof(*aprs)); + + aprs->rx_bufsz = PATTY_AX25_APRS_IS_PACKET_MAX; + aprs->tx_bufsz = PATTY_AX25_APRS_IS_FRAME_MAX; + aprs->infosz = PATTY_AX25_APRS_IS_PAYLOAD_MAX; + aprs->state = APRS_IS_HEADER; + + if (aprs_is_connect(aprs, info) < 0) { + goto error_connect; + } + + return aprs; + +error_connect: + close(aprs->fd); + free(aprs); error_malloc_aprs: -error_getaddrinfo: return NULL; }