summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG6
-rw-r--r--client/src/leap/soledad/client/__init__.py5
-rw-r--r--client/src/leap/soledad/client/sqlcipher.py12
-rw-r--r--docs/debian-repackaging.rst41
4 files changed, 62 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index e82801a1..660d4160 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+0.4.3 Nov 15:
+ o Defaults detected encoding to utf-8 to avoid bug if detected
+ encoding is None. Closes: #4417
+ o Open db in autocommit mode, to avoid nested transactions problems.
+ Closes: #4400
+
0.4.2 Nov 1:
Client:
o Support non-ascii passwords. Closes #4001.
diff --git a/client/src/leap/soledad/client/__init__.py b/client/src/leap/soledad/client/__init__.py
index 534040ef..a159d773 100644
--- a/client/src/leap/soledad/client/__init__.py
+++ b/client/src/leap/soledad/client/__init__.py
@@ -847,8 +847,9 @@ class Soledad(object):
elif isinstance(content, str):
try:
result = chardet.detect(content)
- content = content.decode(result["encoding"]).encode("utf-8")\
- .decode("utf-8")
+ default = "utf-8"
+ encoding = result["encoding"] or default
+ content = content.decode(encoding)
except UnicodeError:
pass
return content
diff --git a/client/src/leap/soledad/client/sqlcipher.py b/client/src/leap/soledad/client/sqlcipher.py
index 3e01a4fb..894c6f97 100644
--- a/client/src/leap/soledad/client/sqlcipher.py
+++ b/client/src/leap/soledad/client/sqlcipher.py
@@ -70,6 +70,14 @@ sqlite_backend.dbapi2 = dbapi2
SQLITE_CHECK_SAME_THREAD = False
+# We set isolation_level to None to setup autocommit mode.
+# See: http://docs.python.org/2/library/sqlite3.html#controlling-transactions
+# This avoids problems with sequential operations using the same soledad object
+# trying to open new transactions
+# (The error was:
+# OperationalError:cannot start a transaction within a transaction.)
+SQLITE_ISOLATION_LEVEL = None
+
def open(path, password, create=True, document_factory=None, crypto=None,
raw_key=False, cipher='aes-256-cbc', kdf_iter=4000,
@@ -172,6 +180,7 @@ class SQLCipherDatabase(sqlite_backend.SQLitePartialExpandDatabase):
with self.k_lock:
self._db_handle = dbapi2.connect(
sqlcipher_file,
+ isolation_level=SQLITE_ISOLATION_LEVEL,
check_same_thread=SQLITE_CHECK_SAME_THREAD)
# set SQLCipher cryptographic parameters
self._set_crypto_pragmas(
@@ -436,6 +445,7 @@ class SQLCipherDatabase(sqlite_backend.SQLitePartialExpandDatabase):
with cls.k_lock:
db_handle = dbapi2.connect(
sqlcipher_file,
+ isolation_level=SQLITE_ISOLATION_LEVEL,
check_same_thread=SQLITE_CHECK_SAME_THREAD)
cls._set_crypto_pragmas(
db_handle, key, raw_key, cipher,
@@ -645,6 +655,7 @@ class SQLCipherDatabase(sqlite_backend.SQLitePartialExpandDatabase):
passphrase that should be hashed to obtain the encyrption key.
:type raw_key: bool
"""
+ # XXX change key param!
if raw_key:
cls._pragma_rekey_raw(db_handle, key)
else:
@@ -683,6 +694,7 @@ class SQLCipherDatabase(sqlite_backend.SQLitePartialExpandDatabase):
"""
if not all(c in string.hexdigits for c in key):
raise NotAnHexString(key)
+ # XXX change passphrase param!
db_handle.cursor().execute('PRAGMA rekey = "x\'%s"' % passphrase)
def __del__(self):
diff --git a/docs/debian-repackaging.rst b/docs/debian-repackaging.rst
new file mode 100644
index 00000000..a7488a84
--- /dev/null
+++ b/docs/debian-repackaging.rst
@@ -0,0 +1,41 @@
+repackaging howto
+=================
+
+How to repackage latest code
+----------------------------
+
+Enter debian branch::
+
+ git checkout debian
+
+Merge your latest and greatest::
+
+ git merge develop
+
+Bump the changelog::
+
+ vim debian/changelog
+
+dch should also get you there, adding a new entry.
+
+Edit the changelog so you get a new version (this is the version
+that apt will report). For example, change::
+
+ soledad-common (0.3.4) unstable; urgency=low
+
+to::
+
+ soledad-common (0.3.4-1~testing_frobnication) unstable; urgency=low
+
+
+Last, but not least, freeze the debian version::
+
+ python setup.py freeze_debianver
+
+It might be a good idea to edit by hand the version string
+under _version too, so it's clear that you're packaging some bleeding
+edge not to be confused with latest stable packages.
+
+And now you can happily repackage for your own deploys::
+
+ debuild -us -uc