- if (_rpcfdtype == 0 && defport != 0 &&
- ((sock = makesock(defport, IPPROTO_UDP, bufsiz)) < 0)) {
- xlog(L_FATAL, "%s: could not make a UDP socket\n",
- name);
+ static SVCXPRT *last_transp = NULL;
+
+ if (_rpcfdtype == 0) {
+ if (last_transp
+ && (!defport || defport == last_transp->xp_port)) {
+ transp = last_transp;
+ goto udp_transport;
+ }
+ if ((sock = makesock(defport, IPPROTO_UDP, bufsiz)) < 0) {
+ xlog(L_FATAL, "%s: cannot make a UDP socket\n",
+ name);
+ }