1
1

Fix socket buffer size checks. Clearly this wasn't tested well.

On Linux it's possible to set the socket buffer to one size but
(correctly it seems) get back some larger size up to 2x what you
asked for (see tcp(7)).

While here, make related debugging output more useful.

Fixes (again) #356.
Этот коммит содержится в:
Bruce A. Mah 2016-12-01 11:53:37 -08:00
родитель a621cc263f
Коммит 55598a072f
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4984910A8CAAEE8A
2 изменённых файлов: 24 добавлений и 24 удалений

Просмотреть файл

@ -426,13 +426,13 @@ iperf_tcp_connect(struct iperf_test *test)
i_errno = IESETBUF; i_errno = IESETBUF;
return -1; return -1;
} }
if (test->settings->socket_bufsize && test->settings->socket_bufsize != opt) { if (test->debug) {
printf("SNDBUF is %u, expecting %u\n", opt, test->settings->socket_bufsize);
}
if (test->settings->socket_bufsize && test->settings->socket_bufsize > opt) {
i_errno = IESETBUF2; i_errno = IESETBUF2;
return -1; return -1;
} }
if (test->debug) {
printf("SO_SNDBUF is %u\n", opt);
}
/* Read back and verify the receiver socket buffer size */ /* Read back and verify the receiver socket buffer size */
optlen = sizeof(opt); optlen = sizeof(opt);
@ -444,13 +444,13 @@ iperf_tcp_connect(struct iperf_test *test)
i_errno = IESETBUF; i_errno = IESETBUF;
return -1; return -1;
} }
if (test->settings->socket_bufsize && test->settings->socket_bufsize != opt) { if (test->debug) {
printf("RCVBUF is %u, expecting %u\n", opt, test->settings->socket_bufsize);
}
if (test->settings->socket_bufsize && test->settings->socket_bufsize > opt) {
i_errno = IESETBUF2; i_errno = IESETBUF2;
return -1; return -1;
} }
if (test->debug) {
printf("SO_RCVBUF is %u\n", opt);
}
#if defined(HAVE_FLOWLABEL) #if defined(HAVE_FLOWLABEL)
if (test->settings->flowlabel) { if (test->settings->flowlabel) {

Просмотреть файл

@ -252,13 +252,13 @@ iperf_udp_accept(struct iperf_test *test)
i_errno = IESETBUF; i_errno = IESETBUF;
return -1; return -1;
} }
if (test->settings->socket_bufsize && test->settings->socket_bufsize != opt) { if (test->debug) {
printf("SNDBUF is %u, expecting %u\n", opt, test->settings->socket_bufsize);
}
if (test->settings->socket_bufsize && test->settings->socket_bufsize > opt) {
i_errno = IESETBUF2; i_errno = IESETBUF2;
return -1; return -1;
} }
if (test->debug) {
printf("SO_SNDBUF is %u\n", opt);
}
/* Read back and verify the receiver socket buffer size */ /* Read back and verify the receiver socket buffer size */
optlen = sizeof(opt); optlen = sizeof(opt);
@ -266,13 +266,13 @@ iperf_udp_accept(struct iperf_test *test)
i_errno = IESETBUF; i_errno = IESETBUF;
return -1; return -1;
} }
if (test->settings->socket_bufsize && test->settings->socket_bufsize != opt) { if (test->debug) {
printf("RCVBUF is %u, expecting %u\n", opt, test->settings->socket_bufsize);
}
if (test->settings->socket_bufsize && test->settings->socket_bufsize > opt) {
i_errno = IESETBUF2; i_errno = IESETBUF2;
return -1; return -1;
} }
if (test->debug) {
printf("SO_RCVBUF is %u\n", opt);
}
#if defined(HAVE_SO_MAX_PACING_RATE) #if defined(HAVE_SO_MAX_PACING_RATE)
/* If socket pacing is available and not disabled, try it. */ /* If socket pacing is available and not disabled, try it. */
@ -388,13 +388,13 @@ iperf_udp_connect(struct iperf_test *test)
i_errno = IESETBUF; i_errno = IESETBUF;
return -1; return -1;
} }
if (test->settings->socket_bufsize && test->settings->socket_bufsize != opt) { if (test->debug) {
printf("SNDBUF is %u, expecting %u\n", opt, test->settings->socket_bufsize);
}
if (test->settings->socket_bufsize && test->settings->socket_bufsize > opt) {
i_errno = IESETBUF2; i_errno = IESETBUF2;
return -1; return -1;
} }
if (test->debug) {
printf("SO_SNDBUF is %u\n", opt);
}
/* Read back and verify the receiver socket buffer size */ /* Read back and verify the receiver socket buffer size */
optlen = sizeof(opt); optlen = sizeof(opt);
@ -402,13 +402,13 @@ iperf_udp_connect(struct iperf_test *test)
i_errno = IESETBUF; i_errno = IESETBUF;
return -1; return -1;
} }
if (test->settings->socket_bufsize && test->settings->socket_bufsize != opt) { if (test->debug) {
printf("RCVBUF is %u, expecting %u\n", opt, test->settings->socket_bufsize);
}
if (test->settings->socket_bufsize && test->settings->socket_bufsize > opt) {
i_errno = IESETBUF2; i_errno = IESETBUF2;
return -1; return -1;
} }
if (test->debug) {
printf("SO_RCVBUF is %u\n", opt);
}
#if defined(HAVE_SO_MAX_PACING_RATE) #if defined(HAVE_SO_MAX_PACING_RATE)
/* If socket pacing is available and not disabled, try it. */ /* If socket pacing is available and not disabled, try it. */