New submission from Seán Kelleher: I have a Go server that listens to a port, runs a Python client to connect to the port as a subcommand, and reads from the client. However, the client (as follows) will occasionally run to completion without connecting to the port, but without raising an exception:
import socket import sys sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) [addr, port] = sys.argv[1].split(':') sock.connect((addr, int(port))) try: sock.send("hello") finally: sock.close() print "done." `server.go` follows: package main import ( "log" "net" "os" "os/exec" ) func main() { ln, err := net.ListenTCP("tcp4", &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1)}) if err != nil { log.Fatalf("%v", err) } defer ln.Close() cmd := exec.Command( "python", "client.py", ln.Addr().(*net.TCPAddr).String(), ) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Start(); err != nil { log.Fatalf("%v", err) } defer cmd.Process.Kill() go func() { log.Printf("command exited with: %v", cmd.Wait()) log.Printf("closing listener: %v", ln.Close()) }() conn, err := ln.Accept() if err != nil { log.Fatalf("%v", err) } buf := make([]byte, 1024) n, err := conn.Read(buf) log.Println(string(buf[:n])) } When the connection is successful, the output is as expected: done. 2015/08/01 21:03:50 hello A failed connection, by contrast, gives no indication from Python that the command failed (`done.` is output), but it is evident that the connection was not established: done. 2015/08/01 20:56:55 command exited with: <nil> 2015/08/01 20:56:55 closing listener: <nil> 2015/08/01 20:56:55 accept tcp4 127.0.0.1:42550: use of closed network connection exit status 1 >From this, it appears as though the Python client thinks it has established a >connection, because neither the `connect` nor the `send` call raise an >exception. This behaviour is corrected in Python 3 (all runs look like the first instance), so it appears to be local to Python 2.7. ---------- components: Library (Lib) messages: 247826 nosy: Seán Kelleher priority: normal severity: normal status: open title: Python client failing to connect to server but completing as if successful type: behavior versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue24775> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com