Author: verifier Date: Tue Aug 26 04:17:43 2008 New Revision: 9365 Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs Log: Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs ============================================================================== --- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs (original) +++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs Tue Aug 26 04:17:43 2008 @@ -23,9 +23,10 @@ private SofiaSipAddress _caller; private Address _destination; private readonly IList<ChannelVariable> _variables = new List<ChannelVariable>(); - private string _callerIdName = null; - private string _callerIdNumber = null; - private bool _varsAdded = false; + private string _callerIdName; + private string _callerIdNumber; + private bool _varsAdded; + private bool _autoAnswer; public Originate() {} @@ -80,6 +81,9 @@ if (!string.IsNullOrEmpty(_callerIdNumber)) _variables.Add(new ChannelVariable("origination_caller_id_number", _callerIdNumber)); _varsAdded = true; + + if (_autoAnswer) + _variables.Add(new ChannelVariable("sip_auto_answer", "true")); } string variables = string.Empty; @@ -92,20 +96,21 @@ } } + public bool AutoAnswer + { + get { return _autoAnswer; } + set { _autoAnswer = value; } + } + public override CommandReply CreateReply(string dataToParse) { string[] nameValue = dataToParse.Split(' '); if (nameValue[0].Length > 0 && nameValue[0][0] == '+') return new OriginateReply(true, nameValue[1]); - else - { - OriginateReply reply = new OriginateReply(false, string.Empty); - if (nameValue.Length > 1) - reply.ErrorMessage = nameValue[1]; - else - reply.ErrorMessage = dataToParse; - return reply; - } + + OriginateReply reply = new OriginateReply(false, string.Empty); + reply.ErrorMessage = nameValue.Length > 1 ? nameValue[1] : dataToParse; + return reply; } } Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs ============================================================================== --- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs (original) +++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs Tue Aug 26 04:17:43 2008 @@ -15,6 +15,8 @@ public event EventHandler EventReceived; private readonly EventsWriter _writer; private readonly TextWriter _rawLog; + private object _logLocker = new object(); + public string Password { set { _socket.Password = value; } @@ -47,7 +49,8 @@ private void OnData(string data) { - _writer(data); + lock (_logLocker) + _writer(data); } /// <summary> Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs ============================================================================== --- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs (original) +++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs Tue Aug 26 04:17:43 2008 @@ -61,7 +61,7 @@ private void IgnoreLineBreaks(ref int i) { - while (i < Text.Length && (Text[i] == '\n' || Text[i] == '\r')) + while (i < _text.Length && (_text[i] == '\n' || _text[i] == '\r')) ++i; } @@ -80,15 +80,15 @@ } PlainEventMsg plainEvent; - lock (Text) + lock (_text) { int i = 0; // find complete header bool found = false; - for (; i < Text.Length - 1; ++i) + for (; i < _text.Length - 1; ++i) { - if (Text[i] == '\n' && Text[i+1] == '\n') + if (_text[i] == '\n' && _text[i + 1] == '\n') { found = true; break; @@ -99,13 +99,8 @@ // extract header char[] chars = new char[i]; - Text.CopyTo(0, chars, 0, i); + _text.CopyTo(0, chars, 0, i); string headers = new string(chars); -#if DEBUG - Console.WriteLine("===================================="); - Console.WriteLine("Headers: "); - Console.WriteLine(headers); -#endif IgnoreLineBreaks(ref i); plainEvent = new PlainEventMsg(); @@ -117,12 +112,12 @@ // Start of Empty header bugfix // FS seems to send a header with content-length without sending an actual body // this will eat that kind of header. - if (Text.Length >= BugWorkaround.Length + i) + if (_text.Length >= BugWorkaround.Length + i) { found = true; for (int index = 0; index < BugWorkaround.Length; ++index) { - if (Text[index + i] != BugWorkaround[index]) + if (_text[index + i] != BugWorkaround[index]) { found = false; break; @@ -130,7 +125,7 @@ } if (found) { - Text.Remove(0, i); + _text.Remove(0, i); Console.WriteLine("Removing empty content header."); return null; } @@ -138,12 +133,12 @@ // end of bugfix. // not enough data for body. - if (plainEvent.ContentLength + i > Text.Length) + if (plainEvent.ContentLength + i > _text.Length) return null; // extract body chars = new char[plainEvent.ContentLength]; - Text.CopyTo(i, chars, 0, plainEvent.ContentLength); + _text.CopyTo(i, chars, 0, plainEvent.ContentLength); plainEvent.Body = new string(chars); // check for errors. @@ -156,14 +151,10 @@ Console.WriteLine("Body"); Console.WriteLine(plainEvent.Body); Console.WriteLine("=========================== EVERYTHING in _text =============================="); - Console.WriteLine(Text); - throw new InvalidDataException("Fucked up event: " + Text); + Console.WriteLine(_text); + throw new InvalidDataException("Fucked up event: " + _text); } -#if DEBUG - Console.WriteLine("Body:"); - Console.WriteLine(plainEvent.Body); -#endif if (plainEvent.Body.Length < plainEvent.ContentLength) throw new InvalidDataException("Body contents are too small!"); @@ -174,7 +165,7 @@ // remove header( + body) from buffer - Text.Remove(0, i); + _text.Remove(0, i); } return plainEvent; Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs ============================================================================== --- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs (original) +++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs Tue Aug 26 04:17:43 2008 @@ -127,6 +127,9 @@ string inbuffer; try { + if (_stream == null) + return; // closed socket. + int bytesRead = _stream.EndRead(ar); if (bytesRead == 0) { @@ -144,7 +147,7 @@ return; } - if (DataReceived != null) + if (DataReceived != null && !string.IsNullOrEmpty(inbuffer)) DataReceived(inbuffer); try Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs ============================================================================== --- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs (original) +++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs Tue Aug 26 04:17:43 2008 @@ -4,7 +4,7 @@ { public override string ToString() { - return "PresenceIn." + base.ToString(); + return "In." + base.ToString(); } } } Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs ============================================================================== --- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs (original) +++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs Tue Aug 26 04:17:43 2008 @@ -4,7 +4,7 @@ { public override string ToString() { - return "PresenceOut." + base.ToString(); + return "Out." + base.ToString(); }