Skip to content

Commit 488a130

Browse files
committed
patch 7.4.1234
Problem: Demo server only runs with Python 2. Solution: Make it run with Python 3 as well. (Ken Takata)
1 parent 14ad611 commit 488a130

2 files changed

Lines changed: 36 additions & 24 deletions

File tree

runtime/tools/demoserver.py

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,49 +11,59 @@
1111
#
1212
# See ":help channel-demo" in Vim.
1313

14-
import SocketServer
14+
from __future__ import print_function
1515
import json
1616
import socket
1717
import sys
1818
import threading
1919

20+
try:
21+
# Python 3
22+
import socketserver
23+
except ImportError:
24+
# Python 2
25+
import SocketServer as socketserver
26+
2027
thesocket = None
2128

22-
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
29+
class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
2330

2431
def handle(self):
25-
print "=== socket opened ==="
32+
print("=== socket opened ===")
2633
global thesocket
2734
thesocket = self.request
2835
while True:
2936
try:
30-
data = self.request.recv(4096)
37+
data = self.request.recv(4096).decode('utf-8')
3138
except socket.error:
32-
print "=== socket error ==="
39+
print("=== socket error ===")
3340
break
3441
except IOError:
35-
print "=== socket closed ==="
42+
print("=== socket closed ===")
3643
break
3744
if data == '':
38-
print "=== socket closed ==="
45+
print("=== socket closed ===")
3946
break
40-
print "received: {}".format(data)
47+
print("received: {}".format(data))
4148
try:
4249
decoded = json.loads(data)
4350
except ValueError:
44-
print "json decoding failed"
45-
decoded = [0, '']
51+
print("json decoding failed")
52+
decoded = [-1, '']
4653

47-
if decoded[1] == 'hello!':
48-
response = "got it"
49-
else:
50-
response = "what?"
51-
encoded = json.dumps([decoded[0], response])
52-
print "sending {}".format(encoded)
53-
self.request.sendall(encoded)
54+
# Send a response if the sequence number is positive.
55+
# Negative numbers are used for "eval" responses.
56+
if decoded[0] >= 0:
57+
if decoded[1] == 'hello!':
58+
response = "got it"
59+
else:
60+
response = "what?"
61+
encoded = json.dumps([decoded[0], response])
62+
print("sending {}".format(encoded))
63+
self.request.sendall(encoded.encode('utf-8'))
5464
thesocket = None
5565

56-
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
66+
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
5767
pass
5868

5969
if __name__ == "__main__":
@@ -69,19 +79,19 @@ class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
6979
# Exit the server thread when the main thread terminates
7080
server_thread.daemon = True
7181
server_thread.start()
72-
print "Server loop running in thread: ", server_thread.name
82+
print("Server loop running in thread: ", server_thread.name)
7383

74-
print "Listening on port {}".format(PORT)
84+
print("Listening on port {}".format(PORT))
7585
while True:
7686
typed = sys.stdin.readline()
7787
if "quit" in typed:
78-
print "Goodbye!"
88+
print("Goodbye!")
7989
break
8090
if thesocket is None:
81-
print "No socket yet"
91+
print("No socket yet")
8292
else:
83-
print "sending {}".format(typed)
84-
thesocket.sendall(typed)
93+
print("sending {}".format(typed))
94+
thesocket.sendall(typed.encode('utf-8'))
8595

8696
server.shutdown()
8797
server.server_close()

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,8 @@ static char *(features[]) =
742742

743743
static int included_patches[] =
744744
{ /* Add new patch number below this line */
745+
/**/
746+
1234,
745747
/**/
746748
1233,
747749
/**/

0 commit comments

Comments
 (0)