- if (options->hpn_buffer_size == -1)
- options->hpn_buffer_size = 2*1024*1024;
- else {
- if (options->hpn_buffer_size == 0)
- options->hpn_buffer_size = 1;
- /* limit the maximum buffer to 7MB */
- if (options->hpn_buffer_size > 7168)
- options->hpn_buffer_size = 7168;
- options->hpn_buffer_size *=1024;
+ if (options->hpn_buffer_size == -1)
+ {
+ /* option not explicitly set. Now we have to figure out */
+ /* what value to use */
+ if (options->hpn_disabled == 1)
+ {
+ options->hpn_buffer_size = CHAN_SES_WINDOW_DEFAULT;
+ }
+ else
+ {
+ /* get the current RCV size and set it to that */
+ /*create a socket but don't connect it */
+ /* we use that the get the rcv socket size */
+ sock = socket(AF_INET, SOCK_STREAM, 0);
+ getsockopt(sock, SOL_SOCKET, SO_RCVBUF,
+ &socksize, &socksizelen);
+ close(sock);
+ options->hpn_buffer_size = socksize;
+ debug ("HPN Buffer Size: %d", options->hpn_buffer_size);
+
+ }
+ }
+ else
+ {
+ /* we have to do this incase the user sets both values in a contradictory */
+ /* manner. hpn_disabled overrrides hpn_buffer_size*/
+ if (options->hpn_disabled <= 0)
+ {
+ if (options->hpn_buffer_size == 0)
+ options->hpn_buffer_size = 1;
+ /* limit the maximum buffer to 64MB */
+ if (options->hpn_buffer_size > 64*1024)
+ options->hpn_buffer_size = 64*1024;
+ options->hpn_buffer_size *=1024;
+ }
+ else
+ options->hpn_buffer_size = CHAN_SES_WINDOW_DEFAULT;