Skip to content

Commit

Permalink
http.c: Rely on select instead of tracking whether data was received
Browse files Browse the repository at this point in the history
Since now select is used with the file descriptors of the http connections,
tracking whether data was received recently (and trying to read more in
that case) is no longer necessary. Instead, always call select and rely on
it to return as soon as new data can be read.

Signed-off-by: Mika Fischer <mika.fischer@zoopnet.de>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Mika Fischer authored and Junio C Hamano committed Nov 4, 2011
1 parent eb56c82 commit df26c47
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 16 deletions.
16 changes: 1 addition & 15 deletions http.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include "run-command.h"
#include "url.h"

int data_received;
int active_requests;
int http_is_verbose;
size_t http_post_buffer = 16 * LARGE_PACKET_MAX;
Expand Down Expand Up @@ -98,13 +97,11 @@ size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *buffer_)
struct strbuf *buffer = buffer_;

strbuf_add(buffer, ptr, size);
data_received++;
return size;
}

size_t fwrite_null(char *ptr, size_t eltsize, size_t nmemb, void *strbuf)
{
data_received++;
return eltsize * nmemb;
}

Expand Down Expand Up @@ -629,8 +626,6 @@ void step_active_slots(void)
void run_active_slot(struct active_request_slot *slot)
{
#ifdef USE_CURL_MULTI
long last_pos = 0;
long current_pos;
fd_set readfds;
fd_set writefds;
fd_set excfds;
Expand All @@ -640,17 +635,9 @@ void run_active_slot(struct active_request_slot *slot)

slot->finished = &finished;
while (!finished) {
data_received = 0;
step_active_slots();

if (!data_received && slot->local != NULL) {
current_pos = ftell(slot->local);
if (current_pos > last_pos)
data_received++;
last_pos = current_pos;
}

if (slot->in_use && !data_received) {
if (slot->in_use) {
#if LIBCURL_VERSION_NUM >= 0x070f04
long curl_timeout;
curl_multi_timeout(curlm, &curl_timeout);
Expand Down Expand Up @@ -1208,7 +1195,6 @@ static size_t fwrite_sha1_file(char *ptr, size_t eltsize, size_t nmemb,
git_SHA1_Update(&freq->c, expn,
sizeof(expn) - freq->stream.avail_out);
} while (freq->stream.avail_in && freq->zret == Z_OK);
data_received++;
return size;
}

Expand Down
1 change: 0 additions & 1 deletion http.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ extern void step_active_slots(void);
extern void http_init(struct remote *remote);
extern void http_cleanup(void);

extern int data_received;
extern int active_requests;
extern int http_is_verbose;
extern size_t http_post_buffer;
Expand Down

0 comments on commit df26c47

Please sign in to comment.