mirror of
https://github.com/clearml/dropbear
synced 2025-03-03 18:52:00 +00:00
Be more careful in case a platform doesn't define UIO_MAXIOV nor IOV_MAX
This commit is contained in:
parent
0e0ff51582
commit
2a1d28ea3a
9
packet.c
9
packet.c
@ -70,7 +70,7 @@ void write_packet() {
|
|||||||
TRACE2(("enter write_packet"))
|
TRACE2(("enter write_packet"))
|
||||||
dropbear_assert(!isempty(&ses.writequeue));
|
dropbear_assert(!isempty(&ses.writequeue));
|
||||||
|
|
||||||
#ifdef HAVE_WRITEV
|
#if defined(HAVE_WRITEV) && (defined(IOV_MAX) || defined(UIO_MAXIOV))
|
||||||
|
|
||||||
#ifndef IOV_MAX
|
#ifndef IOV_MAX
|
||||||
#define IOV_MAX UIO_MAXIOV
|
#define IOV_MAX UIO_MAXIOV
|
||||||
@ -79,7 +79,9 @@ void write_packet() {
|
|||||||
/* Make sure the size of the iov is below the maximum allowed by the OS. */
|
/* Make sure the size of the iov is below the maximum allowed by the OS. */
|
||||||
iov_max_count = ses.writequeue.count;
|
iov_max_count = ses.writequeue.count;
|
||||||
if (iov_max_count > IOV_MAX)
|
if (iov_max_count > IOV_MAX)
|
||||||
|
{
|
||||||
iov_max_count = IOV_MAX;
|
iov_max_count = IOV_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
iov = m_malloc(sizeof(*iov) * iov_max_count);
|
iov = m_malloc(sizeof(*iov) * iov_max_count);
|
||||||
for (l = ses.writequeue.head, i = 0; l; l = l->link, i++)
|
for (l = ses.writequeue.head, i = 0; l; l = l->link, i++)
|
||||||
@ -124,8 +126,7 @@ void write_packet() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_free(iov);
|
m_free(iov);
|
||||||
|
#else /* No writev () */
|
||||||
#else
|
|
||||||
/* Get the next buffer in the queue of encrypted packets to write*/
|
/* Get the next buffer in the queue of encrypted packets to write*/
|
||||||
writebuf = (buffer*)examine(&ses.writequeue);
|
writebuf = (buffer*)examine(&ses.writequeue);
|
||||||
|
|
||||||
@ -160,8 +161,8 @@ void write_packet() {
|
|||||||
/* More packet left to write, leave it in the queue for later */
|
/* More packet left to write, leave it in the queue for later */
|
||||||
buf_incrpos(writebuf, written);
|
buf_incrpos(writebuf, written);
|
||||||
}
|
}
|
||||||
|
#endif /* writev */
|
||||||
|
|
||||||
#endif
|
|
||||||
now = monotonic_now();
|
now = monotonic_now();
|
||||||
ses.last_trx_packet_time = now;
|
ses.last_trx_packet_time = now;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user