diff options
Diffstat (limited to 'net/sunrpc/svcsock.c')
-rw-r--r-- | net/sunrpc/svcsock.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 44a729d6efea..492a1dc544f3 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
@@ -893,12 +893,17 @@ svc_udp_sendto(struct svc_rqst *rqstp) | |||
893 | return error; | 893 | return error; |
894 | } | 894 | } |
895 | 895 | ||
896 | static void svc_udp_prep_reply_hdr(struct svc_rqst *rqstp) | ||
897 | { | ||
898 | } | ||
899 | |||
896 | static struct svc_xprt_ops svc_udp_ops = { | 900 | static struct svc_xprt_ops svc_udp_ops = { |
897 | .xpo_recvfrom = svc_udp_recvfrom, | 901 | .xpo_recvfrom = svc_udp_recvfrom, |
898 | .xpo_sendto = svc_udp_sendto, | 902 | .xpo_sendto = svc_udp_sendto, |
899 | .xpo_release_rqst = svc_release_skb, | 903 | .xpo_release_rqst = svc_release_skb, |
900 | .xpo_detach = svc_sock_detach, | 904 | .xpo_detach = svc_sock_detach, |
901 | .xpo_free = svc_sock_free, | 905 | .xpo_free = svc_sock_free, |
906 | .xpo_prep_reply_hdr = svc_udp_prep_reply_hdr, | ||
902 | }; | 907 | }; |
903 | 908 | ||
904 | static struct svc_xprt_class svc_udp_class = { | 909 | static struct svc_xprt_class svc_udp_class = { |
@@ -1350,12 +1355,24 @@ svc_tcp_sendto(struct svc_rqst *rqstp) | |||
1350 | return sent; | 1355 | return sent; |
1351 | } | 1356 | } |
1352 | 1357 | ||
1358 | /* | ||
1359 | * Setup response header. TCP has a 4B record length field. | ||
1360 | */ | ||
1361 | static void svc_tcp_prep_reply_hdr(struct svc_rqst *rqstp) | ||
1362 | { | ||
1363 | struct kvec *resv = &rqstp->rq_res.head[0]; | ||
1364 | |||
1365 | /* tcp needs a space for the record length... */ | ||
1366 | svc_putnl(resv, 0); | ||
1367 | } | ||
1368 | |||
1353 | static struct svc_xprt_ops svc_tcp_ops = { | 1369 | static struct svc_xprt_ops svc_tcp_ops = { |
1354 | .xpo_recvfrom = svc_tcp_recvfrom, | 1370 | .xpo_recvfrom = svc_tcp_recvfrom, |
1355 | .xpo_sendto = svc_tcp_sendto, | 1371 | .xpo_sendto = svc_tcp_sendto, |
1356 | .xpo_release_rqst = svc_release_skb, | 1372 | .xpo_release_rqst = svc_release_skb, |
1357 | .xpo_detach = svc_sock_detach, | 1373 | .xpo_detach = svc_sock_detach, |
1358 | .xpo_free = svc_sock_free, | 1374 | .xpo_free = svc_sock_free, |
1375 | .xpo_prep_reply_hdr = svc_tcp_prep_reply_hdr, | ||
1359 | }; | 1376 | }; |
1360 | 1377 | ||
1361 | static struct svc_xprt_class svc_tcp_class = { | 1378 | static struct svc_xprt_class svc_tcp_class = { |