зеркало из https://github.com/mozilla/pjs.git
Bugzilla bug 231849: added performance optimizations (same as those we use
for Unix). r=wtc.
This commit is contained in:
Родитель
d8d2ba210d
Коммит
9de81ba967
|
@ -352,6 +352,21 @@ _MD_send (PRFileDesc *fd, const void *buf, PRInt32 amount, PRInt32 flags,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef BONE_VERSION
|
||||
/*
|
||||
* optimization; if bytes sent is less than "amount" call
|
||||
* select before returning. This is because it is likely that
|
||||
* the next writev() call will return EWOULDBLOCK.
|
||||
*/
|
||||
if ((!fd->secret->nonblocking) && (rv > 0) && (rv < amount)
|
||||
&& (timeout != PR_INTERVAL_NO_WAIT)) {
|
||||
if (socket_io_wait(osfd, WRITE_FD, timeout) < 0) {
|
||||
rv = -1;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
#endif /* BONE_VERSION */
|
||||
|
||||
if (rv < 0) {
|
||||
_PR_MD_MAP_SEND_ERROR(err);
|
||||
}
|
||||
|
@ -451,6 +466,20 @@ PRInt32 _MD_writev(
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* optimization; if bytes sent is less than "amount" call
|
||||
* select before returning. This is because it is likely that
|
||||
* the next writev() call will return EWOULDBLOCK.
|
||||
*/
|
||||
if ((!fd->secret->nonblocking) && (rv > 0) && (rv < amount)
|
||||
&& (timeout != PR_INTERVAL_NO_WAIT)) {
|
||||
if (socket_io_wait(osfd, WRITE_FD, timeout) < 0) {
|
||||
rv = -1;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (rv < 0) {
|
||||
_PR_MD_MAP_WRITEV_ERROR(err);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче