Google
  Web www.spinics.net

OpalMediaFormat::FindOption Access violation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Dear Sirs,

I have found a stable Access violation while H.323 have heavy load
(about 20 short calls per second).

I have analized the code in debugger, and there is the result:

Sometimes the function OpalMediaFormat::FindOption returns
value which is not corresponding to the passed "name" parameter.
For example, name="Needs Jitter" (bool), and the result is
"Clock Rate" (int). Then Access violation occurs.

I have found the simple solution, it isn't very correct,
but it works:


OpalMediaOption * OpalMediaFormat::FindOption(const PString & name) const
{
  PWaitAndSignal m(media_format_mutex);

  OpalMediaOptionString search(name, false);
  PINDEX index = options.GetValuesIndex(search);
  if (index == P_MAX_INDEX)
    return NULL;

// begin of Ilya fix

  OpalMediaOption * op = &options[index];

  int i = 0;

  while ((op->GetName() != name) && (i < 50))
  {

	OpalMediaOptionString search(name, false);
	PINDEX index = options.GetValuesIndex(search);
	if (index == P_MAX_INDEX)
		return NULL;

	op = &options[index];

	i++;

  }

  if (op->GetName() != name)
	  return NULL;

  return op;

// end of Ilya fix

}


--
Ilya Pleshchinskii,
Moscow,
Russia
ilya@xxxxxxxxxxxxxxx

------------------------------------------------------------------------
Check the FAQ before asking! - http://www.openh323.org/~openh323/fom.cgi
The OpenH323 Project mailing list, using Mailman. To unsubscribe or
change your subscription options, goto
http://www.openh323.org/mailman/listinfo/openh323
Maintained by Quicknet Technologies, Inc - http://www.quicknet.net
------------------------------------------------------------------------

[Open H.323]     [IETF SIP]     [Gnu Gatekeeper]     [Asterisk PBX]     [Fedora Linux]     [Gimp]     [Yosemite News]     [Yosemite Photos]     [Yosemite Campsites]     [ISDN Cause Codes]

Add to Google Powered by Linux