tree c5b0f83ccc1924b27ec3bbd2365803669a4aae56
parent c453a5b253e1ecddbe8bed8f6edf282c14e58265
author Fred Hebert <mononcqc@ferd.ca> 1376070300 -0400
committer Fred Hebert <mononcqc@ferd.ca> 1376071173 -0400

Fix recon_lib failing on long ports or proc lists

Nodes with lots of processes or ports can see their proc_count,
proc_window, inet_count, or inet_window functions fail due to a race
condition where:

1. The list of ports or processes is created;
2. The ports or processes are iteratively polled for their properties;
3. Some port or process closes;
4. A badmatch error occurs and the entire function fails.

The error specifically happens in the functions of arity 2 in recon_lib
that made the fetch to each port or process.

The interface of these functions are getting changed to:

- account for the error
- return {ok, State} or {error, Reason} depending on the case

Moreover, the functions of arity 1 in recon_lib that make use of them
are changing so that their list comprehension filters bad data --
which we do not care about anyway.

A similar change is included to respect the new API in recon's refc
binary leak function.
