Commit graph

123 commits

Author SHA1 Message Date
Klaas Freitag
bf8188e9e8 Create metadata table if not existing. 2013-06-10 11:48:38 +02:00
Klaas Freitag
5852a2dd06 Create an empty metadata table if non exists. 2013-06-07 16:09:07 +02:00
Klaas Freitag
fbfba8bfbb Add another database integrity check on startup to avoid corrupt dbs. 2013-06-07 16:08:45 +02:00
Klaas Freitag
e4e30e2cdd Use multibyte version of open in database version check. 2013-06-05 17:59:34 +02:00
Klaas Freitag
126559b2be For new databases, skip the is-empty check. 2013-05-22 16:10:43 +02:00
Klaas Freitag
4a58cae0b0 Finialize insert statement. 2013-05-22 12:33:09 +02:00
Klaas Freitag
bcdd8b95bf Allow empty MD5 sum on save, happens with directoires. 2013-05-22 12:33:09 +02:00
Klaas Freitag
69d251630f Code cleanups, move closedb out of if statements. 2013-05-22 12:33:09 +02:00
Klaas Freitag
673ca36db8 More efficient database writing, do integrity check on db. 2013-05-22 12:33:09 +02:00
Klaas Freitag
68e0dbb18f Use wide character unlink. 2013-05-22 12:32:25 +02:00
Klaas Freitag
23912a7214 Reworked database writing code. Speed improvement > 50%. 2013-05-20 12:24:55 +02:00
Klaas Freitag
4ad01b35ce Switch on full synchronous mode for sqlite. 2013-05-20 11:10:27 +02:00
Klaas Freitag
1a648a612e Merge remote-tracking branch 'ogoffart/rename_folders_merged' into dav 2013-05-13 16:28:31 +02:00
Klaas Freitag
885eaad729 Removed goto from code. 2013-05-13 15:29:29 +02:00
Olivier Goffart
28942e3051 Recreates the statedb if it was corrupted
Fixes: https://github.com/owncloud/mirall/issues/595

Some corruptions do not happen when the database is opened, but only on
some querries.
In that case, recreates the database if querries such as DROP or
CREATE fails.
2013-05-13 11:57:25 +02:00
Olivier Goffart
3c87cd71d7 Merge branch 'rename_folders' into dav
Conflicts:
	modules/csync_owncloud.c
	src/csync.c
	src/csync.h
	src/csync_propagate.c
	src/csync_propagate.h
	src/csync_statedb.c
	src/csync_statedb.h
	src/csync_util.c
	src/std/c_path.h
2013-05-07 15:24:12 +02:00
Klaas Freitag
4ce67e38d1 Fix printf operator to interpret phash correctly for sqlite3. 2013-05-06 16:27:11 +02:00
Olivier Goffart
b1fc9b2a64 Don't reset the md5 if the mtime change locally.
Consider this case when one creates a file with an invalid filename (for
the server) in a directory in the local side.
say: foo/bar/%invalid%.txt

The following would happen:
- in the update for the local parent folder  foo/bar/, the md5 is 0
  because the mtime has changed
- During the reconcile, we try to send %invalid%, but there will be an
  error and nothing will be changed on the server, the etags stay the
  same
- We do not do any PROPFIND at the end so we do not fetch the etag
  anymore.  The md5 is still 0 and will be saved like that in the DB
- Next run, since the etags have  not changed on the server, we read
  from the DB.  But a md5 of 0 in the DB means the folder was removed on
  the server.  That would remove the local folder (BAD!)

So we load the md5 from the db even if the local mtime change.
That means we need to compare the mtime in the local case rather than
the md5 to see if something has changed.
2013-05-03 19:21:21 +02:00
Klaas Freitag
ab17e2aa8b Revert "Don't include csync_version.h from csync.h"
This reverts commit 5cda5d523c.
2013-04-26 10:45:14 +02:00
Klaas Freitag
5cda5d523c Don't include csync_version.h from csync.h 2013-04-26 10:37:45 +02:00
Olivier Goffart
eb38f5beb1 Don't reset the md5 if the mtime change locally.
Consider this case when one creates a file with an invalid filename (for
the server) in a directory in the local side.
say: foo/bar/%invalid%.txt

The following would happen:
- in the update for the local parent folder  foo/bar/, the md5 is 0
  because the mtime has changed
- During the reconcile, we try to send %invalid%, but there will be an
  error and nothing will be changed on the server, the etags stay the
  same
- We do not do any PROPFIND at the end so we do not fetch the etag
  anymore.  The md5 is still 0 and will be saved like that in the DB
- Next run, since the etags have  not changed on the server, we read
  from the DB.  But a md5 of 0 in the DB means the folder was removed on
  the server.  That would remove the local folder (BAD!)

So we load the md5 from the db even if the local mtime change.
That means we need to compare the mtime in the local case rather than
the md5 to see if something has changed.
2013-04-24 14:09:20 +02:00
Klaas Freitag
847c223408 More meaningful logging of read db fails. 2013-04-15 17:47:50 +02:00
Klaas Freitag
4280adc60a More optimized database handling for csync journal build up.
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
2013-04-06 18:11:15 +02:00
Klaas Freitag
34668e42b3 Merge branch 'dav_0.70.5' into dav - WIP
Conflicts:
	CMakeLists.txt
	CPackConfig.cmake
	src/csync.h
	src/csync_update.c
	tests/ownCloud/t1.pl
2013-04-02 14:44:01 +02:00
Olivier Goffart
296011436a Store the error string in the database when blacklisting 2013-03-28 13:54:01 +01:00
Klaas Freitag
7b7ce3a43c Remove versions table before new creation. 2013-03-22 11:04:04 +01:00
Olivier Goffart
2205c9a339 Resume chunked upload if conneciton is lost 2013-03-12 11:42:17 +01:00
Olivier Goffart
53ad4a910f Progress database:
Remember about errors, and don't retry if there is more than 3 errors

Conflicts:
	src/csync_propagate.c
2013-03-02 15:01:40 +01:00
Olivier Goffart
259b6050bf Progress database:
Remember about errors, and don't retry if there is more than 3 errors
2013-03-01 12:31:20 +01:00
Andreas Schneider
91d92bfa16 log: Add functions to set userdata for the logging callback. 2013-03-01 09:59:55 +01:00
Klaas Freitag
ccc9419a58 Reduce the sqlite_compile errors dramatically. 2013-01-16 16:27:59 +01:00
Daniel Molkentin
49d2fd685b iconv support
This allows for files on mac to automatically be converted to UNC
2012-12-07 13:03:01 +01:00
Olivier Goffart
95edd6a9de Merge remote-tracking branch 'origin/master' into dav
Conflicts:
	config/ocsync_log.conf
	src/csync.c
	src/csync.h
	src/csync_config.c
	src/csync_log.h
	src/csync_private.h
	src/csync_statedb.c
	tests/csync_tests/check_csync_config.c
2012-12-03 17:32:08 +01:00
Klaas Freitag
01ba8d4a9b Wide char fixes for exclude, lock and statedb. 2012-11-27 15:39:06 +01:00
Klaas Freitag
a577bf8faa Add a version table to csyncs database with the current version no. 2012-11-14 17:24:13 +01:00
Klaas Freitag
094554366b Fix casting to signed data types. 2012-11-14 15:10:44 +01:00
Klaas Freitag
385b48da5c Commented database copy. Rather let it recreate. 2012-11-14 15:09:16 +01:00
Olivier Goffart
7071a455c5 Use signed hash in SQL request
sqlite only handle signed integer,  in case of overflow, we numbers are
transformed to floating point, resulting in wierd errors.
2012-11-06 14:05:52 +01:00
Klaas Freitag
2fa07b1dd9 set pointer void to avoid warning on linux compile. 2012-10-31 21:08:40 +01:00
Klaas Freitag
4104737533 Hide the journal database under windows using win32 API. 2012-10-31 20:56:06 +01:00
Andreas Schneider
0179c2249d statedb: Log an error if we can't open the database. 2012-10-30 11:27:21 +01:00
Andreas Schneider
8a0b4319d3 csync: Add a new logging system. 2012-10-30 11:27:21 +01:00
Klaas Freitag
2bb52ef6f9 Merge branch 'master' into dav - get cmocka tests and database move.
Conflicts:
	CMakeLists.txt
	cmake/Modules/FindCMocka.cmake
	src/csync.c
	src/csync_exclude.c
	src/csync_reconcile.c
	src/csync_statedb.c
	src/csync_update.c
	src/csync_util.c
	src/vio/csync_vio.c
	tests/CMakeLists.txt
	tests/csync_tests/check_csync_exclude.c
	tests/csync_tests/check_csync_statedb_load.c
	tests/csync_tests/check_csync_statedb_query.c
	tests/csync_tests/check_csync_update.c
	tests/std_tests/check_std_c_path.c
2012-10-27 19:27:14 +02:00
Klaas Freitag
557b4bbe25 Use LIKE instead of GLOB to find files in dirs in database.
This fixes Github issue mirall#25
2012-10-27 12:03:39 +02:00
Andreas Schneider
b4464bd92f statedb: Don't leak the file descriptior on error.
Found by Coverity.
2012-10-19 20:37:13 +02:00
Andreas Schneider
1d8378e307 statedb: Ensure we don't leak memory in csync_statedb_query().
Found by Coverity.
2012-10-19 20:37:13 +02:00
Klaas Freitag
4682afc2bc Added function csync_statedb_get_below_path. 2012-10-16 13:14:04 +02:00
Klaas Freitag
fbb88abe85 Clear memory and fix zero return type for _get_stat_by_hash 2012-10-04 13:03:42 +02:00
Klaas Freitag
2ec0b63f98 Migrate existing database from $HOME/.csync if non exists at config dir. 2012-10-04 13:02:38 +02:00
Klaas Freitag
2af0d6f1a4 Be careful with memory, some fixes for that. 2012-09-26 15:32:38 +02:00
Klaas Freitag
7b16fcf2a4 Avoid useless warnings. 2012-09-26 12:45:24 +02:00
Klaas Freitag
08f7fbbd71 Fix printf argument for win32 platform. 2012-08-30 17:01:52 +03:00
Klaas Freitag
c491e8bb68 Check for valid result count after query. 2012-08-28 14:09:54 +03:00
Klaas Freitag
3b369c8b03 More robust query result access if columns are missing. 2012-08-26 20:07:36 +02:00
Klaas Freitag
5b5fe29eb5 Make sqlite_query function able to deal with multiple row queries. 2012-08-23 17:54:36 +03:00
Klaas Freitag
cf8f31914a Added a file type column to the database. 2012-08-23 17:53:53 +03:00
Klaas Freitag
a0353249f1 Remove a database column comment that just blows the log file. 2012-08-23 17:44:07 +03:00
Klaas Freitag
0618eb956d Merge conflicts solved. 2012-08-23 17:40:36 +03:00
Klaas Freitag
ae5394ad75 UniqID based syncing, first WIP state. 2012-08-23 17:38:44 +03:00
Klaas Freitag
8e401e662f MD5 Support WIP 2012-08-23 17:34:19 +03:00
Klaas Freitag
3ae996c688 Fixed rename support for Win32. Need to use unit64 instead of ino_t. 2012-08-03 18:48:44 +03:00
Klaas Freitag
0bedd5d9a3 Win32: Disabled Query per inode, always returning NULL.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2012-04-17 10:49:29 +02:00
Klaas Freitag
53263a2685 owncloud: set _fmode variable to set file ops to binary mode.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2012-04-17 10:40:21 +02:00
Klaas Freitag
270a4262b4 Win32: Disabled Query per inode, always returning NULL. 2012-04-14 03:13:27 +02:00
Klaas Freitag
b6ad8635d6 owncloud: set _fmode variable to set file ops to binary mode. 2012-04-14 03:13:26 +02:00
Andreas Schneider
f0cf678c0e Fix config checks. 2012-03-02 17:04:02 +01:00
Christian Jann
e4d8e793f6 added new conflict resolution to libcsync
- use the latest version of the two files under its original filename
  in both destinations (same as currently implemented)
- additionally, create a copy of the older file under a different name
  using the same file extension with appended marker (e.g. "conflict")
  and timestamp in both destinations
  (e.g. textfile.odt -> textfile_conflict-20100222-105000.odt)
- At the Moment 'textfile_conflict-20100222-105000.odt' is only created
  on the side where the conflict has occurred and gets synced to the other side
  on the second sync.
2011-04-06 16:57:24 +02:00
Andreas Schneider
fdea54edc5 Fix the vim modlines. 2009-05-13 10:12:07 +02:00
Andreas Schneider
a9150e9e2a Initialize some variables. 2008-12-23 13:54:57 +01:00
Andreas Schneider
9152e25f8f Fix the format for the inode number in the mprintf. 2008-12-14 18:27:24 +01:00
Andreas Schneider
f400f1852f Improve the update detection.
Document and fix a problem in getting the phash value.
2008-09-03 09:48:19 +02:00
Andreas Schneider
e5286c7c8a Rename journal functions to statedb. 2008-07-09 10:10:00 +02:00
Andreas Schneider
88690312d7 Rename the csync_journal files to csync_statedb. 2008-07-09 09:57:19 +02:00
Renamed from src/csync_journal.c (Browse further)