From ecc4e721fb0b8cf065d33f4ce7f699e702f2fea9 Mon Sep 17 00:00:00 2001 From: Philipp Schafft Date: Tue, 24 Sep 2019 05:41:02 +0000 Subject: [PATCH] Update: Added igloo_error_t argument to igloo_socket_new() --- include/igloo/socket.h | 2 +- src/socket.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/igloo/socket.h b/include/igloo/socket.h index b87fcf5..a5ecd59 100644 --- a/include/igloo/socket.h +++ b/include/igloo/socket.h @@ -69,7 +69,7 @@ typedef enum { igloo_SOCKET_ENDPOINT_PEER_LOGICAL } igloo_socket_endpoint_t; -igloo_socket_t * igloo_socket_new(igloo_socketaddr_domain_t domain, igloo_socketaddr_type_t type, igloo_socketaddr_protocol_t protocol, const char *name, igloo_ro_t associated, igloo_ro_t instance); +igloo_socket_t * igloo_socket_new(igloo_socketaddr_domain_t domain, igloo_socketaddr_type_t type, igloo_socketaddr_protocol_t protocol, const char *name, igloo_ro_t associated, igloo_ro_t instance, igloo_error_t *error); igloo_socket_t * igloo_socket_new_simple(igloo_socket_endpoint_t endpoint, igloo_socketaddr_t *addr, igloo_error_t *error); igloo_error_t igloo_socket_alter_address(igloo_socket_t *sock, igloo_socket_addressop_t op, igloo_socket_endpoint_t endpoint, igloo_socketaddr_t *addr); igloo_socketaddr_t * igloo_socket_get_main_address(igloo_socket_t *sock, igloo_socket_endpoint_t endpoint, igloo_error_t *error); diff --git a/src/socket.c b/src/socket.c index 772e57d..2b474c3 100644 --- a/src/socket.c +++ b/src/socket.c @@ -263,12 +263,15 @@ static igloo_error_t __bind_or_connect(igloo_socket_t *sock, igloo_socketaddr_t } } -igloo_socket_t * igloo_socket_new(igloo_socketaddr_domain_t domain, igloo_socketaddr_type_t type, igloo_socketaddr_protocol_t protocol, const char *name, igloo_ro_t associated, igloo_ro_t instance) +igloo_socket_t * igloo_socket_new(igloo_socketaddr_domain_t domain, igloo_socketaddr_type_t type, igloo_socketaddr_protocol_t protocol, const char *name, igloo_ro_t associated, igloo_ro_t instance, igloo_error_t *error) { igloo_socket_t *sock = igloo_ro_new_raw(igloo_socket_t, name, associated, instance); - if (!sock) + if (!sock) { + if (error) + *error = igloo_ERROR_NOMEM; return NULL; + } sock->domain = domain; sock->type = type; @@ -277,6 +280,8 @@ igloo_socket_t * igloo_socket_new(igloo_socketaddr_domain_t domain, igloo_socket sock->syssock = socket(igloo_socketaddr_get_sysid_domain(domain), igloo_socketaddr_get_sysid_type(type), igloo_socketaddr_get_sysid_protocol(protocol)); if (sock->syssock == -1) { igloo_ro_unref(sock); + if (error) + *error = igloo_ERROR_GENERIC; return NULL; } @@ -298,10 +303,10 @@ igloo_socket_t * igloo_socket_new_simple(igloo_socket_endpoint_t endpoint, igloo return NULL; } - sock = igloo_socket_new(domain, type, protocol, NULL, igloo_RO_NULL, addr); + sock = igloo_socket_new(domain, type, protocol, NULL, igloo_RO_NULL, addr, &err); if (!sock) { if (error) - *error = igloo_ERROR_GENERIC; + *error = err; return NULL; }