From f45bf65a80696689c030450031bf17d6099a154c Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo <guillaume.beraudo@belledonne-communications.com> Date: Tue, 20 Dec 2011 17:34:02 +0100 Subject: [PATCH] Stores a different payload in Rtptransport. --- coreapi/TunnelManager.cc | 22 +++++++++++----------- coreapi/TunnelManager.hh | 4 +--- oRTP | 2 +- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc index 186575c473..9d4ab7c35c 100644 --- a/coreapi/TunnelManager.cc +++ b/coreapi/TunnelManager.cc @@ -68,7 +68,7 @@ int TunnelManager::eXosipSelect(int max_fds, fd_set *s1, fd_set *s2, fd_set *s3, TunnelManager* lTunnelMgr=(TunnelManager*)userdata; if (tv!=0 && tv->tv_sec){ /*this is the select from udp.c, the one that is interesting to us*/ - unsigned int i; + int i; int udp_fd=eXosip_get_udp_socket(); int controlfd=-1; @@ -155,13 +155,13 @@ void TunnelManager::setCallback(StateCallback cb, void *userdata) { mCallbackData=userdata; } -static void sCloseRtpTransport(void *userData, RtpTransport *t){ - ((TunnelManager::TunnelManager *) userData)->closeRtpTransport(t); +static void sCloseRtpTransport(RtpTransport *t, void *userData){ + TunnelSocket *s=(TunnelSocket*)userData; + TunnelManager::TunnelManager *manager=(TunnelManager::TunnelManager*)s->getUserPointer(); + manager->closeRtpTransport(t, s); } -void TunnelManager::closeRtpTransport(RtpTransport *t){ - TunnelSocket *socket=(TunnelSocket *) t->data; - mTransports.remove(t); - mTunnelClient->closeSocket(socket); +void TunnelManager::closeRtpTransport(RtpTransport *t, TunnelSocket *s){ + mTunnelClient->closeSocket(s); ms_free(t); } @@ -170,14 +170,14 @@ static RtpTransport *sCreateRtpTransport(void* userData, int port){ } RtpTransport *TunnelManager::createRtpTransport(int port){ + TunnelSocket *socket=mTunnelClient->createSocket(port); + socket->setUserPointer(this); RtpTransport *t=ms_new0(RtpTransport,1); - t->data=mTunnelClient->createSocket(port); t->t_getsocket=NULL; t->t_recvfrom=customRecvfrom; t->t_sendto=customSendto; - t->close_fn=sCloseRtpTransport; - t->close_data=this; - mTransports.push_back(t); + t->t_close=sCloseRtpTransport; + t->data=socket; return t; } diff --git a/coreapi/TunnelManager.hh b/coreapi/TunnelManager.hh index 20bb75d3d6..b6bc46723a 100644 --- a/coreapi/TunnelManager.hh +++ b/coreapi/TunnelManager.hh @@ -115,7 +115,7 @@ class UdpMirrorClient; /** * Destroy the given RtpTransport. */ - void closeRtpTransport(RtpTransport *t); + void closeRtpTransport(RtpTransport *t, TunnelSocket *s); /** * Create an RtpTransport. @@ -128,7 +128,6 @@ class UdpMirrorClient; LinphoneCore *getLinphoneCore(); private: typedef std::list<UdpMirrorClient> UdpMirrorClientList; - typedef std::list<RtpTransport*> RtpTransportList; virtual bool isStarted(); virtual bool isReady() const; static int customSendto(struct _RtpTransport *t, mblk_t *msg , int flags, const struct sockaddr *to, socklen_t tolen); @@ -156,7 +155,6 @@ class UdpMirrorClient; void stopClient(); static Mutex sMutex; bool mAutoDetectStarted; - RtpTransportList mTransports; LinphoneRtpTransportFactories mTransportFactories; }; diff --git a/oRTP b/oRTP index 728617bf72..cb6bd1b868 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 728617bf729b7c27069dd23b95f21508b0fdd6b8 +Subproject commit cb6bd1b8684d94d473bed38dd02029bd3a48df6e -- GitLab