- if (!from)
- return real_recvfrom(sk, buf, len, flags, 0, 0);
- PRESERVING_ERRNO({
- n = real_recvfrom(sk, buf, len, flags, SA(sabuf), &mylen);
- if (n < 0)
- return (-1);
- return_fake_name(SA(sabuf), mylen, from, fromlen);
- });
+ D( fprintf(stderr, "noip(%d): RECVFROM sk=%d, len=%lu, flags=%d",
+ pid, sk, (unsigned long)len, flags); )
+
+ if (!from) {
+ D( fprintf(stderr, " -> null addr; pass through"); )
+ n = real_recvfrom(sk, buf, len, flags, 0, 0);
+ } else {
+ PRESERVING_ERRNO({
+ n = real_recvfrom(sk, buf, len, flags, SA(sabuf), &mylen);
+ if (n >= 0) {
+ D( fprintf(stderr, " -> converting...\n"); )
+ return_fake_name(SA(sabuf), mylen, from, fromlen);
+ D( fprintf(stderr, "noip(%d): ... RECVFROM", pid); )
+ }
+ });
+ }
+ D( dump_addrresult(n, from, fromlen ? *fromlen : 0); )