mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Use gitea forked macaron (#7933)
Signed-off-by: Tamal Saha <tamal@appscode.com>
This commit is contained in:
		
				
					committed by
					
						 techknowlogick
						techknowlogick
					
				
			
			
				
	
			
			
			
						parent
						
							ca6fb004ac
						
					
				
				
					commit
					171b359877
				
			
							
								
								
									
										47
									
								
								vendor/github.com/bradfitz/gomemcache/memcache/memcache.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										47
									
								
								vendor/github.com/bradfitz/gomemcache/memcache/memcache.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -23,7 +23,6 @@ import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"io/ioutil" | ||||
| 	"net" | ||||
|  | ||||
| 	"strconv" | ||||
| @@ -33,7 +32,7 @@ import ( | ||||
| ) | ||||
|  | ||||
| // Similar to: | ||||
| // http://code.google.com/appengine/docs/go/memcache/reference.html | ||||
| // https://godoc.org/google.golang.org/appengine/memcache | ||||
|  | ||||
| var ( | ||||
| 	// ErrCacheMiss means that a Get failed because the item wasn't present. | ||||
| @@ -56,7 +55,7 @@ var ( | ||||
| 	ErrNoStats = errors.New("memcache: no statistics available") | ||||
|  | ||||
| 	// ErrMalformedKey is returned when an invalid key is used. | ||||
| 	// Keys must be at maximum 250 bytes long, ASCII, and not | ||||
| 	// Keys must be at maximum 250 bytes long and not | ||||
| 	// contain whitespace or control characters. | ||||
| 	ErrMalformedKey = errors.New("malformed: key is too long or contains invalid characters") | ||||
|  | ||||
| @@ -64,14 +63,17 @@ var ( | ||||
| 	ErrNoServers = errors.New("memcache: no servers configured or available") | ||||
| ) | ||||
|  | ||||
| // DefaultTimeout is the default socket read/write timeout. | ||||
| const DefaultTimeout = 100 * time.Millisecond | ||||
|  | ||||
| const ( | ||||
| 	buffered            = 8 // arbitrary buffered channel size, for readability | ||||
| 	maxIdleConnsPerAddr = 2 // TODO(bradfitz): make this configurable? | ||||
| 	// DefaultTimeout is the default socket read/write timeout. | ||||
| 	DefaultTimeout = 100 * time.Millisecond | ||||
|  | ||||
| 	// DefaultMaxIdleConns is the default maximum number of idle connections | ||||
| 	// kept for any single address. | ||||
| 	DefaultMaxIdleConns = 2 | ||||
| ) | ||||
|  | ||||
| const buffered = 8 // arbitrary buffered channel size, for readability | ||||
|  | ||||
| // resumableError returns true if err is only a protocol-level cache error. | ||||
| // This is used to determine whether or not a server connection should | ||||
| // be re-used or not. If an error occurs, by default we don't reuse the | ||||
| @@ -89,7 +91,7 @@ func legalKey(key string) bool { | ||||
| 		return false | ||||
| 	} | ||||
| 	for i := 0; i < len(key); i++ { | ||||
| 		if key[i] <= ' ' || key[i] > 0x7e { | ||||
| 		if key[i] <= ' ' || key[i] == 0x7f { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
| @@ -133,6 +135,14 @@ type Client struct { | ||||
| 	// If zero, DefaultTimeout is used. | ||||
| 	Timeout time.Duration | ||||
|  | ||||
| 	// MaxIdleConns specifies the maximum number of idle connections that will | ||||
| 	// be maintained per address. If less than one, DefaultMaxIdleConns will be | ||||
| 	// used. | ||||
| 	// | ||||
| 	// Consider your expected traffic rates and latency carefully. This should | ||||
| 	// be set to a number higher than your peak parallel requests. | ||||
| 	MaxIdleConns int | ||||
|  | ||||
| 	selector ServerSelector | ||||
|  | ||||
| 	lk       sync.Mutex | ||||
| @@ -196,7 +206,7 @@ func (c *Client) putFreeConn(addr net.Addr, cn *conn) { | ||||
| 		c.freeconn = make(map[string][]*conn) | ||||
| 	} | ||||
| 	freelist := c.freeconn[addr.String()] | ||||
| 	if len(freelist) >= maxIdleConnsPerAddr { | ||||
| 	if len(freelist) >= c.maxIdleConns() { | ||||
| 		cn.nc.Close() | ||||
| 		return | ||||
| 	} | ||||
| @@ -225,6 +235,13 @@ func (c *Client) netTimeout() time.Duration { | ||||
| 	return DefaultTimeout | ||||
| } | ||||
|  | ||||
| func (c *Client) maxIdleConns() int { | ||||
| 	if c.MaxIdleConns > 0 { | ||||
| 		return c.MaxIdleConns | ||||
| 	} | ||||
| 	return DefaultMaxIdleConns | ||||
| } | ||||
|  | ||||
| // ConnectTimeoutError is the error type used when it takes | ||||
| // too long to connect to the desired host. This level of | ||||
| // detail can generally be ignored. | ||||
| @@ -308,8 +325,9 @@ func (c *Client) Get(key string) (item *Item, err error) { | ||||
|  | ||||
| // Touch updates the expiry for the given key. The seconds parameter is either | ||||
| // a Unix timestamp or, if seconds is less than 1 month, the number of seconds | ||||
| // into the future at which time the item will expire. ErrCacheMiss is returned if the | ||||
| // key is not in the cache. The key must be at most 250 bytes in length. | ||||
| // into the future at which time the item will expire. Zero means the item has | ||||
| // no expiration time. ErrCacheMiss is returned if the key is not in the cache. | ||||
| // The key must be at most 250 bytes in length. | ||||
| func (c *Client) Touch(key string, seconds int32) (err error) { | ||||
| 	return c.withKeyAddr(key, func(addr net.Addr) error { | ||||
| 		return c.touchFromAddr(addr, []string{key}, seconds) | ||||
| @@ -463,11 +481,14 @@ func parseGetResponse(r *bufio.Reader, cb func(*Item)) error { | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		it.Value, err = ioutil.ReadAll(io.LimitReader(r, int64(size)+2)) | ||||
| 		it.Value = make([]byte, size+2) | ||||
| 		_, err = io.ReadFull(r, it.Value) | ||||
| 		if err != nil { | ||||
| 			it.Value = nil | ||||
| 			return err | ||||
| 		} | ||||
| 		if !bytes.HasSuffix(it.Value, crlf) { | ||||
| 			it.Value = nil | ||||
| 			return fmt.Errorf("memcache: corrupt get result read") | ||||
| 		} | ||||
| 		it.Value = it.Value[:size] | ||||
|   | ||||
							
								
								
									
										19
									
								
								vendor/github.com/bradfitz/gomemcache/memcache/selector.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/bradfitz/gomemcache/memcache/selector.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -41,6 +41,21 @@ type ServerList struct { | ||||
| 	addrs []net.Addr | ||||
| } | ||||
|  | ||||
| // staticAddr caches the Network() and String() values from any net.Addr. | ||||
| type staticAddr struct { | ||||
| 	ntw, str string | ||||
| } | ||||
|  | ||||
| func newStaticAddr(a net.Addr) net.Addr { | ||||
| 	return &staticAddr{ | ||||
| 		ntw: a.Network(), | ||||
| 		str: a.String(), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (s *staticAddr) Network() string { return s.ntw } | ||||
| func (s *staticAddr) String() string  { return s.str } | ||||
|  | ||||
| // SetServers changes a ServerList's set of servers at runtime and is | ||||
| // safe for concurrent use by multiple goroutines. | ||||
| // | ||||
| @@ -58,13 +73,13 @@ func (ss *ServerList) SetServers(servers ...string) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			naddr[i] = addr | ||||
| 			naddr[i] = newStaticAddr(addr) | ||||
| 		} else { | ||||
| 			tcpaddr, err := net.ResolveTCPAddr("tcp", server) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			naddr[i] = tcpaddr | ||||
| 			naddr[i] = newStaticAddr(tcpaddr) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user