示例#1
0
_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;
}
示例#2
0
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;
}