_PUBLIC_ ssize_t swrap_recv(int s, void *buf, size_t len, int flags) { int ret; struct socket_info *si = find_socket_info(s); if (!si) { return real_recv(s, buf, len, flags); } ret = real_recv(s, buf, len, flags); if (ret == -1 && errno != EAGAIN && errno != ENOBUFS) { swrap_dump_packet(si, NULL, SWRAP_RECV_RST, NULL, 0); } else if (ret == 0) { /* END OF FILE */ swrap_dump_packet(si, NULL, SWRAP_RECV_RST, NULL, 0); } else { swrap_dump_packet(si, NULL, SWRAP_RECV, buf, ret); } return ret; }
ssize_t recv(int s, void *buf, size_t len, int flags) { init(); if (!forked || (s != ssl_socket)) { return real_recv(s,buf,len,flags); } // XXX what about flags return SSL_read(ssl_ssl,buf,len); }
ssize_t recv(int s, void *buf, size_t len, int flags) { ssize_t retval; print_trace ("%*srecv(%d, %p, %d, %d)=...\n", indent, "", s, buf, len, flags); indent+=2; /* call the real recv function */ retval = real_recv (s, buf, len, flags); indent-=2; print_trace ("%*srecv(%d, %p, %d, %d)=%d\n", indent, "", s, buf, len, flags, retval); return retval; }