Commit Diff


commit - f290038602962251b907d30417979dd89e1b0e6e
commit + c0876f4c1ecc4e8ccd484a059314ce6de9bdda50
blob - 38aeb3b91a5ae69cc0c0fa0f109e862bdbb8e295
blob + d23a25ebbb9e0f35c608509ec09007188e890e52
--- libexec/got-send-pack/got-send-pack.c
+++ libexec/got-send-pack/got-send-pack.c
@@ -50,6 +50,7 @@
 #include "got_lib_pkt.h"
 #include "got_lib_gitproto.h"
 #include "got_lib_ratelimit.h"
+#include "got_lib_poll.h"
 
 #ifndef nitems
 #define nitems(_a)	(sizeof((_a)) / sizeof((_a)[0]))
@@ -144,7 +145,7 @@ send_pack_file(int sendfd, int packfd, struct imsgbuf 
 {
 	const struct got_error *err;
 	unsigned char buf[8192];
-	ssize_t r, w;
+	ssize_t r;
 	off_t wtotal = 0;
 	struct got_ratelimit rl;
 
@@ -159,12 +160,10 @@ send_pack_file(int sendfd, int packfd, struct imsgbuf 
 			return got_error_from_errno("read");
 		if (r == 0)
 			break;
-		w = write(sendfd, buf, r);
-		if (w == -1)
-			return got_error_from_errno("write");
-		if (w != r)
-			return got_error(GOT_ERR_IO);
-		wtotal += w;
+		err = got_poll_write_full(sendfd, buf, r);
+		if (err)
+			return NULL;
+		wtotal += r;
 		err = send_upload_progress(ibuf, wtotal, &rl);
 		if (err)
 			return err;