diff options
Diffstat (limited to 'hicn-light/src/hicn/io/tcpListener.c')
-rw-r--r-- | hicn-light/src/hicn/io/tcpListener.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/hicn-light/src/hicn/io/tcpListener.c b/hicn-light/src/hicn/io/tcpListener.c index 4464edf28..e2b80c215 100644 --- a/hicn-light/src/hicn/io/tcpListener.c +++ b/hicn-light/src/hicn/io/tcpListener.c @@ -31,7 +31,6 @@ typedef struct tcp_listener { char *listenerName; - Forwarder *forwarder; Logger *logger; @@ -49,10 +48,15 @@ typedef struct tcp_listener { static void _tcpListener_Destroy(_TcpListener **listenerPtr); static void _tcpListener_OpsDestroy(ListenerOps **listenerOpsPtr); + static const char *_tcpListener_ListenerName(const ListenerOps *ops); + static unsigned _tcpListener_OpsGetInterfaceIndex(const ListenerOps *ops); + static const Address *_tcpListener_OpsGetListenAddress(const ListenerOps *ops); + static const char *_tcpListener_InterfaceName(const ListenerOps *ops); + static EncapType _tcpListener_OpsGetEncapType(const ListenerOps *ops); static ListenerOps _tcpTemplate = { @@ -71,6 +75,7 @@ static void _tcpListener_Listen(int, struct sockaddr *, int socklen, ListenerOps *tcpListener_CreateInet6(Forwarder *forwarder, char *listenerName, struct sockaddr_in6 sin6, char *interfaceName) { + _TcpListener *tcp = parcMemory_AllocateAndClear(sizeof(_TcpListener)); parcAssertNotNull(tcp, "parcMemory_AllocateAndClear(%zu) returned NULL", sizeof(_TcpListener)); @@ -123,7 +128,10 @@ ListenerOps *tcpListener_CreateInet(Forwarder *forwarder, char *listenerName, sizeof(_TcpListener)); tcp->forwarder = forwarder; + tcp->listenerName = parcMemory_StringDuplicate(listenerName, strlen(listenerName)); tcp->logger = logger_Acquire(forwarder_GetLogger(forwarder)); + tcp->interfaceName = parcMemory_StringDuplicate(interfaceName, strlen(interfaceName)); + tcp->listener = dispatcher_CreateListener( forwarder_GetDispatcher(forwarder), _tcpListener_Listen, (void *)tcp, -1, (struct sockaddr *)&sin, sizeof(sin)); @@ -175,7 +183,6 @@ static void _tcpListener_Destroy(_TcpListener **listenerPtr) { parcMemory_Deallocate((void **)&tcp->listenerName); parcMemory_Deallocate((void **)&tcp->interfaceName); - logger_Release(&tcp->logger); dispatcher_DestroyListener(forwarder_GetDispatcher(tcp->forwarder), &tcp->listener); |