|
|
@@ -102,6 +102,7 @@ struct {
|
|
|
int otp_num_warn;
|
|
|
int fragmentation_latency;
|
|
|
int peer_ssl;
|
|
|
+ int peer_tcp_sndbuf;
|
|
|
char *scopes[MAX_SCOPES];
|
|
|
int num_scopes;
|
|
|
int send_buffer_size;
|
|
|
@@ -625,6 +626,7 @@ void print_help (const char *name)
|
|
|
" )\n"
|
|
|
" (transport-mode=tcp?\n"
|
|
|
" (ssl? [--peer-ssl])\n"
|
|
|
+ " [--peer-tcp-sndbuf <bytes / 0>]\n"
|
|
|
" )\n"
|
|
|
" [--send-buffer-size <num-packets>]\n"
|
|
|
" [--send-buffer-relay-size <num-packets>]\n"
|
|
|
@@ -674,6 +676,7 @@ int parse_arguments (int argc, char *argv[])
|
|
|
options.otp_mode = SPPROTO_OTP_MODE_NONE;
|
|
|
options.fragmentation_latency = PEER_DEFAULT_UDP_FRAGMENTATION_LATENCY;
|
|
|
options.peer_ssl = 0;
|
|
|
+ options.peer_tcp_sndbuf = -1;
|
|
|
options.send_buffer_size = PEER_DEFAULT_SEND_BUFFER_SIZE;
|
|
|
options.send_buffer_relay_size = PEER_DEFAULT_SEND_BUFFER_RELAY_SIZE;
|
|
|
options.max_macs = PEER_DEFAULT_MAX_MACS;
|
|
|
@@ -976,6 +979,17 @@ int parse_arguments (int argc, char *argv[])
|
|
|
else if (!strcmp(arg, "--peer-ssl")) {
|
|
|
options.peer_ssl = 1;
|
|
|
}
|
|
|
+ else if (!strcmp(arg, "--peer-tcp-sndbuf")) {
|
|
|
+ if (1 >= argc - i) {
|
|
|
+ fprintf(stderr, "%s: requires an argument\n", arg);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ if ((options.peer_tcp_sndbuf = atoi(argv[i + 1])) < 0) {
|
|
|
+ fprintf(stderr, "%s: wrong argument\n", arg);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
else if (!strcmp(arg, "--send-buffer-size")) {
|
|
|
if (1 >= argc - i) {
|
|
|
fprintf(stderr, "%s: requires an argument\n", arg);
|
|
|
@@ -1097,6 +1111,11 @@ int parse_arguments (int argc, char *argv[])
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ if (!(!(options.peer_tcp_sndbuf >= 0) || options.transport_mode == TRANSPORT_MODE_TCP)) {
|
|
|
+ fprintf(stderr, "False: --peer-tcp-sndbuf => TCP\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
@@ -1476,7 +1495,9 @@ int peer_init_link (struct peer_data *peer)
|
|
|
&peer->pio.tcp.pio, &ss, options.peer_ssl,
|
|
|
(options.peer_ssl ? peer->cert : NULL),
|
|
|
(options.peer_ssl ? peer->cert_len : -1),
|
|
|
- data_mtu, recv_if,
|
|
|
+ data_mtu,
|
|
|
+ (options.peer_tcp_sndbuf >= 0 ? options.peer_tcp_sndbuf : PEER_DEFAULT_TCP_SNDBUF),
|
|
|
+ recv_if,
|
|
|
(StreamPeerIO_handler_error)peer_tcp_pio_handler_error, peer
|
|
|
)) {
|
|
|
peer_log(peer, BLOG_ERROR, "StreamPeerIO_Init failed");
|