X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fdeliver.c;h=733fe6ff5946cc0ebe616fafce20f0a74fca55d9;hb=a76f64c3d496f6e448db3fb0c88fb15c2d1d99db;hp=28a1174af6864fc50125f4a0395a3b5163763002;hpb=aa81ee147537e2b6c2affb90749fb35cfc996396;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/deliver.c b/src/src/deliver.c index 28a1174af..733fe6ff5 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -4147,10 +4147,14 @@ if (PIPE_HEADER_SIZE != snprintf(CS pipe_header, PIPE_HEADER_SIZE+1, "%c%c%05ld" DEBUG(D_deliver) debug_printf("header write id:%c,subid:%c,size:%ld,final:%s\n", id, subid, (long)size, pipe_header); -if ((ret = writev(fd, iov, 2)) != total_len) - log_write(0, LOG_MAIN|LOG_PANIC_DIE, - "Failed writing transport result to pipe (%ld of %ld bytes): %s", - (long)ret, (long)total_len, ret == -1 ? strerror(errno) : "short write"); +for (int retries = 10; retries > 0; retries--) + { + if ((ret = writev(fd, iov, 2)) == total_len) return; + if (ret != -1 || errno != EINTR) break; + } +log_write(0, LOG_MAIN|LOG_PANIC_DIE, + "Failed writing transport result to pipe (%ld of %ld bytes): %s", + (long)ret, (long)total_len, ret == -1 ? strerror(errno) : "short write"); } /*************************************************