[Asterisk-code-review] astconfigparser.py: Update with realtime fixes. (asterisk[master])

Joshua Colp asteriskteam at digium.com
Fri Jul 22 04:49:49 CDT 2016


Joshua Colp has uploaded a new change for review.

  https://gerrit.asterisk.org/3306

Change subject: astconfigparser.py: Update with realtime fixes.
......................................................................

astconfigparser.py: Update with realtime fixes.

When configuring SIP URIs in the pjsip.conf file it is
necessary to escape the semicolon so the parser does not
treat it as a comment. This change allows this to work in
the astconfigparser implementation.

A secondary bug where some data was lost if a configuration
option included a "=" in its value was also fixed.

A bug where sections would be considered equal despite
being different has also been fixed.

Change-Id: If229f656ef22050b50e7b34e90c4bffe796431f8
---
M contrib/scripts/sip_to_pjsip/astconfigparser.py
1 file changed, 22 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/06/3306/1

diff --git a/contrib/scripts/sip_to_pjsip/astconfigparser.py b/contrib/scripts/sip_to_pjsip/astconfigparser.py
index b207b0d..e3f31cd 100644
--- a/contrib/scripts/sip_to_pjsip/astconfigparser.py
+++ b/contrib/scripts/sip_to_pjsip/astconfigparser.py
@@ -1,3 +1,10 @@
+"""
+Copyright (C) 2016, Digium, Inc.
+
+This program is free software, distributed under the terms of
+the GNU General Public License Version 2.
+"""
+
 import re
 import itertools
 
@@ -43,6 +50,12 @@
         Use self.id as means of determining equality
         """
         return cmp(self.id, other.id)
+
+    def __eq__(self, other):
+        """
+        Use self.id as means of determining equality
+        """
+        return self.id == other.id
 
     def get(self, key, from_self=True, from_templates=True,
             from_defaults=True):
@@ -184,9 +197,15 @@
         # otherwise it was an embedded comment so combine
         return ''.join([part[0].strip(), ' ', line]).rstrip(), False
 
-    # check for eol comment
-    return line.partition(COMMENT)[0].strip(), False
+    # find the first occurence of a comment that is not escaped
+    match = re.match(r'(?<!\\)(?:\\\\)*;', line)
 
+    if match:
+         # the end of where the real string is is where the escaped part is
+         end = match.start()
+         line = line[0:end]
+
+    return line.replace("\\", "").strip(), False
 
 def try_include(line):
     """
@@ -224,7 +243,7 @@
 
 def try_option(line):
     """Parses the line as an option, returning the key/value pair."""
-    data = re.split('=>?', line)
+    data = re.split('=>?', line, 1)
     # should split in two (key/val), but either way use first two elements
     return data[0].rstrip(), data[1].lstrip()
 

-- 
To view, visit https://gerrit.asterisk.org/3306
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If229f656ef22050b50e7b34e90c4bffe796431f8
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: Joshua Colp <jcolp at digium.com>



More information about the asterisk-code-review mailing list