]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 7.4.1234 v7.4.1234
authorBram Moolenaar <Bram@vim.org>
Mon, 1 Feb 2016 21:01:10 +0000 (22:01 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 1 Feb 2016 21:01:10 +0000 (22:01 +0100)
Problem:    Demo server only runs with Python 2.
Solution:   Make it run with Python 3 as well. (Ken Takata)

runtime/tools/demoserver.py
src/version.c

index c72a58b739f17bf6e092d319a262ed96d972f32d..0f6a3740c631feca4e80df2f0c52f24c72de288a 100644 (file)
 #
 # See ":help channel-demo" in Vim.
 
-import SocketServer
+from __future__ import print_function
 import json
 import socket
 import sys
 import threading
 
+try:
+    # Python 3
+    import socketserver
+except ImportError:
+    # Python 2
+    import SocketServer as socketserver
+
 thesocket = None
 
-class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
+class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
 
     def handle(self):
-        print "=== socket opened ==="
+        print("=== socket opened ===")
         global thesocket
         thesocket = self.request
         while True:
             try:
-                data = self.request.recv(4096)
+                data = self.request.recv(4096).decode('utf-8')
             except socket.error:
-                print "=== socket error ==="
+                print("=== socket error ===")
                 break
             except IOError:
-                print "=== socket closed ==="
+                print("=== socket closed ===")
                 break
             if data == '':
-                print "=== socket closed ==="
+                print("=== socket closed ===")
                 break
-            print "received: {}".format(data)
+            print("received: {}".format(data))
             try:
                 decoded = json.loads(data)
             except ValueError:
-                print "json decoding failed"
-                decoded = [0, '']
+                print("json decoding failed")
+                decoded = [-1, '']
 
-            if decoded[1] == 'hello!':
-                response = "got it"
-            else:
-                response = "what?"
-            encoded = json.dumps([decoded[0], response])
-            print "sending {}".format(encoded)
-            self.request.sendall(encoded)
+            # Send a response if the sequence number is positive.
+            # Negative numbers are used for "eval" responses.
+            if decoded[0] >= 0:
+                if decoded[1] == 'hello!':
+                    response = "got it"
+                else:
+                    response = "what?"
+                encoded = json.dumps([decoded[0], response])
+                print("sending {}".format(encoded))
+                self.request.sendall(encoded.encode('utf-8'))
         thesocket = None
 
-class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
+class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
     pass
 
 if __name__ == "__main__":
@@ -69,19 +79,19 @@ if __name__ == "__main__":
     # Exit the server thread when the main thread terminates
     server_thread.daemon = True
     server_thread.start()
-    print "Server loop running in thread: ", server_thread.name
+    print("Server loop running in thread: ", server_thread.name)
 
-    print "Listening on port {}".format(PORT)
+    print("Listening on port {}".format(PORT))
     while True:
         typed = sys.stdin.readline()
         if "quit" in typed:
-            print "Goodbye!"
+            print("Goodbye!")
             break
         if thesocket is None:
-            print "No socket yet"
+            print("No socket yet")
         else:
-            print "sending {}".format(typed)
-            thesocket.sendall(typed)
+            print("sending {}".format(typed))
+            thesocket.sendall(typed.encode('utf-8'))
 
     server.shutdown()
     server.server_close()
index 1bb4030f990c759e8205ce60fee29546df63321d..f8addc0194d48f9c38e0642174d188cd4a748a19 100644 (file)
@@ -742,6 +742,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1234,
 /**/
     1233,
 /**/