# HG changeset patch # User Matt Johnston # Date 1400592062 -28800 # Node ID 68723d66dec64e296f5826a9b86e1bbce8ce926e # Parent c919dbb393959ae1f5038c8a34f67f4a0ca3d583 Be more careful in case a platform doesn't define UIO_MAXIOV nor IOV_MAX diff -r c919dbb39395 -r 68723d66dec6 packet.c --- a/packet.c Tue May 20 21:18:48 2014 +0800 +++ b/packet.c Tue May 20 21:21:02 2014 +0800 @@ -70,7 +70,7 @@ TRACE2(("enter write_packet")) dropbear_assert(!isempty(&ses.writequeue)); -#ifdef HAVE_WRITEV +#if defined(HAVE_WRITEV) && (defined(IOV_MAX) || defined(UIO_MAXIOV)) #ifndef IOV_MAX #define IOV_MAX UIO_MAXIOV @@ -79,7 +79,9 @@ /* Make sure the size of the iov is below the maximum allowed by the OS. */ iov_max_count = ses.writequeue.count; if (iov_max_count > IOV_MAX) + { iov_max_count = IOV_MAX; + } iov = m_malloc(sizeof(*iov) * iov_max_count); for (l = ses.writequeue.head, i = 0; l; l = l->link, i++) @@ -124,8 +126,7 @@ } m_free(iov); - -#else +#else /* No writev () */ /* Get the next buffer in the queue of encrypted packets to write*/ writebuf = (buffer*)examine(&ses.writequeue); @@ -160,8 +161,8 @@ /* More packet left to write, leave it in the queue for later */ buf_incrpos(writebuf, written); } +#endif /* writev */ -#endif now = monotonic_now(); ses.last_trx_packet_time = now;