+ /*
+ * rdar://15526688: Limit the send and receive sizes to sb_max
+ * by using the same scaling as sbreserve()
+ */
+ sbmaxsize = (u_quad_t)sb_max * MCLBYTES / (MSIZE + MCLBYTES);
+
+ if (kctl->sendbufsize > sbmaxsize)
+ sendbufsize = sbmaxsize;
+ else
+ sendbufsize = kctl->sendbufsize;
+
+ if (kctl->recvbufsize > sbmaxsize)
+ recvbufsize = sbmaxsize;
+ else
+ recvbufsize = kctl->recvbufsize;
+
+ error = soreserve(so, sendbufsize, recvbufsize);