]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] call svc_sock_setbufsize when socket created.
authorNeil Brown <neilb@cse.unsw.edu.au>
Fri, 23 Aug 2002 04:21:49 +0000 (21:21 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Fri, 23 Aug 2002 04:21:49 +0000 (21:21 -0700)
bufsiz is re-evaluated on recv if SK_CHNGBUF is set,
but recv will never be reached if the buffers are too small.
So we have to set to to something vaguely reasonable
at init time.

net/sunrpc/svcsock.c

index bbeee09590fdd48438207eb255f72aed2790adbd..3a7213c22c68b6d27b1a90fe296147e0cbb8491c 100644 (file)
@@ -574,6 +574,14 @@ svc_udp_init(struct svc_sock *svsk)
        svsk->sk_recvfrom = svc_udp_recvfrom;
        svsk->sk_sendto = svc_udp_sendto;
 
+       /* initialise setting must have enough space to
+        * receive and respond to one request.  
+        * svc_udp_recvfrom will re-adjust if necessary
+        */
+       svc_sock_setbufsize(svsk->sk_sock,
+                           3 * svsk->sk_server->sv_bufsz,
+                           3 * svsk->sk_server->sv_bufsz);
+
        set_bit(SK_CHNGBUF, &svsk->sk_flags);
 
        return 0;
@@ -946,6 +954,14 @@ svc_tcp_init(struct svc_sock *svsk)
                svsk->sk_reclen = 0;
                svsk->sk_tcplen = 0;
 
+               /* initialise setting must have enough space to
+                * receive and respond to one request.  
+                * svc_tcp_recvfrom will re-adjust if necessary
+                */
+               svc_sock_setbufsize(svsk->sk_sock,
+                                   3 * svsk->sk_server->sv_bufsz,
+                                   3 * svsk->sk_server->sv_bufsz);
+
                set_bit(SK_CHNGBUF, &svsk->sk_flags);
        }