Merge lp:~ubuntuone-control-tower/ubuntu/lucid/ubuntuone-client/trunk into lp:ubuntu/lucid/ubuntuone-client
- Lucid (10.04)
- trunk
- Merge into lucid
Proposed by
dobey
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~ubuntuone-control-tower/ubuntu/lucid/ubuntuone-client/trunk |
Merge into: | lp:ubuntu/lucid/ubuntuone-client |
Diff against target: |
331 lines (+86/-17) 7 files modified
bin/ubuntuone-preferences (+6/-4) configure (+10/-10) configure.ac (+1/-1) debian/changelog (+9/-0) debian/ubuntuone-client.install (+2/-0) tests/syncdaemon/test_vm.py (+51/-0) ubuntuone/syncdaemon/volume_manager.py (+7/-2) |
To merge this branch: | bzr merge lp:~ubuntuone-control-tower/ubuntu/lucid/ubuntuone-client/trunk |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu branches | Pending | ||
Review via email: mp+22658@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
- 26. By Sebastien Bacher
-
releasing version 1.1.91-0ubuntu1
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'bin/ubuntuone-preferences' |
2 | --- bin/ubuntuone-preferences 2010-03-31 23:46:58 +0000 |
3 | +++ bin/ubuntuone-preferences 2010-04-01 20:36:38 +0000 |
4 | @@ -210,8 +210,8 @@ |
5 | self.status_label = gtk.Label("") |
6 | self.attach(self.status_label, 0, 3, 2, 3) |
7 | |
8 | - self.description = gtk.Label(_("The devices connected with your" |
9 | - " pseronal cloud network" |
10 | + self.description = gtk.Label(_("The devices connected to with your" |
11 | + " personal cloud network" |
12 | " are listed below")) |
13 | self.description.set_alignment(0., .5) |
14 | self.description.set_line_wrap(True) |
15 | @@ -597,7 +597,7 @@ |
16 | """Handle the dialog's response.""" |
17 | self.hide() |
18 | self.devices.handle_bw_controls_changed() |
19 | - gtk.main_quit() |
20 | + gobject.timeout_add_seconds(5, gtk.main_quit) |
21 | |
22 | def _format_for_gb_display(self, bytes): |
23 | """Format bytes into reasonable gb display.""" |
24 | @@ -957,6 +957,7 @@ |
25 | sw.show() |
26 | self.devices = DevicesWidget(self.__bus, self.keyring) |
27 | sw.add_with_viewport(self.devices) |
28 | + self.devices.list_devices() |
29 | self.devices.show_all() |
30 | |
31 | # Services tab |
32 | @@ -1058,7 +1059,8 @@ |
33 | self.dialog.request_quota_info() |
34 | self.dialog.request_account_info() |
35 | self.dialog.devices.get_devices() |
36 | - self.dialog.present_with_time(int(time.time())) |
37 | + if self.dialog.visible: |
38 | + self.dialog.present_with_time(int(time.time())) |
39 | |
40 | def got_newcredentials(self, realm, consumer_key): |
41 | """Show our dialog, since we can do stuff now.""" |
42 | |
43 | === modified file 'configure' |
44 | --- configure 2010-03-31 23:46:58 +0000 |
45 | +++ configure 2010-04-01 20:36:38 +0000 |
46 | @@ -1,6 +1,6 @@ |
47 | #! /bin/sh |
48 | # Guess values for system-dependent variables and create Makefiles. |
49 | -# Generated by GNU Autoconf 2.65 for ubuntuone-client 1.1.90. |
50 | +# Generated by GNU Autoconf 2.65 for ubuntuone-client 1.1.91. |
51 | # |
52 | # |
53 | # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, |
54 | @@ -698,8 +698,8 @@ |
55 | # Identity of this package. |
56 | PACKAGE_NAME='ubuntuone-client' |
57 | PACKAGE_TARNAME='ubuntuone-client' |
58 | -PACKAGE_VERSION='1.1.90' |
59 | -PACKAGE_STRING='ubuntuone-client 1.1.90' |
60 | +PACKAGE_VERSION='1.1.91' |
61 | +PACKAGE_STRING='ubuntuone-client 1.1.91' |
62 | PACKAGE_BUGREPORT='' |
63 | PACKAGE_URL='' |
64 | |
65 | @@ -1476,7 +1476,7 @@ |
66 | # Omit some internal or obsolete options to make the list less imposing. |
67 | # This message is too long to be a string in the A/UX 3.1 sh. |
68 | cat <<_ACEOF |
69 | -\`configure' configures ubuntuone-client 1.1.90 to adapt to many kinds of systems. |
70 | +\`configure' configures ubuntuone-client 1.1.91 to adapt to many kinds of systems. |
71 | |
72 | Usage: $0 [OPTION]... [VAR=VALUE]... |
73 | |
74 | @@ -1547,7 +1547,7 @@ |
75 | |
76 | if test -n "$ac_init_help"; then |
77 | case $ac_init_help in |
78 | - short | recursive ) echo "Configuration of ubuntuone-client 1.1.90:";; |
79 | + short | recursive ) echo "Configuration of ubuntuone-client 1.1.91:";; |
80 | esac |
81 | cat <<\_ACEOF |
82 | |
83 | @@ -1660,7 +1660,7 @@ |
84 | test -n "$ac_init_help" && exit $ac_status |
85 | if $ac_init_version; then |
86 | cat <<\_ACEOF |
87 | -ubuntuone-client configure 1.1.90 |
88 | +ubuntuone-client configure 1.1.91 |
89 | generated by GNU Autoconf 2.65 |
90 | |
91 | Copyright (C) 2009 Free Software Foundation, Inc. |
92 | @@ -1938,7 +1938,7 @@ |
93 | This file contains any messages produced by compilers while |
94 | running configure, to aid debugging if configure makes a mistake. |
95 | |
96 | -It was created by ubuntuone-client $as_me 1.1.90, which was |
97 | +It was created by ubuntuone-client $as_me 1.1.91, which was |
98 | generated by GNU Autoconf 2.65. Invocation command line was |
99 | |
100 | $ $0 $@ |
101 | @@ -2748,7 +2748,7 @@ |
102 | |
103 | # Define the identity of the package. |
104 | PACKAGE='ubuntuone-client' |
105 | - VERSION='1.1.90' |
106 | + VERSION='1.1.91' |
107 | |
108 | |
109 | cat >>confdefs.h <<_ACEOF |
110 | @@ -12972,7 +12972,7 @@ |
111 | # report actual input values of CONFIG_FILES etc. instead of their |
112 | # values after options handling. |
113 | ac_log=" |
114 | -This file was extended by ubuntuone-client $as_me 1.1.90, which was |
115 | +This file was extended by ubuntuone-client $as_me 1.1.91, which was |
116 | generated by GNU Autoconf 2.65. Invocation command line was |
117 | |
118 | CONFIG_FILES = $CONFIG_FILES |
119 | @@ -13038,7 +13038,7 @@ |
120 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
121 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
122 | ac_cs_version="\\ |
123 | -ubuntuone-client config.status 1.1.90 |
124 | +ubuntuone-client config.status 1.1.91 |
125 | configured by $0, generated by GNU Autoconf 2.65, |
126 | with options \\"\$ac_cs_config\\" |
127 | |
128 | |
129 | === modified file 'configure.ac' |
130 | --- configure.ac 2010-03-31 23:46:58 +0000 |
131 | +++ configure.ac 2010-04-01 20:36:38 +0000 |
132 | @@ -1,7 +1,7 @@ |
133 | dnl Process this file with autoconf to produce a configure script. |
134 | AC_PREREQ(2.53) |
135 | |
136 | -AC_INIT([ubuntuone-client], [1.1.90]) |
137 | +AC_INIT([ubuntuone-client], [1.1.91]) |
138 | AC_CONFIG_SRCDIR([config.h.in]) |
139 | |
140 | AM_INIT_AUTOMAKE([1.10 foreign]) |
141 | |
142 | === modified file 'contrib/__init__.pyc' |
143 | Binary files contrib/__init__.pyc 2010-03-31 23:46:58 +0000 and contrib/__init__.pyc 2010-04-01 20:36:38 +0000 differ |
144 | === modified file 'contrib/dbus_util.pyc' |
145 | Binary files contrib/dbus_util.pyc 2010-03-31 23:46:58 +0000 and contrib/dbus_util.pyc 2010-04-01 20:36:38 +0000 differ |
146 | === modified file 'contrib/mocker.pyc' |
147 | Binary files contrib/mocker.pyc 2010-03-31 23:46:58 +0000 and contrib/mocker.pyc 2010-04-01 20:36:38 +0000 differ |
148 | === modified file 'contrib/testing/__init__.pyc' |
149 | Binary files contrib/testing/__init__.pyc 2010-03-31 23:46:58 +0000 and contrib/testing/__init__.pyc 2010-04-01 20:36:38 +0000 differ |
150 | === modified file 'contrib/testing/testcase.pyc' |
151 | Binary files contrib/testing/testcase.pyc 2010-03-31 23:46:58 +0000 and contrib/testing/testcase.pyc 2010-04-01 20:36:38 +0000 differ |
152 | === modified file 'debian/changelog' |
153 | --- debian/changelog 2010-04-01 00:03:14 +0000 |
154 | +++ debian/changelog 2010-04-01 20:36:38 +0000 |
155 | @@ -1,3 +1,12 @@ |
156 | +ubuntuone-client (1.1.91-0ubuntu1) UNRELEASED; urgency=low |
157 | + |
158 | + * New upstream release. |
159 | + - Fix to avoid AttributeError on exit (LP: #553318) |
160 | + - Fix typo and string change in prefs app (LP: #553324) |
161 | + - Add missing autostart files to packages (LP: #534707) |
162 | + |
163 | + -- Rodney Dawes <rodney.dawes@canonical.com> Thu, 01 Apr 2010 16:17:17 -0400 |
164 | + |
165 | ubuntuone-client (1.1.90-0ubuntu1) lucid; urgency=low |
166 | |
167 | * New upstream release. |
168 | |
169 | === modified file 'debian/ubuntuone-client.install' |
170 | --- debian/ubuntuone-client.install 2010-02-18 00:08:41 +0000 |
171 | +++ debian/ubuntuone-client.install 2010-04-01 20:36:38 +0000 |
172 | @@ -1,5 +1,7 @@ |
173 | +debian/tmp/etc/xdg/autostart |
174 | debian/tmp/usr/lib/ubuntuone-client/ubuntuone-syncdaemon |
175 | debian/tmp/usr/bin/u1sdtool |
176 | +debian/tmp/usr/bin/ubuntuone-launch |
177 | debian/tmp/usr/share/dbus-1/services/com.ubuntuone.SyncDaemon.service |
178 | debian/tmp/usr/share/man/man1/u1sdtool.* |
179 | debian/tmp/usr/share/locale |
180 | |
181 | === modified file 'tests/__init__.pyc' |
182 | Binary files tests/__init__.pyc 2010-03-31 23:46:58 +0000 and tests/__init__.pyc 2010-04-01 20:36:38 +0000 differ |
183 | === modified file 'tests/oauthdesktop/__init__.pyc' |
184 | Binary files tests/oauthdesktop/__init__.pyc 2010-03-31 23:46:58 +0000 and tests/oauthdesktop/__init__.pyc 2010-04-01 20:36:38 +0000 differ |
185 | === modified file 'tests/oauthdesktop/test_auth.pyc' |
186 | Binary files tests/oauthdesktop/test_auth.pyc 2010-03-31 23:46:58 +0000 and tests/oauthdesktop/test_auth.pyc 2010-04-01 20:36:38 +0000 differ |
187 | === modified file 'tests/oauthdesktop/test_config.pyc' |
188 | Binary files tests/oauthdesktop/test_config.pyc 2010-03-31 23:46:58 +0000 and tests/oauthdesktop/test_config.pyc 2010-04-01 20:36:38 +0000 differ |
189 | === modified file 'tests/oauthdesktop/test_key_acls.pyc' |
190 | Binary files tests/oauthdesktop/test_key_acls.pyc 2010-03-31 23:46:58 +0000 and tests/oauthdesktop/test_key_acls.pyc 2010-04-01 20:36:38 +0000 differ |
191 | === modified file 'tests/oauthdesktop/test_main.pyc' |
192 | Binary files tests/oauthdesktop/test_main.pyc 2010-03-31 23:46:58 +0000 and tests/oauthdesktop/test_main.pyc 2010-04-01 20:36:38 +0000 differ |
193 | === modified file 'tests/syncdaemon/__init__.pyc' |
194 | Binary files tests/syncdaemon/__init__.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/__init__.pyc 2010-04-01 20:36:38 +0000 differ |
195 | === modified file 'tests/syncdaemon/fsm/__init__.pyc' |
196 | Binary files tests/syncdaemon/fsm/__init__.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/fsm/__init__.pyc 2010-04-01 20:36:38 +0000 differ |
197 | === modified file 'tests/syncdaemon/fsm/test_fsm.pyc' |
198 | Binary files tests/syncdaemon/fsm/test_fsm.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/fsm/test_fsm.pyc 2010-04-01 20:36:38 +0000 differ |
199 | === modified file 'tests/syncdaemon/fsm/test_fsm_run.pyc' |
200 | Binary files tests/syncdaemon/fsm/test_fsm_run.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/fsm/test_fsm_run.pyc 2010-04-01 20:36:38 +0000 differ |
201 | === modified file 'tests/syncdaemon/fsm/test_run_hello.pyc' |
202 | Binary files tests/syncdaemon/fsm/test_run_hello.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/fsm/test_run_hello.pyc 2010-04-01 20:36:38 +0000 differ |
203 | === modified file 'tests/syncdaemon/test_action_predicates.pyc' |
204 | Binary files tests/syncdaemon/test_action_predicates.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_action_predicates.pyc 2010-04-01 20:36:38 +0000 differ |
205 | === modified file 'tests/syncdaemon/test_action_queue.pyc' |
206 | Binary files tests/syncdaemon/test_action_queue.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_action_queue.pyc 2010-04-01 20:36:38 +0000 differ |
207 | === modified file 'tests/syncdaemon/test_config.pyc' |
208 | Binary files tests/syncdaemon/test_config.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_config.pyc 2010-04-01 20:36:38 +0000 differ |
209 | === modified file 'tests/syncdaemon/test_dbus.pyc' |
210 | Binary files tests/syncdaemon/test_dbus.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_dbus.pyc 2010-04-01 20:36:38 +0000 differ |
211 | === modified file 'tests/syncdaemon/test_eq_inotify.pyc' |
212 | Binary files tests/syncdaemon/test_eq_inotify.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_eq_inotify.pyc 2010-04-01 20:36:38 +0000 differ |
213 | === modified file 'tests/syncdaemon/test_eventqueue.pyc' |
214 | Binary files tests/syncdaemon/test_eventqueue.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_eventqueue.pyc 2010-04-01 20:36:38 +0000 differ |
215 | === modified file 'tests/syncdaemon/test_eventsnanny.pyc' |
216 | Binary files tests/syncdaemon/test_eventsnanny.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_eventsnanny.pyc 2010-04-01 20:36:38 +0000 differ |
217 | === modified file 'tests/syncdaemon/test_fileshelf.pyc' |
218 | Binary files tests/syncdaemon/test_fileshelf.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_fileshelf.pyc 2010-04-01 20:36:38 +0000 differ |
219 | === modified file 'tests/syncdaemon/test_fsm.pyc' |
220 | Binary files tests/syncdaemon/test_fsm.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_fsm.pyc 2010-04-01 20:36:38 +0000 differ |
221 | === modified file 'tests/syncdaemon/test_hashqueue.pyc' |
222 | Binary files tests/syncdaemon/test_hashqueue.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_hashqueue.pyc 2010-04-01 20:36:38 +0000 differ |
223 | === modified file 'tests/syncdaemon/test_localrescan.pyc' |
224 | Binary files tests/syncdaemon/test_localrescan.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_localrescan.pyc 2010-04-01 20:36:38 +0000 differ |
225 | === modified file 'tests/syncdaemon/test_logger.pyc' |
226 | Binary files tests/syncdaemon/test_logger.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_logger.pyc 2010-04-01 20:36:38 +0000 differ |
227 | === modified file 'tests/syncdaemon/test_main.pyc' |
228 | Binary files tests/syncdaemon/test_main.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_main.pyc 2010-04-01 20:36:38 +0000 differ |
229 | === modified file 'tests/syncdaemon/test_states.pyc' |
230 | Binary files tests/syncdaemon/test_states.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_states.pyc 2010-04-01 20:36:38 +0000 differ |
231 | === modified file 'tests/syncdaemon/test_sync.pyc' |
232 | Binary files tests/syncdaemon/test_sync.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_sync.pyc 2010-04-01 20:36:38 +0000 differ |
233 | === modified file 'tests/syncdaemon/test_tools.pyc' |
234 | Binary files tests/syncdaemon/test_tools.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_tools.pyc 2010-04-01 20:36:38 +0000 differ |
235 | === modified file 'tests/syncdaemon/test_u1fsfsm.pyc' |
236 | Binary files tests/syncdaemon/test_u1fsfsm.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_u1fsfsm.pyc 2010-04-01 20:36:38 +0000 differ |
237 | === modified file 'tests/syncdaemon/test_u1sdtool.pyc' |
238 | Binary files tests/syncdaemon/test_u1sdtool.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_u1sdtool.pyc 2010-04-01 20:36:38 +0000 differ |
239 | === modified file 'tests/syncdaemon/test_vm.py' |
240 | --- tests/syncdaemon/test_vm.py 2010-03-31 23:46:58 +0000 |
241 | +++ tests/syncdaemon/test_vm.py 2010-04-01 20:36:38 +0000 |
242 | @@ -1707,6 +1707,57 @@ |
243 | self.assertEquals(30, self.vm.get_free_space(udf.volume_id)) |
244 | self.assertEquals(30, self.vm.get_free_space(root.volume_id)) |
245 | |
246 | + @defer.inlineCallbacks |
247 | + def test_UDF_cant_be_a_symlink(self): |
248 | + """Test that a UDF can't be a symlink.""" |
249 | + # initialize the root |
250 | + self.vm.handle_SYS_ROOT_RECEIVED('root_uuid') |
251 | + real_udf_path = os.path.join(self.home_dir, "my_udf") |
252 | + udf_path = os.path.join(self.home_dir, "MyUDF") |
253 | + # patch FakeAQ |
254 | + def create_udf(path, name, marker): |
255 | + """Fake create_udf""" |
256 | + self.main.event_q.push("AQ_CREATE_UDF_OK", **dict(volume_id=uuid.uuid4(), |
257 | + node_id=uuid.uuid4(), |
258 | + marker=marker)) |
259 | + self.main.action_q.create_udf = create_udf |
260 | + # create the symlink |
261 | + os.makedirs(real_udf_path) |
262 | + os.symlink(real_udf_path, udf_path) |
263 | + d = defer.Deferred() |
264 | + self._listen_for('VM_UDF_CREATE_ERROR', d.callback) |
265 | + self._listen_for('VM_UDF_CREATED', lambda r: d.errback(Exception(r))) |
266 | + self.vm.create_udf(udf_path) |
267 | + result = yield d |
268 | + self.assertEquals(0, len(list(self.vm.udfs.keys()))) |
269 | + self.assertEquals(result[0], udf_path) |
270 | + self.assertEquals(result[1], "UDFs can not be a symlink") |
271 | + |
272 | + @defer.inlineCallbacks |
273 | + def test_UDF_cant_be_inside_symlink(self): |
274 | + """Test that a UDF can't be inside a symlink.""" |
275 | + # initialize the root |
276 | + self.vm.handle_SYS_ROOT_RECEIVED('root_uuid') |
277 | + real_udf_path = os.path.join(self.home_dir, "udf_parent", "my_udf") |
278 | + udf_path = os.path.join(self.home_dir, "MyUDF") |
279 | + # patch FakeAQ |
280 | + def create_udf(path, name, marker): |
281 | + """Fake create_udf""" |
282 | + self.main.event_q.push("AQ_CREATE_UDF_OK", **dict(volume_id=uuid.uuid4(), |
283 | + node_id=uuid.uuid4(), |
284 | + marker=marker)) |
285 | + self.main.action_q.create_udf = create_udf |
286 | + # create the symlink |
287 | + os.makedirs(real_udf_path) |
288 | + os.symlink(real_udf_path, udf_path) |
289 | + d = defer.Deferred() |
290 | + self._listen_for('VM_UDF_CREATE_ERROR', d.callback) |
291 | + self._listen_for('VM_UDF_CREATED', lambda r: d.errback(Exception(r))) |
292 | + self.vm.create_udf(udf_path) |
293 | + result = yield d |
294 | + self.assertEquals(0, len(list(self.vm.udfs.keys()))) |
295 | + self.assertEquals(result[0], udf_path) |
296 | + self.assertEquals(result[1], "UDFs can not be a symlink") |
297 | |
298 | class MetadataTestCase(BaseTwistedTestCase): |
299 | md_version_None = False |
300 | |
301 | === modified file 'tests/syncdaemon/test_vm.pyc' |
302 | Binary files tests/syncdaemon/test_vm.pyc 2010-03-31 23:46:58 +0000 and tests/syncdaemon/test_vm.pyc 2010-04-01 20:36:38 +0000 differ |
303 | === modified file 'tests/test_login.pyc' |
304 | Binary files tests/test_login.pyc 2010-03-31 23:46:58 +0000 and tests/test_login.pyc 2010-04-01 20:36:38 +0000 differ |
305 | === modified file 'tests/test_preferences.pyc' |
306 | Binary files tests/test_preferences.pyc 2010-03-31 23:46:58 +0000 and tests/test_preferences.pyc 2010-04-01 20:36:38 +0000 differ |
307 | === modified file 'tests/u1sync/__init__.pyc' |
308 | Binary files tests/u1sync/__init__.pyc 2010-03-31 23:46:58 +0000 and tests/u1sync/__init__.pyc 2010-04-01 20:36:38 +0000 differ |
309 | === modified file 'tests/u1sync/test_init.pyc' |
310 | Binary files tests/u1sync/test_init.pyc 2010-03-31 23:46:58 +0000 and tests/u1sync/test_init.pyc 2010-04-01 20:36:38 +0000 differ |
311 | === modified file 'tests/u1sync/test_merge.pyc' |
312 | Binary files tests/u1sync/test_merge.pyc 2010-03-31 23:46:58 +0000 and tests/u1sync/test_merge.pyc 2010-04-01 20:36:38 +0000 differ |
313 | === modified file 'ubuntuone/syncdaemon/volume_manager.py' |
314 | --- ubuntuone/syncdaemon/volume_manager.py 2010-03-31 23:46:58 +0000 |
315 | +++ ubuntuone/syncdaemon/volume_manager.py 2010-04-01 20:36:38 +0000 |
316 | @@ -840,8 +840,13 @@ |
317 | def create_udf(self, path): |
318 | """Request the creation of a UDF to AQ.""" |
319 | self.log.debug('create udf: %r', path) |
320 | - # check if the path it's ok (outside root and isn't a ancestor or |
321 | - # child of another UDF) |
322 | + # check if path is the realpath, bail out if not |
323 | + if os.path.realpath(path) != path: |
324 | + self.m.event_q.push('VM_UDF_CREATE_ERROR', path, |
325 | + "UDFs can not be a symlink") |
326 | + return |
327 | + # check if the path it's ok (outside root and |
328 | + # isn't a ancestor or child of another UDF) |
329 | if self._is_nested_udf(path): |
330 | self.m.event_q.push('VM_UDF_CREATE_ERROR', path, |
331 | "UDFs can not be nested") |