func WrapIdleConn(conn net.Conn, idleTimeout time.Duration) net.Conn {
	iConn := idletiming.Conn(conn, idleTimeout, nil)
	sac, _ := conn.(WrapConnEmbeddable)
	return &idleConn{
		WrapConnEmbeddable: sac,
		Conn:               iConn,
	}
}
WrapIdleConn wraps the given conn in an idletiming conn using the given
idleTimeout.
package listeners
import (
	"net"
	"net/http"
	"time"
	"github.com/getlantern/idletiming"
)
type idleConnListener struct {
	net.Listener
	idleTimeout time.Duration
}
func NewIdleConnListener(l net.Listener, timeout time.Duration) net.Listener {
	return &idleConnListener{
		Listener:    l,
		idleTimeout: timeout,
	}
}
func (l *idleConnListener) Accept() (c net.Conn, err error) {
	conn, err := l.Listener.Accept()
	if err != nil {
		return nil, err
	}
	return WrapIdleConn(conn, l.idleTimeout), nil
}