Dug through the source a bit. It seems this is by design, from
main.c:cmd_http -> main.c:process_one_web_page
/* To avoid mischief, make sure the repository basename contains no
** characters other than alphanumerics, "-", "/", and "_".
*/
for(j=strlen(g.zRepositoryName)+1, k=0; zRepo[j] && khttp://fossils.example.com/repo.1.master local.fossil
will actually fetch /dir/on/host/repo_one_master.fossil
$ fossil clone http://fossils.example.com/repo_1.master local.fossil
will fetch the same thing for no obvious reason,
even if there are two different files, repo_1.master.fossil and
repo.1.master, on the server
* The list of allowed characters should probably be longer, if only
for consistency with 'fossil server'. We can even allow periods and
check the result against file.c:file_is_canonical to avoid said
mischief?
Non of this is catastrophic, but... surprised me nonetheless.
Thanks!
-Nick
On Wed, Jan 18, 2012 at 1:45 AM, Nick Zalutskiy wrote:
>
> I have setup fossil to serve repositories using inetd (xinetd in my case) as
> per http://fossil-scm.org/index.html/doc/tip/www/server.wiki
>
> Lets say http://example.com:8585 is serving from /home/fossil/repos and there
> are two fossil files in there:
> repo1.fossil
> repo.name.with.periods.fossil
>
> Then:
>
> $ fossil clone http://example.com:8585/repo1 repo1.fossil
> [OK]
> $ fossil clone http://example.com:8585/repo.name.with.periods repo2.fossil
> fossil: server says: 404 not found
> ...
>
> At the same time if, on the server, we do 'fossil server', instead of serving
> using 'fossil http' + inetd:
>
> $ fossil server --port 8686 /home/fossil/repos/repo.name.with.periods.fossil
>
> Then the earlier clone succeeds:
>
> $ fossil clone http://example.com:8686/repo.name.with.periods repo2.fossil
> [NOW OK]
>
> Is this a bug?
>
> -Nick
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users