On Mon, Dec 29, 2008 at 05:32:15AM +0300, Kirill A. Korinskiy wrote: > The program calls remote_ls() to get list of files from the server > over HTTP; handle_remote_ls_ctx() is used to parse its response to > populate "struct remote_ls_ctx" that is returned from remote_ls(). > > The handle_remote_ls_ctx() function assumed that the server returns a > local path in href field, but RFC 4918 (14.7) demand of support full > URI (e.g. "http://localhost:8080/repo.git"). > > This resulted in push failure (e.g. git-http-push issues a PROPFIND > request to "/repo.git/alhost:8080/repo.git/refs/" to the server). > > Signed-off-by: Kirill A. Korinskiy <catap@xxxxxxxx> > --- > http-push.c | 25 +++++++++++++++++++------ > 1 files changed, 19 insertions(+), 6 deletions(-) > > diff --git a/http-push.c b/http-push.c > index 7c6460919bf3eba10c46cede11ffdd9c53fd2dd2..a4b7d08663504a57008f66a39fffe293f62c1d08 100644 > --- a/http-push.c > +++ b/http-push.c > @@ -87,6 +87,7 @@ static struct object_list *objects; > struct repo > { > char *url; > + char *path; > int path_len; > int has_info_refs; > int can_update_info_refs; > @@ -1424,9 +1425,19 @@ static void handle_remote_ls_ctx(struct xml_ctx *ctx, int tag_closed) > ls->userFunc(ls); > } > } else if (!strcmp(ctx->name, DAV_PROPFIND_NAME) && ctx->cdata) { > - ls->dentry_name = xmalloc(strlen(ctx->cdata) - > + char *path = ctx->cdata; > + if (*ctx->cdata == 'h') { > + path = strstr(path, "//"); I would make that a "://" > + if (path) { > + path = strchr(path+2, '/'); and s/2/3/, accordingly. But I realize the existing code already does something like what your are doing... Mike -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html