Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
17a4977b
Commit
17a4977b
authored
Nov 03, 2007
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
In mplex_write(), make extra sure something unexpected doesn't get
put between the split output of a long buffer.
parent
4f9b139a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
11 deletions
+10
-11
io.c
io.c
+10
-11
No files found.
io.c
View file @
17a4977b
...
...
@@ -100,7 +100,7 @@ static char ff_lastchar;
#ifdef ICONV_OPTION
static
xbuf
iconv_buf
=
EMPTY_XBUF
;
#endif
static
int
defer_forwarding_messages
=
0
;
static
int
defer_forwarding_messages
=
0
,
defer_forwarding_keep
=
0
;
static
int
select_timeout
=
SELECT_TIMEOUT
;
static
int
active_filecnt
=
0
;
static
OFF_T
active_bytecnt
=
0
;
...
...
@@ -440,7 +440,7 @@ static void read_msg_fd(void)
no_flush
--
;
msg_fd_in
=
fd
;
if
(
!--
defer_forwarding_messages
)
if
(
!--
defer_forwarding_messages
&&
!
no_flush
)
msg_flush
();
}
...
...
@@ -480,7 +480,9 @@ static void mplex_write(int fd, enum msgcode code, const char *buf, size_t len,
else
memcpy
(
buffer
+
4
,
buf
,
n
);
defer_forwarding_keep
=
1
;
/* defer_forwarding_messages++ on return */
writefd_unbuffered
(
fd
,
buffer
,
n
+
4
);
defer_forwarding_keep
=
0
;
len
-=
n
;
buf
+=
n
;
...
...
@@ -492,22 +494,18 @@ static void mplex_write(int fd, enum msgcode code, const char *buf, size_t len,
INIT_CONST_XBUF
(
outbuf
,
buffer
);
INIT_XBUF
(
inbuf
,
(
char
*
)
buf
,
len
,
-
1
);
defer_forwarding_messages
++
;
do
{
iconvbufs
(
ic_send
,
&
inbuf
,
&
outbuf
,
ICB_INCLUDE_BAD
|
ICB_INCLUDE_INCOMPLETE
);
writefd_unbuffered
(
fd
,
outbuf
.
buf
,
outbuf
.
len
);
}
while
(
inbuf
.
len
);
if
(
!--
defer_forwarding_messages
)
msg_flush
();
}
else
#endif
if
(
len
)
{
defer_forwarding_messages
++
;
if
(
len
)
writefd_unbuffered
(
fd
,
buf
,
len
);
if
(
!--
defer_forwarding_messages
)
msg_flush
();
}
if
(
!--
defer_forwarding_messages
&&
!
no_flush
)
msg_flush
();
}
int
send_msg
(
enum
msgcode
code
,
const
char
*
buf
,
int
len
,
int
convert
)
...
...
@@ -1512,7 +1510,8 @@ static void writefd_unbuffered(int fd, const char *buf, size_t len)
}
no_flush
--
;
if
(
!
(
defer_forwarding_messages
-=
defer_inc
))
defer_inc
-=
defer_forwarding_keep
;
if
(
!
(
defer_forwarding_messages
-=
defer_inc
)
&&
!
no_flush
)
msg_flush
();
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment