Hello,

can you try the attached patch? (it is for devel version). Should be a quick fix, more has to be investigated where is the right place to do it.

Cheers,
Daniel


On 07/25/07 22:02, Aymeric Moizard wrote:

Hi,

I'm facing an issue with my openser. I checked the latest SVN
code and it seems my issue is not solved even in the svn version.

My UA is sending an SDP with 2 m lines: one for audio
and one for video. In a re-INVITE, I want to disable video
and I'm sending m=video 0 RTP/AVP..

My openser is currently modifying the port number for the
video line even if it's 0 which means it's disabled...

I was not able to find a clean fix in nathelper.c and hope
to get some help for proposing one... I guess it would be
something close to:
  if (oldport==0)
     skip altering ip/port for media and continue;
but I don't want to insert any mem leak or lost session...

tks,
Aymeric MOIZARD / ANTISIP
amsip - http://www.antisip.com
osip2 - http://www.osip.org
eXosip2 - http://savannah.nongnu.org/projects/exosip/


_______________________________________________
Devel mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/devel

Index: modules/nathelper/nathelper.c
===================================================================
--- modules/nathelper/nathelper.c       (revision 2553)
+++ modules/nathelper/nathelper.c       (working copy)
@@ -2574,12 +2574,21 @@
                                newip.s = (argc < 2) ? str2 : argv[1];
                                newip.len = strlen(newip.s);
                        }
+                       /* marker to double check : newport goes: str -> int -> 
str ?!?! */
                        newport.s = int2str(port, &newport.len); /* beware 
static buffer */
                        /* Alter port. */
                        body1.s = m1p;
                        body1.len = bodylimit - body1.s;
-                       if (alter_mediaport(msg, &body1, &oldport, &newport, 0) 
== -1)
-                               return -1;
+                       /* do not do it if old port was 0 (means media disable)
+                        * - check if actually should be better done in 
rtpptoxy,
+                        *   by returning also 0
+                        * - or by not sending to rtpproxy the old port if 0
+                        */
+                       if(oldport.len!=1 || oldport.s[0]!='0')
+                       {
+                               if (alter_mediaport(msg, &body1, &oldport, 
&newport, 0) == -1)
+                                       return -1;
+                       }
                        /*
                         * Alter IP. Don't alter IP common for the session
                         * more than once.
_______________________________________________
Devel mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/devel

Reply via email to