Skip to content

Commit d299a7a

Browse files
authored
Merge pull request libgit2#6205 from ccstolley/ccs_fix_http_push_timeout
push: Prepare pack before sending pack header.
2 parents 1e7c8b1 + aceac67 commit d299a7a

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

src/pack-objects.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,7 +1308,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
13081308
#define ll_find_deltas(pb, l, ls, w, d) find_deltas(pb, l, &ls, w, d)
13091309
#endif
13101310

1311-
static int prepare_pack(git_packbuilder *pb)
1311+
int git_packbuilder__prepare(git_packbuilder *pb)
13121312
{
13131313
git_pobject **delta_list;
13141314
size_t i, n = 0;
@@ -1353,7 +1353,7 @@ static int prepare_pack(git_packbuilder *pb)
13531353
return 0;
13541354
}
13551355

1356-
#define PREPARE_PACK if (prepare_pack(pb) < 0) { return -1; }
1356+
#define PREPARE_PACK if (git_packbuilder__prepare(pb) < 0) { return -1; }
13571357

13581358
int git_packbuilder_foreach(git_packbuilder *pb, int (*cb)(void *buf, size_t size, void *payload), void *payload)
13591359
{

src/pack-objects.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,7 @@ struct git_packbuilder {
100100
};
101101

102102
int git_packbuilder__write_buf(git_str *buf, git_packbuilder *pb);
103+
int git_packbuilder__prepare(git_packbuilder *pb);
104+
103105

104106
#endif

src/transports/smart_protocol.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,6 +1036,10 @@ int git_smart__push(git_transport *transport, git_push *push)
10361036
}
10371037
}
10381038

1039+
/* prepare pack before sending pack header to avoid timeouts */
1040+
if (need_pack && ((error = git_packbuilder__prepare(push->pb))) < 0)
1041+
goto done;
1042+
10391043
if ((error = git_smart__get_push_stream(t, &packbuilder_payload.stream)) < 0 ||
10401044
(error = gen_pktline(&pktline, push)) < 0 ||
10411045
(error = packbuilder_payload.stream->write(packbuilder_payload.stream, git_str_cstr(&pktline), git_str_len(&pktline))) < 0)

0 commit comments

Comments
 (0)