Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(358)

Delta Between Two Patch Sets: src/pkg/net/http/server.go

Issue 70410044: code review 70410044: net/http: proactively address potential race in Ser... (Closed)
Left Patch Set: diff -r 891e16653547 https://code.google.com/p/go Created 11 years, 1 month ago
Right Patch Set: diff -r 891e16653547 https://code.google.com/p/go Created 11 years, 1 month ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « src/pkg/net/http/serve_test.go ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 // Copyright 2009 The Go Authors. All rights reserved. 1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style 2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file. 3 // license that can be found in the LICENSE file.
4 4
5 // HTTP server. See RFC 2616. 5 // HTTP server. See RFC 2616.
6 6
7 package http 7 package http
8 8
9 import ( 9 import (
10 "bufio" 10 "bufio"
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 421
422 // Create new connection from rwc. 422 // Create new connection from rwc.
423 func (srv *Server) newConn(rwc net.Conn) (c *conn, err error) { 423 func (srv *Server) newConn(rwc net.Conn) (c *conn, err error) {
424 c = new(conn) 424 c = new(conn)
425 c.remoteAddr = rwc.RemoteAddr().String() 425 c.remoteAddr = rwc.RemoteAddr().String()
426 c.server = srv 426 c.server = srv
427 c.rwc = rwc 427 c.rwc = rwc
428 if debugServerConnections { 428 if debugServerConnections {
429 c.rwc = newLoggingConn("server", c.rwc) 429 c.rwc = newLoggingConn("server", c.rwc)
430 } 430 }
431 c.setState(c.rwc, StateNew)
432 c.sr = liveSwitchReader{r: c.rwc} 431 c.sr = liveSwitchReader{r: c.rwc}
433 c.lr = io.LimitReader(&c.sr, noLimit).(*io.LimitedReader) 432 c.lr = io.LimitReader(&c.sr, noLimit).(*io.LimitedReader)
434 br := newBufioReader(c.lr) 433 br := newBufioReader(c.lr)
435 bw := newBufioWriterSize(c.rwc, 4<<10) 434 bw := newBufioWriterSize(c.rwc, 4<<10)
436 c.buf = bufio.NewReadWriter(br, bw) 435 c.buf = bufio.NewReadWriter(br, bw)
437 return c, nil 436 return c, nil
438 } 437 }
439 438
440 var ( 439 var (
441 bufioReaderPool sync.Pool 440 bufioReaderPool sync.Pool
(...skipping 1273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1715 time.Sleep(tempDelay) 1714 time.Sleep(tempDelay)
1716 continue 1715 continue
1717 } 1716 }
1718 return e 1717 return e
1719 } 1718 }
1720 tempDelay = 0 1719 tempDelay = 0
1721 c, err := srv.newConn(rw) 1720 c, err := srv.newConn(rw)
1722 if err != nil { 1721 if err != nil {
1723 continue 1722 continue
1724 } 1723 }
1724 c.setState(c.rwc, StateNew) // before Serve can return
1725 go c.serve() 1725 go c.serve()
1726 } 1726 }
1727 } 1727 }
1728 1728
1729 func (s *Server) doKeepAlives() bool { 1729 func (s *Server) doKeepAlives() bool {
1730 return atomic.LoadInt32(&s.disableKeepAlives) == 0 1730 return atomic.LoadInt32(&s.disableKeepAlives) == 0
1731 } 1731 }
1732 1732
1733 // SetKeepAlivesEnabled controls whether HTTP keep-alives are enabled. 1733 // SetKeepAlivesEnabled controls whether HTTP keep-alives are enabled.
1734 // By default, keep-alives are always enabled. Only very 1734 // By default, keep-alives are always enabled. Only very
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
2040 log.Printf("%s.Read(%d) = %d, %v", c.name, len(p), n, err) 2040 log.Printf("%s.Read(%d) = %d, %v", c.name, len(p), n, err)
2041 return 2041 return
2042 } 2042 }
2043 2043
2044 func (c *loggingConn) Close() (err error) { 2044 func (c *loggingConn) Close() (err error) {
2045 log.Printf("%s.Close() = ...", c.name) 2045 log.Printf("%s.Close() = ...", c.name)
2046 err = c.Conn.Close() 2046 err = c.Conn.Close()
2047 log.Printf("%s.Close() = %v", c.name, err) 2047 log.Printf("%s.Close() = %v", c.name, err)
2048 return 2048 return
2049 } 2049 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b