mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
undo changes accidentally included in 09c5add99d50
R=ken2 CC=golang-dev https://golang.org/cl/1736042
This commit is contained in:
parent
45bdf0367e
commit
1b79cd2e71
7 changed files with 22 additions and 37 deletions
|
|
@ -724,10 +724,12 @@ sub RunWeb {
|
||||||
"firefox",
|
"firefox",
|
||||||
);
|
);
|
||||||
foreach my $b (@alt) {
|
foreach my $b (@alt) {
|
||||||
|
if (-f $b) {
|
||||||
if (system($b, $fname) == 0) {
|
if (system($b, $fname) == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
print STDERR "Could not load web browser.\n";
|
print STDERR "Could not load web browser.\n";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import (
|
||||||
"image"
|
"image"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Color type, as per the PNG spec.
|
// Color type, as per the PNG spec.
|
||||||
|
|
@ -109,7 +108,7 @@ func (d *decoder) parseIHDR(r io.Reader, crc hash.Hash32, length uint32) os.Erro
|
||||||
}
|
}
|
||||||
crc.Write(d.tmp[0:13])
|
crc.Write(d.tmp[0:13])
|
||||||
if d.tmp[8] != 8 {
|
if d.tmp[8] != 8 {
|
||||||
return UnsupportedError("bit depth " + strconv.Itoa(int(d.tmp[8])))
|
return UnsupportedError("bit depth")
|
||||||
}
|
}
|
||||||
if d.tmp[10] != 0 || d.tmp[11] != 0 || d.tmp[12] != 0 {
|
if d.tmp[10] != 0 || d.tmp[11] != 0 || d.tmp[12] != 0 {
|
||||||
return UnsupportedError("compression, filter or interlace method")
|
return UnsupportedError("compression, filter or interlace method")
|
||||||
|
|
|
||||||
|
|
@ -93,13 +93,7 @@ func (client *Client) input() {
|
||||||
c := client.pending[seq]
|
c := client.pending[seq]
|
||||||
client.pending[seq] = c, false
|
client.pending[seq] = c, false
|
||||||
client.mutex.Unlock()
|
client.mutex.Unlock()
|
||||||
if c == nil {
|
|
||||||
err = os.NewError("invalid response sequence number")
|
|
||||||
break
|
|
||||||
}
|
|
||||||
err = client.codec.ReadResponseBody(c.Reply)
|
err = client.codec.ReadResponseBody(c.Reply)
|
||||||
// TODO(rsc): Should look at err, but breaks tests.
|
|
||||||
|
|
||||||
// Empty strings should turn into nil os.Errors
|
// Empty strings should turn into nil os.Errors
|
||||||
if response.Error != "" {
|
if response.Error != "" {
|
||||||
c.Error = os.ErrorString(response.Error)
|
c.Error = os.ErrorString(response.Error)
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,7 @@ func TestServer(t *testing.T) {
|
||||||
|
|
||||||
cli, srv := net.Pipe()
|
cli, srv := net.Pipe()
|
||||||
defer cli.Close()
|
defer cli.Close()
|
||||||
var ci rpc.ClientInfo
|
go ServeConn(srv)
|
||||||
go ServeConn(srv, &ci)
|
|
||||||
dec := json.NewDecoder(cli)
|
dec := json.NewDecoder(cli)
|
||||||
|
|
||||||
// Send hand-coded requests to server, parse responses.
|
// Send hand-coded requests to server, parse responses.
|
||||||
|
|
@ -85,9 +84,8 @@ func TestServer(t *testing.T) {
|
||||||
func TestClient(t *testing.T) {
|
func TestClient(t *testing.T) {
|
||||||
// Assume server is okay (TestServer is above).
|
// Assume server is okay (TestServer is above).
|
||||||
// Test client against server.
|
// Test client against server.
|
||||||
var ci rpc.ClientInfo
|
|
||||||
cli, srv := net.Pipe()
|
cli, srv := net.Pipe()
|
||||||
go ServeConn(srv, &ci)
|
go ServeConn(srv)
|
||||||
|
|
||||||
client := NewClient(cli)
|
client := NewClient(cli)
|
||||||
defer client.Close()
|
defer client.Close()
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,6 @@ func (c *serverCodec) Close() os.Error {
|
||||||
// ServeConn runs the JSON-RPC server on a single connection.
|
// ServeConn runs the JSON-RPC server on a single connection.
|
||||||
// ServeConn blocks, serving the connection until the client hangs up.
|
// ServeConn blocks, serving the connection until the client hangs up.
|
||||||
// The caller typically invokes ServeConn in a go statement.
|
// The caller typically invokes ServeConn in a go statement.
|
||||||
func ServeConn(conn io.ReadWriteCloser, ci *rpc.ClientInfo) {
|
func ServeConn(conn io.ReadWriteCloser) {
|
||||||
rpc.ServeCodec(NewServerCodec(conn), ci)
|
rpc.ServeCodec(NewServerCodec(conn))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -214,7 +214,7 @@ func (server *serverType) register(rcvr interface{}) os.Error {
|
||||||
}
|
}
|
||||||
// Method needs three ins: receiver, *args, *reply.
|
// Method needs three ins: receiver, *args, *reply.
|
||||||
// The args and reply must be structs until gobs are more general.
|
// The args and reply must be structs until gobs are more general.
|
||||||
if mtype.NumIn() != 3 && mtype.NumIn() != 4 {
|
if mtype.NumIn() != 3 {
|
||||||
log.Stderr("method", mname, "has wrong number of ins:", mtype.NumIn())
|
log.Stderr("method", mname, "has wrong number of ins:", mtype.NumIn())
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
@ -301,19 +301,13 @@ func sendResponse(sending *sync.Mutex, req *Request, reply interface{}, codec Se
|
||||||
sending.Unlock()
|
sending.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *service) call(sending *sync.Mutex, mtype *methodType, req *Request, argv, replyv reflect.Value, codec ServerCodec, ci *ClientInfo) {
|
func (s *service) call(sending *sync.Mutex, mtype *methodType, req *Request, argv, replyv reflect.Value, codec ServerCodec) {
|
||||||
mtype.Lock()
|
mtype.Lock()
|
||||||
mtype.numCalls++
|
mtype.numCalls++
|
||||||
mtype.Unlock()
|
mtype.Unlock()
|
||||||
function := mtype.method.Func
|
function := mtype.method.Func
|
||||||
// Invoke the method, providing a new value for the reply.
|
// Invoke the method, providing a new value for the reply.
|
||||||
var args []reflect.Value
|
returnValues := function.Call([]reflect.Value{s.rcvr, argv, replyv})
|
||||||
if mtype.method.Type.NumIn() == 3 {
|
|
||||||
args = []reflect.Value{s.rcvr, argv, replyv}
|
|
||||||
} else {
|
|
||||||
args = []reflect.Value{s.rcvr, argv, replyv, reflect.NewValue(ci)}
|
|
||||||
}
|
|
||||||
returnValues := function.Call(args)
|
|
||||||
// The return value for the method is an os.Error.
|
// The return value for the method is an os.Error.
|
||||||
errInter := returnValues[0].Interface()
|
errInter := returnValues[0].Interface()
|
||||||
errmsg := ""
|
errmsg := ""
|
||||||
|
|
@ -348,7 +342,7 @@ func (c *gobServerCodec) Close() os.Error {
|
||||||
return c.rwc.Close()
|
return c.rwc.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (server *serverType) input(codec ServerCodec, ci *ClientInfo) {
|
func (server *serverType) input(codec ServerCodec) {
|
||||||
sending := new(sync.Mutex)
|
sending := new(sync.Mutex)
|
||||||
for {
|
for {
|
||||||
// Grab the request header.
|
// Grab the request header.
|
||||||
|
|
@ -395,7 +389,7 @@ func (server *serverType) input(codec ServerCodec, ci *ClientInfo) {
|
||||||
sendResponse(sending, req, replyv.Interface(), codec, err.String())
|
sendResponse(sending, req, replyv.Interface(), codec, err.String())
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
go service.call(sending, mtype, req, argv, replyv, codec, ci)
|
go service.call(sending, mtype, req, argv, replyv, codec)
|
||||||
}
|
}
|
||||||
codec.Close()
|
codec.Close()
|
||||||
}
|
}
|
||||||
|
|
@ -406,7 +400,7 @@ func (server *serverType) accept(lis net.Listener) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Exit("rpc.Serve: accept:", err.String()) // TODO(r): exit?
|
log.Exit("rpc.Serve: accept:", err.String()) // TODO(r): exit?
|
||||||
}
|
}
|
||||||
go ServeConn(conn, &ClientInfo{conn.LocalAddr().String(), conn.RemoteAddr().String()})
|
go ServeConn(conn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -438,14 +432,14 @@ type ServerCodec interface {
|
||||||
// The caller typically invokes ServeConn in a go statement.
|
// The caller typically invokes ServeConn in a go statement.
|
||||||
// ServeConn uses the gob wire format (see package gob) on the
|
// ServeConn uses the gob wire format (see package gob) on the
|
||||||
// connection. To use an alternate codec, use ServeCodec.
|
// connection. To use an alternate codec, use ServeCodec.
|
||||||
func ServeConn(conn io.ReadWriteCloser, ci *ClientInfo) {
|
func ServeConn(conn io.ReadWriteCloser) {
|
||||||
ServeCodec(&gobServerCodec{conn, gob.NewDecoder(conn), gob.NewEncoder(conn)}, ci)
|
ServeCodec(&gobServerCodec{conn, gob.NewDecoder(conn), gob.NewEncoder(conn)})
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServeCodec is like ServeConn but uses the specified codec to
|
// ServeCodec is like ServeConn but uses the specified codec to
|
||||||
// decode requests and encode responses.
|
// decode requests and encode responses.
|
||||||
func ServeCodec(codec ServerCodec, ci *ClientInfo) {
|
func ServeCodec(codec ServerCodec) {
|
||||||
server.input(codec, ci)
|
server.input(codec)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Accept accepts connections on the listener and serves requests
|
// Accept accepts connections on the listener and serves requests
|
||||||
|
|
@ -471,11 +465,7 @@ func serveHTTP(c *http.Conn, req *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
io.WriteString(conn, "HTTP/1.0 "+connected+"\n\n")
|
io.WriteString(conn, "HTTP/1.0 "+connected+"\n\n")
|
||||||
ci := &ClientInfo{
|
ServeConn(conn)
|
||||||
LocalAddr: conn.(net.Conn).LocalAddr().String(),
|
|
||||||
RemoteAddr: c.RemoteAddr,
|
|
||||||
}
|
|
||||||
ServeConn(conn, ci)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleHTTP registers an HTTP handler for RPC messages.
|
// HandleHTTP registers an HTTP handler for RPC messages.
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@
|
||||||
# ./gc.go
|
# ./gc.go
|
||||||
# ./gc1.go
|
# ./gc1.go
|
||||||
./hashmap.go
|
./hashmap.go
|
||||||
|
./hilbert.go
|
||||||
./helloworld.go
|
./helloworld.go
|
||||||
./if.go
|
./if.go
|
||||||
./if1.go
|
./if1.go
|
||||||
|
|
@ -331,6 +332,7 @@ fixedbugs/bug149.go
|
||||||
fixedbugs/bug150.go
|
fixedbugs/bug150.go
|
||||||
fixedbugs/bug151.go
|
fixedbugs/bug151.go
|
||||||
fixedbugs/bug152.go
|
fixedbugs/bug152.go
|
||||||
|
fixedbugs/bug153.go
|
||||||
# fixedbugs/bug154.go # needs floating point
|
# fixedbugs/bug154.go # needs floating point
|
||||||
fixedbugs/bug155.go
|
fixedbugs/bug155.go
|
||||||
fixedbugs/bug156.go
|
fixedbugs/bug156.go
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue