From e57520d13cde09d575bc33bf0175b6953b915587 Mon Sep 17 00:00:00 2001 From: pk910 Date: Sun, 20 Jul 2014 23:31:07 +0200 Subject: [PATCH] [IOMultiplexerV2] added possibility to access remote and local socket addresses --- src/IOHandler/IOSockets.c | 26 ++++++++++++++++++++++++++ src/IOHandler/IOSockets.h | 3 +++ 2 files changed, 29 insertions(+) diff --git a/src/IOHandler/IOSockets.c b/src/IOHandler/IOSockets.c index c0d9310..a98dc5a 100644 --- a/src/IOHandler/IOSockets.c +++ b/src/IOHandler/IOSockets.c @@ -800,6 +800,32 @@ void iosocket_close(struct IOSocket *iosocket) { iogc_add(iosocket); } +struct IODNSAddress *iosocket_get_remote_addr(struct IOSocket *iosocket) { + struct _IOSocket *iosock = iosocket->iosocket; + if(iosock == NULL) { + iolog_trigger(IOLOG_WARNING, "called iosocket_get_remote_addr for destroyed IOSocket in %s:%d", __FILE__, __LINE__); + return NULL; + } + if(iosock->socket_flags & IOSOCKETFLAG_PENDING_DESTDNS) + return NULL; + if(!iosock->dest.addr.addresslen) + return NULL; + return &iosock->dest.addr; +} + +struct IODNSAddress *iosocket_get_local_addr(struct IOSocket *iosocket) { + struct _IOSocket *iosock = iosocket->iosocket; + if(iosock == NULL) { + iolog_trigger(IOLOG_WARNING, "called iosocket_get_local_addr for destroyed IOSocket in %s:%d", __FILE__, __LINE__); + return NULL; + } + if(iosock->socket_flags & IOSOCKETFLAG_PENDING_BINDDNS) + return NULL; + if(!iosock->bind.addr.addresslen) + return NULL; + return &iosock->bind.addr; +} + static int iosocket_try_write(struct _IOSocket *iosock) { if(!iosock->writebuf.bufpos && !(iosock->socket_flags & IOSOCKETFLAG_SSL_WRITEHS)) return 0; diff --git a/src/IOHandler/IOSockets.h b/src/IOHandler/IOSockets.h index 57bc4c7..f804fb6 100644 --- a/src/IOHandler/IOSockets.h +++ b/src/IOHandler/IOSockets.h @@ -206,5 +206,8 @@ void iosocket_send(struct IOSocket *iosocket, const char *data, size_t datalen); void iosocket_printf(struct IOSocket *iosocket, const char *text, ...); void iosocket_close(struct IOSocket *iosocket); +struct IODNSAddress *iosocket_get_remote_addr(struct IOSocket *iosocket); +struct IODNSAddress *iosocket_get_local_addr(struct IOSocket *iosocket); + #endif #endif -- 2.20.1