/// <summary> /// Parses parameters from specified reader. Reader position must be where parameters begin. /// </summary> /// <param name="reader">Reader from where to read parameters.</param> /// <exception cref="SIP_ParseException">Raised when invalid SIP message.</exception> protected void ParseParameters(StringReader reader) { // Remove all old parameters. m_pParameters.Clear(); // Parse parameters while (reader.Available > 0) { reader.ReadToFirstChar(); // We have parameter if (reader.SourceString.StartsWith(";")) { reader.ReadSpecifiedLength(1); string paramString = reader.QuotedReadToDelimiter(new char[] { ';', ',' }, false); if (paramString != "") { string[] name_value = paramString.Split(new char[] { '=' }, 2); if (name_value.Length == 2) { this.Parameters.Add(name_value[0], TextUtils.UnQuoteString(name_value[1])); } else { this.Parameters.Add(name_value[0], null); } } } // Next value else if (reader.SourceString.StartsWith(",")) { break; } // Unknown data else { throw new SIP_ParseException("Unexpected value '" + reader.SourceString + "' !"); } } }