<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/http.c, branch v2.1.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.1.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.1.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2014-07-09T18:33:28Z</updated>
<entry>
<title>Merge branch 'jk/skip-prefix'</title>
<updated>2014-07-09T18:33:28Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-07-09T18:33:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e91ae32a01ffe294b8510c1d8cd7138493a0712f'/>
<id>urn:sha1:e91ae32a01ffe294b8510c1d8cd7138493a0712f</id>
<content type='text'>
* jk/skip-prefix:
  http-push: refactor parsing of remote object names
  imap-send: use skip_prefix instead of using magic numbers
  use skip_prefix to avoid repeated calculations
  git: avoid magic number with skip_prefix
  fetch-pack: refactor parsing in get_ack
  fast-import: refactor parsing of spaces
  stat_opt: check extra strlen call
  daemon: use skip_prefix to avoid magic numbers
  fast-import: use skip_prefix for parsing input
  use skip_prefix to avoid repeating strings
  use skip_prefix to avoid magic numbers
  transport-helper: avoid reading past end-of-string
  fast-import: fix read of uninitialized argv memory
  apply: use skip_prefix instead of raw addition
  refactor skip_prefix to return a boolean
  avoid using skip_prefix as a boolean
  daemon: mark some strings as const
  parse_diff_color_slot: drop ofs parameter
</content>
</entry>
<entry>
<title>use skip_prefix to avoid repeated calculations</title>
<updated>2014-06-20T17:45:19Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-06-18T19:57:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=de8118e153c5e527263086605e437ccca5d4f1ef'/>
<id>urn:sha1:de8118e153c5e527263086605e437ccca5d4f1ef</id>
<content type='text'>
In some cases, we use starts_with to check for a prefix, and
then use an already-calculated prefix length to advance a
pointer past the prefix. There are no magic numbers or
duplicated strings here, but we can still make the code
simpler and more obvious by using skip_prefix.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>http: fix charset detection of extract_content_type()</title>
<updated>2014-06-17T22:25:00Z</updated>
<author>
<name>Yi EungJun</name>
<email>eungjun.yi@navercorp.com</email>
</author>
<published>2014-06-17T22:11:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f34a655d4d1e25f314cd5760e2a39bec28950aa1'/>
<id>urn:sha1:f34a655d4d1e25f314cd5760e2a39bec28950aa1</id>
<content type='text'>
extract_content_type() could not extract a charset parameter if the
parameter is not the first one and there is a whitespace and a following
semicolon just before the parameter. For example:

    text/plain; format=fixed ;charset=utf-8

And it also could not handle correctly some other cases, such as:

    text/plain; charset=utf-8; format=fixed
    text/plain; some-param="a long value with ;semicolons;"; charset=utf-8

Thanks-to: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Yi EungJun &lt;eungjun.yi@navercorp.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>http: default text charset to iso-8859-1</title>
<updated>2014-05-27T16:59:22Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-05-22T09:36:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c553fd1c1ef76688b6200e66a825b530b0b02140'/>
<id>urn:sha1:c553fd1c1ef76688b6200e66a825b530b0b02140</id>
<content type='text'>
This is specified by RFC 2616 as the default if no "charset"
parameter is given.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>http: optionally extract charset parameter from content-type</title>
<updated>2014-05-27T16:59:19Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-05-22T09:30:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e31316263af98c4583be39b469f3152a23eba91d'/>
<id>urn:sha1:e31316263af98c4583be39b469f3152a23eba91d</id>
<content type='text'>
Since the previous commit, we now give a sanitized,
shortened version of the content-type header to any callers
who ask for it.

This patch adds back a way for them to cleanly access
specific parameters to the type. We could easily extract all
parameters and make them available via a string_list, but:

  1. That complicates the interface and memory management.

  2. In practice, no planned callers care about anything
     except the charset.

This patch therefore goes with the simplest thing, and we
can expand or change the interface later if it becomes
necessary.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>http: extract type/subtype portion of content-type</title>
<updated>2014-05-27T16:57:00Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-05-22T09:29:47Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=bf197fd7eebcb3579dd659af35822ce88adc66c8'/>
<id>urn:sha1:bf197fd7eebcb3579dd659af35822ce88adc66c8</id>
<content type='text'>
When we get a content-type from curl, we get the whole
header line, including any parameters, and without any
normalization (like downcasing or whitespace) applied.
If we later try to match it with strcmp() or even
strcasecmp(), we may get false negatives.

This could cause two visible behaviors:

  1. We might fail to recognize a smart-http server by its
     content-type.

  2. We might fail to relay text/plain error messages to
     users (especially if they contain a charset parameter).

This patch teaches the http code to extract and normalize
just the type/subtype portion of the string. This is
technically passing out less information to the callers, who
can no longer see the parameters. But none of the current
callers cares, and a future patch will add back an
easier-to-use method for accessing those parameters.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'mh/object-code-cleanup'</title>
<updated>2014-03-14T21:26:29Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-14T21:26:29Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=060be00621dbac572ac71d07ae40884e0d4303f3'/>
<id>urn:sha1:060be00621dbac572ac71d07ae40884e0d4303f3</id>
<content type='text'>
* mh/object-code-cleanup:
  sha1_file.c: document a bunch of functions defined in the file
  sha1_file_name(): declare to return a const string
  find_pack_entry(): document last_found_pack
  replace_object: use struct members instead of an array
</content>
</entry>
<entry>
<title>sha1_file_name(): declare to return a const string</title>
<updated>2014-02-24T17:10:22Z</updated>
<author>
<name>Michael Haggerty</name>
<email>mhagger@alum.mit.edu</email>
</author>
<published>2014-02-21T16:32:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=30d6c6eabfefed330bebbed9126fe21bf349fd6b'/>
<id>urn:sha1:30d6c6eabfefed330bebbed9126fe21bf349fd6b</id>
<content type='text'>
Change the return value of sha1_file_name() to (const char *).
(Callers have no business mucking about here.)  Change callers
accordingly, deleting a few superfluous temporary variables along the
way.

Signed-off-by: Michael Haggerty &lt;mhagger@alum.mit.edu&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>http: never use curl_easy_perform</title>
<updated>2014-02-18T23:50:57Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-02-18T10:34:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=beed336c3e35acfd7aad9033eb9294e42b9530af'/>
<id>urn:sha1:beed336c3e35acfd7aad9033eb9294e42b9530af</id>
<content type='text'>
We currently don't reuse http connections when fetching via
the smart-http protocol. This is bad because the TCP
handshake introduces latency, and especially because SSL
connection setup may be non-trivial.

We can fix it by consistently using curl's "multi"
interface.  The reason is rather complicated:

Our http code has two ways of being used: queuing many
"slots" to be fetched in parallel, or fetching a single
request in a blocking manner. The parallel code is built on
curl's "multi" interface. Most of the single-request code
uses http_request, which is built on top of the parallel
code (we just feed it one slot, and wait until it finishes).

However, one could also accomplish the single-request scheme
by avoiding curl's multi interface entirely and just using
curl_easy_perform. This is simpler, and is used by post_rpc
in the smart-http protocol.

It does work to use the same curl handle in both contexts,
as long as it is not at the same time.  However, internally
curl may not share all of the cached resources between both
contexts. In particular, a connection formed using the
"multi" code will go into a reuse pool connected to the
"multi" object. Further requests using the "easy" interface
will not be able to reuse that connection.

The smart http protocol does ref discovery via http_request,
which uses the "multi" interface, and then follows up with
the "easy" interface for its rpc calls. As a result, we make
two HTTP connections rather than reusing a single one.

We could teach the ref discovery to use the "easy"
interface. But it is only once we have done this discovery
that we know whether the protocol will be smart or dumb. If
it is dumb, then our further requests, which want to fetch
objects in parallel, will not be able to reuse the same
connection.

Instead, this patch switches post_rpc to build on the
parallel interface, which means that we use it consistently
everywhere. It's a little more complicated to use, but since
we have the infrastructure already, it doesn't add any code;
we can just factor out the relevant bits from http_request.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'cc/starts-n-ends-with'</title>
<updated>2013-12-17T20:02:44Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2013-12-17T19:47:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ad7044857660af7ffaaf8fbbccc77b817d1b938f'/>
<id>urn:sha1:ad7044857660af7ffaaf8fbbccc77b817d1b938f</id>
<content type='text'>
Remove a few duplicate implementations of prefix/suffix comparison
functions, and rename them to starts_with and ends_with.

* cc/starts-n-ends-with:
  replace {pre,suf}fixcmp() with {starts,ends}_with()
  strbuf: introduce starts_with() and ends_with()
  builtin/remote: remove postfixcmp() and use suffixcmp() instead
  environment: normalize use of prefixcmp() by removing " != 0"
</content>
</entry>
</feed>
