git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] http-backend: Fix symbol clash on AIX 5.3
@ 2009-11-09 18:10 Shawn O. Pearce
  2009-11-09 18:10 ` [PATCH 2/3] t5551-http-fetch: Work around some libcurl versions Shawn O. Pearce
  2009-11-09 18:10 ` [RFC PATCH 3/3] t5551-http-fetch: Work around broken Accept header in libcurl Shawn O. Pearce
  0 siblings, 2 replies; 5+ messages in thread
From: Shawn O. Pearce @ 2009-11-09 18:10 UTC (permalink / raw)
  To: git; +Cc: Mike Ralphson

Mike says:
> > +static void send_file(const char *the_type, const char *name)
> > +{
>
> I think a symbol clash here is responsible for a build breakage in
> next on AIX 5.3:
>
> CC http-backend.o
> http-backend.c:213: error: conflicting types for `send_file'
> /usr/include/sys/socket.h:676: error: previous declaration of `send_file'
> gmake: *** [http-backend.o] Error 1

So we rename the function send_local_file().

Reported-by: Mike Ralphson <mike.ralphson@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 http-backend.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/http-backend.c b/http-backend.c
index 9021266..646e910 100644
--- a/http-backend.c
+++ b/http-backend.c
@@ -209,7 +209,7 @@ static void send_strbuf(const char *type, struct strbuf *buf)
 	safe_write(1, buf->buf, buf->len);
 }
 
-static void send_file(const char *the_type, const char *name)
+static void send_local_file(const char *the_type, const char *name)
 {
 	const char *p = git_path("%s", name);
 	size_t buf_alloc = 8192;
@@ -247,28 +247,28 @@ static void get_text_file(char *name)
 {
 	select_getanyfile();
 	hdr_nocache();
-	send_file("text/plain", name);
+	send_local_file("text/plain", name);
 }
 
 static void get_loose_object(char *name)
 {
 	select_getanyfile();
 	hdr_cache_forever();
-	send_file("application/x-git-loose-object", name);
+	send_local_file("application/x-git-loose-object", name);
 }
 
 static void get_pack_file(char *name)
 {
 	select_getanyfile();
 	hdr_cache_forever();
-	send_file("application/x-git-packed-objects", name);
+	send_local_file("application/x-git-packed-objects", name);
 }
 
 static void get_idx_file(char *name)
 {
 	select_getanyfile();
 	hdr_cache_forever();
-	send_file("application/x-git-packed-objects-toc", name);
+	send_local_file("application/x-git-packed-objects-toc", name);
 }
 
 static int http_config(const char *var, const char *value, void *cb)
-- 
1.6.5.2.351.g09432

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/3] t5551-http-fetch: Work around some libcurl versions
  2009-11-09 18:10 [PATCH 1/3] http-backend: Fix symbol clash on AIX 5.3 Shawn O. Pearce
@ 2009-11-09 18:10 ` Shawn O. Pearce
  2009-11-09 18:36   ` Tarmigan
  2009-11-09 18:10 ` [RFC PATCH 3/3] t5551-http-fetch: Work around broken Accept header in libcurl Shawn O. Pearce
  1 sibling, 1 reply; 5+ messages in thread
From: Shawn O. Pearce @ 2009-11-09 18:10 UTC (permalink / raw)
  To: git; +Cc: Tarmigan

Some versions of libcurl report their output when GIT_CURL_VERBOSE
is set differently than other versions do.  At least one variant
(version unknown but likely pre-7.18.1) reports the POST payload to
stderr, and omits the blank line after each HTTP request/response.
We clip these lines out of the stderr output now before doing the
compare, so we aren't surprised by this trivial difference.

Reported-by: Tarmigan <tarmigan+git@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 t/t5551-http-fetch.sh |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/t/t5551-http-fetch.sh b/t/t5551-http-fetch.sh
index eb0c039..6b0165c 100755
--- a/t/t5551-http-fetch.sh
+++ b/t/t5551-http-fetch.sh
@@ -31,23 +31,19 @@ cat >exp <<EOF
 > GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1
 > Accept: */*
 > Pragma: no-cache
-
 < HTTP/1.1 200 OK
 < Pragma: no-cache
 < Cache-Control: no-cache, max-age=0, must-revalidate
 < Content-Type: application/x-git-upload-pack-advertisement
-< 
 > POST /smart/repo.git/git-upload-pack HTTP/1.1
 > Accept-Encoding: deflate, gzip
 > Content-Type: application/x-git-upload-pack-request
 > Accept: application/x-git-upload-pack-response
 > Content-Length: xxx
-
 < HTTP/1.1 200 OK
 < Pragma: no-cache
 < Cache-Control: no-cache, max-age=0, must-revalidate
 < Content-Type: application/x-git-upload-pack-result
-< 
 EOF
 test_expect_success 'clone http repository' '
 	GIT_CURL_VERBOSE=1 git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
@@ -56,6 +52,8 @@ test_expect_success 'clone http repository' '
 	sed -e "
 		s/Q\$//
 		/^[*] /d
+		/^$/d
+		/^< $/d
 
 		/^[^><]/{
 			s/^/> /
@@ -64,6 +62,8 @@ test_expect_success 'clone http repository' '
 		/^> User-Agent: /d
 		/^> Host: /d
 		s/^> Content-Length: .*/> Content-Length: xxx/
+		/^00..want /d
+		/^00.*done/d
 
 		/^< Server: /d
 		/^< Expires: /d
-- 
1.6.5.2.351.g09432

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [RFC PATCH 3/3] t5551-http-fetch: Work around broken Accept header in libcurl
  2009-11-09 18:10 [PATCH 1/3] http-backend: Fix symbol clash on AIX 5.3 Shawn O. Pearce
  2009-11-09 18:10 ` [PATCH 2/3] t5551-http-fetch: Work around some libcurl versions Shawn O. Pearce
@ 2009-11-09 18:10 ` Shawn O. Pearce
  2009-11-09 18:37   ` Tarmigan
  1 sibling, 1 reply; 5+ messages in thread
From: Shawn O. Pearce @ 2009-11-09 18:10 UTC (permalink / raw)
  To: git; +Cc: Tarmigan

Unfortunately at least one version of libcurl has a bug causing
it to include "Accept: */*" in the same POST request where we have
already asked for "Accept: application/x-git-upload-pack-response".

This is a bug in libcurl, not Git, or our test vector.  The
application has explicitly asked the server for a single content
type, but libcurl has mistakenly also told the server the client
application will accept */*, which is any content type.

Based on the libcurl change log, this "Accept: */*" header bug
may have been fixed in version 7.18.1 released March 30, 2008:

  http://curl.haxx.se/changes.html#7_18_1

Rather than require users to upgrade libcurl we change the test
vector to trim this line out of the 2nd request.

Reported-by: Tarmigan <tarmigan+git@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---

 Actually, I don't want to apply this.

 Tarmigan, your libcurl is broken, it looks like a newer version
 fixes the problem, so I would suggest upgrading it.

 t/t5551-http-fetch.sh |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/t/t5551-http-fetch.sh b/t/t5551-http-fetch.sh
index 6b0165c..9d59065 100755
--- a/t/t5551-http-fetch.sh
+++ b/t/t5551-http-fetch.sh
@@ -61,6 +61,9 @@ test_expect_success 'clone http repository' '
 
 		/^> User-Agent: /d
 		/^> Host: /d
+		/^> POST /,$ {
+			/^> Accept: [*]\\/[*]/d
+		}
 		s/^> Content-Length: .*/> Content-Length: xxx/
 		/^00..want /d
 		/^00.*done/d
-- 
1.6.5.2.351.g09432

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/3] t5551-http-fetch: Work around some libcurl versions
  2009-11-09 18:10 ` [PATCH 2/3] t5551-http-fetch: Work around some libcurl versions Shawn O. Pearce
@ 2009-11-09 18:36   ` Tarmigan
  0 siblings, 0 replies; 5+ messages in thread
From: Tarmigan @ 2009-11-09 18:36 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: git

On Mon, Nov 9, 2009 at 10:10 AM, Shawn O. Pearce <spearce@spearce.org> wrote:
> Some versions of libcurl report their output when GIT_CURL_VERBOSE
> is set differently than other versions do.  At least one variant
> (version unknown but likely pre-7.18.1) reports the POST payload to
> stderr, and omits the blank line after each HTTP request/response.

Yes, my curl is 7.15.5.

> @@ -56,6 +52,8 @@ test_expect_success 'clone http repository' '
>        sed -e "
>                s/Q\$//
>                /^[*] /d
> +               /^$/d
> +               /^< $/d
>
>                /^[^><]/{
>                        s/^/> /
> @@ -64,6 +62,8 @@ test_expect_success 'clone http repository' '
>                /^> User-Agent: /d
>                /^> Host: /d
>                s/^> Content-Length: .*/> Content-Length: xxx/
> +               /^00..want /d
> +               /^00.*done/d

Almost.  This still needs a
'> '
before both of the 00 additions.  Changing this and applying 3/3 makes
the test pass for me.

Tested-with-modifications-by: Tarmigan <tarmigan+git@gmail.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC PATCH 3/3] t5551-http-fetch: Work around broken Accept  header in libcurl
  2009-11-09 18:10 ` [RFC PATCH 3/3] t5551-http-fetch: Work around broken Accept header in libcurl Shawn O. Pearce
@ 2009-11-09 18:37   ` Tarmigan
  0 siblings, 0 replies; 5+ messages in thread
From: Tarmigan @ 2009-11-09 18:37 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: git

On Mon, Nov 9, 2009 at 10:10 AM, Shawn O. Pearce <spearce@spearce.org> wrote:
> Unfortunately at least one version of libcurl has a bug causing
> it to include "Accept: */*" in the same POST request where we have
> already asked for "Accept: application/x-git-upload-pack-response".
>
> This is a bug in libcurl, not Git, or our test vector.  The
> application has explicitly asked the server for a single content
> type, but libcurl has mistakenly also told the server the client
> application will accept */*, which is any content type.
>
> Based on the libcurl change log, this "Accept: */*" header bug
> may have been fixed in version 7.18.1 released March 30, 2008:
>
>  http://curl.haxx.se/changes.html#7_18_1
>
> Rather than require users to upgrade libcurl we change the test
> vector to trim this line out of the 2nd request.
>
> Reported-by: Tarmigan <tarmigan+git@gmail.com>

Tested-by: Tarmigan <tarmigan+git@gmail.com>

> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-11-09 18:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-09 18:10 [PATCH 1/3] http-backend: Fix symbol clash on AIX 5.3 Shawn O. Pearce
2009-11-09 18:10 ` [PATCH 2/3] t5551-http-fetch: Work around some libcurl versions Shawn O. Pearce
2009-11-09 18:36   ` Tarmigan
2009-11-09 18:10 ` [RFC PATCH 3/3] t5551-http-fetch: Work around broken Accept header in libcurl Shawn O. Pearce
2009-11-09 18:37   ` Tarmigan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).