|  | @@ -95,13 +95,13 @@ func NewHeaderWriter(header *buf.Buffer) *HeaderWriter {
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -func (v *HeaderWriter) Write(writer io.Writer) error {
 |  | 
 | 
											
												
													
														|  | -	if v.header == nil {
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (w *HeaderWriter) Write(writer io.Writer) error {
 | 
											
												
													
														|  | 
 |  | +	if w.header == nil {
 | 
											
												
													
														|  |  		return nil
 |  |  		return nil
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  | -	_, err := writer.Write(v.header.Bytes())
 |  | 
 | 
											
												
													
														|  | -	v.header.Release()
 |  | 
 | 
											
												
													
														|  | -	v.header = nil
 |  | 
 | 
											
												
													
														|  | 
 |  | +	_, err := writer.Write(w.header.Bytes())
 | 
											
												
													
														|  | 
 |  | +	w.header.Release()
 | 
											
												
													
														|  | 
 |  | +	w.header = nil
 | 
											
												
													
														|  |  	return err
 |  |  	return err
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -123,49 +123,49 @@ func NewHttpConn(conn net.Conn, reader Reader, writer Writer, errorWriter Writer
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -func (v *HttpConn) Read(b []byte) (int, error) {
 |  | 
 | 
											
												
													
														|  | -	if v.oneTimeReader != nil {
 |  | 
 | 
											
												
													
														|  | -		buffer, err := v.oneTimeReader.Read(v.Conn)
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (c *HttpConn) Read(b []byte) (int, error) {
 | 
											
												
													
														|  | 
 |  | +	if c.oneTimeReader != nil {
 | 
											
												
													
														|  | 
 |  | +		buffer, err := c.oneTimeReader.Read(c.Conn)
 | 
											
												
													
														|  |  		if err != nil {
 |  |  		if err != nil {
 | 
											
												
													
														|  |  			return 0, err
 |  |  			return 0, err
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  | -		v.readBuffer = buffer
 |  | 
 | 
											
												
													
														|  | -		v.oneTimeReader = nil
 |  | 
 | 
											
												
													
														|  | 
 |  | +		c.readBuffer = buffer
 | 
											
												
													
														|  | 
 |  | +		c.oneTimeReader = nil
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	if v.readBuffer.Len() > 0 {
 |  | 
 | 
											
												
													
														|  | -		nBytes, err := v.readBuffer.Read(b)
 |  | 
 | 
											
												
													
														|  | -		if nBytes == v.readBuffer.Len() {
 |  | 
 | 
											
												
													
														|  | -			v.readBuffer.Release()
 |  | 
 | 
											
												
													
														|  | -			v.readBuffer = nil
 |  | 
 | 
											
												
													
														|  | 
 |  | +	if c.readBuffer.Len() > 0 {
 | 
											
												
													
														|  | 
 |  | +		nBytes, err := c.readBuffer.Read(b)
 | 
											
												
													
														|  | 
 |  | +		if nBytes == c.readBuffer.Len() {
 | 
											
												
													
														|  | 
 |  | +			c.readBuffer.Release()
 | 
											
												
													
														|  | 
 |  | +			c.readBuffer = nil
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  		return nBytes, err
 |  |  		return nBytes, err
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	return v.Conn.Read(b)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	return c.Conn.Read(b)
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -func (v *HttpConn) Write(b []byte) (int, error) {
 |  | 
 | 
											
												
													
														|  | -	if v.oneTimeWriter != nil {
 |  | 
 | 
											
												
													
														|  | -		err := v.oneTimeWriter.Write(v.Conn)
 |  | 
 | 
											
												
													
														|  | -		v.oneTimeWriter = nil
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (c *HttpConn) Write(b []byte) (int, error) {
 | 
											
												
													
														|  | 
 |  | +	if c.oneTimeWriter != nil {
 | 
											
												
													
														|  | 
 |  | +		err := c.oneTimeWriter.Write(c.Conn)
 | 
											
												
													
														|  | 
 |  | +		c.oneTimeWriter = nil
 | 
											
												
													
														|  |  		if err != nil {
 |  |  		if err != nil {
 | 
											
												
													
														|  |  			return 0, err
 |  |  			return 0, err
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	return v.Conn.Write(b)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	return c.Conn.Write(b)
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  // Close implements net.Conn.Close().
 |  |  // Close implements net.Conn.Close().
 | 
											
												
													
														|  | -func (v *HttpConn) Close() error {
 |  | 
 | 
											
												
													
														|  | -	if v.oneTimeWriter != nil && v.errorWriter != nil {
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (c *HttpConn) Close() error {
 | 
											
												
													
														|  | 
 |  | +	if c.oneTimeWriter != nil && c.errorWriter != nil {
 | 
											
												
													
														|  |  		// Connection is being closed but header wasn't sent. This means the client request
 |  |  		// Connection is being closed but header wasn't sent. This means the client request
 | 
											
												
													
														|  |  		// is probably not valid. Sending back a server error header in this case.
 |  |  		// is probably not valid. Sending back a server error header in this case.
 | 
											
												
													
														|  | -		v.errorWriter.Write(v.Conn)
 |  | 
 | 
											
												
													
														|  | 
 |  | +		c.errorWriter.Write(c.Conn)
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	return v.Conn.Close()
 |  | 
 | 
											
												
													
														|  | 
 |  | +	return c.Conn.Close()
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func formResponseHeader(config *ResponseConfig) *HeaderWriter {
 |  |  func formResponseHeader(config *ResponseConfig) *HeaderWriter {
 | 
											
										
											
												
													
														|  | @@ -193,9 +193,9 @@ type HttpAuthenticator struct {
 | 
											
												
													
														|  |  	config *Config
 |  |  	config *Config
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -func (v HttpAuthenticator) GetClientWriter() *HeaderWriter {
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (a HttpAuthenticator) GetClientWriter() *HeaderWriter {
 | 
											
												
													
														|  |  	header := buf.NewSmall()
 |  |  	header := buf.NewSmall()
 | 
											
												
													
														|  | -	config := v.config.Request
 |  | 
 | 
											
												
													
														|  | 
 |  | +	config := a.config.Request
 | 
											
												
													
														|  |  	header.AppendSupplier(serial.WriteString(strings.Join([]string{config.GetMethodValue(), config.PickUri(), config.GetFullVersion()}, " ")))
 |  |  	header.AppendSupplier(serial.WriteString(strings.Join([]string{config.GetMethodValue(), config.PickUri(), config.GetFullVersion()}, " ")))
 | 
											
												
													
														|  |  	header.AppendSupplier(writeCRLF)
 |  |  	header.AppendSupplier(writeCRLF)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -210,31 +210,31 @@ func (v HttpAuthenticator) GetClientWriter() *HeaderWriter {
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -func (v HttpAuthenticator) GetServerWriter() *HeaderWriter {
 |  | 
 | 
											
												
													
														|  | -	return formResponseHeader(v.config.Response)
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (a HttpAuthenticator) GetServerWriter() *HeaderWriter {
 | 
											
												
													
														|  | 
 |  | +	return formResponseHeader(a.config.Response)
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -func (v HttpAuthenticator) Client(conn net.Conn) net.Conn {
 |  | 
 | 
											
												
													
														|  | -	if v.config.Request == nil && v.config.Response == nil {
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (a HttpAuthenticator) Client(conn net.Conn) net.Conn {
 | 
											
												
													
														|  | 
 |  | +	if a.config.Request == nil && a.config.Response == nil {
 | 
											
												
													
														|  |  		return conn
 |  |  		return conn
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	var reader Reader = new(NoOpReader)
 |  |  	var reader Reader = new(NoOpReader)
 | 
											
												
													
														|  | -	if v.config.Request != nil {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	if a.config.Request != nil {
 | 
											
												
													
														|  |  		reader = new(HeaderReader)
 |  |  		reader = new(HeaderReader)
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	var writer Writer = new(NoOpWriter)
 |  |  	var writer Writer = new(NoOpWriter)
 | 
											
												
													
														|  | -	if v.config.Response != nil {
 |  | 
 | 
											
												
													
														|  | -		writer = v.GetClientWriter()
 |  | 
 | 
											
												
													
														|  | 
 |  | +	if a.config.Response != nil {
 | 
											
												
													
														|  | 
 |  | +		writer = a.GetClientWriter()
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	return NewHttpConn(conn, reader, writer, new(NoOpWriter))
 |  |  	return NewHttpConn(conn, reader, writer, new(NoOpWriter))
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -func (v HttpAuthenticator) Server(conn net.Conn) net.Conn {
 |  | 
 | 
											
												
													
														|  | -	if v.config.Request == nil && v.config.Response == nil {
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (a HttpAuthenticator) Server(conn net.Conn) net.Conn {
 | 
											
												
													
														|  | 
 |  | +	if a.config.Request == nil && a.config.Response == nil {
 | 
											
												
													
														|  |  		return conn
 |  |  		return conn
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  | -	return NewHttpConn(conn, new(HeaderReader), v.GetServerWriter(), formResponseHeader(&ResponseConfig{
 |  | 
 | 
											
												
													
														|  | 
 |  | +	return NewHttpConn(conn, new(HeaderReader), a.GetServerWriter(), formResponseHeader(&ResponseConfig{
 | 
											
												
													
														|  |  		Version: &Version{
 |  |  		Version: &Version{
 | 
											
												
													
														|  |  			Value: "1.1",
 |  |  			Value: "1.1",
 | 
											
												
													
														|  |  		},
 |  |  		},
 |