title: Why Netty 4 "proxy" example has to set channel "AUTO_READ" as false
body: <p>In Netty 4 <a href="https://github.com/netty/netty/tree/4.0/example/src/main/java/io/netty/example/proxy" rel="noreferrer">"proxy" example</a>, the channel auto read option has been disabled:</p>
  
  <pre><code>serverBootStrap.group(bossGroup, workerGroup)
      ...
      .childOption(ChannelOption.AUTO_READ, false)
  </code></pre>
  
  <p>If commented <code>childOption(ChannelOption.AUTO_READ, false)</code>, the proxy example will cannot work. And more detailed, in the method <code>channelRead</code> of the class <code>HexDumpProxyFrontendHandler</code>, the <code>outboundChannel</code> will always be inactive.</p>
  
  <p>And I have researched Netty source code, found that "auto read" will affect  like that in methods <code>fireChannelActive</code> and <code>fireChannelReadComplete</code> of the class <code>DefaultChannelPipeline</code></p>
  
  <pre><code>if (channel.config().isAutoRead()) {
      read();
  }
  </code></pre>
  
  <p>But I still cannot figure out what the relationship between auto read and the proxy example. In my mind, when a data send to the inbound buffer, Netty should fire the channel read event.</p>
  
  <p>So there are two questions:</p>
  
  <ul>
  <li>Why disable auto read is necessary for "proxy" example?</li>
  <li>Why enable auto read will make <code>outboundChannel</code> always inactive?</li>
  </ul>