rfc2217_server: API update, cleanup
diff --git a/examples/rfc2217_server.py b/examples/rfc2217_server.py
index 53f11b4..10c47c5 100755
--- a/examples/rfc2217_server.py
+++ b/examples/rfc2217_server.py
@@ -8,7 +8,6 @@
 # SPDX-License-Identifier:    BSD-3-Clause
 
 import logging
-import os
 import socket
 import sys
 import time
@@ -16,6 +15,7 @@
 import serial
 import serial.rfc2217
 
+
 class Redirector(object):
     def __init__(self, serial_instance, socket, debug=False):
         self.serial = serial_instance
@@ -24,7 +24,7 @@
         self.rfc2217 = serial.rfc2217.PortManager(
                 self.serial,
                 self,
-                logger = logging.getLogger('rfc2217.server') if debug else None
+                logger=logging.getLogger('rfc2217.server') if debug else None
                 )
         self.log = logging.getLogger('redirector')
 
@@ -40,12 +40,12 @@
            from one side to the other"""
         self.alive = True
         self.thread_read = threading.Thread(target=self.reader)
-        self.thread_read.setDaemon(True)
-        self.thread_read.setName('serial->socket')
+        self.thread_read.daemon = True
+        self.thread_read.name = 'serial->socket'
         self.thread_read.start()
         self.thread_poll = threading.Thread(target=self.statusline_poller)
-        self.thread_poll.setDaemon(True)
-        self.thread_poll.setName('status line poll')
+        self.thread_poll.daemon = True
+        self.thread_poll.name = 'status line poll'
         self.thread_poll.start()
         self.writer()
 
@@ -54,15 +54,10 @@
         self.log.debug('reader thread started')
         while self.alive:
             try:
-                data = self.serial.read(1)              # read one, blocking
-                n = self.serial.inWaiting()             # look if there is more
-                if n:
-                    data = data + self.serial.read(n)   # and get as much as possible
+                data = self.serial.read(self.serial.in_waiting or 1)
                 if data:
                     # escape outgoing data when needed (Telnet IAC (0xff) character)
-                    data = serial.to_bytes(self.rfc2217.escape(data))
-                    with self._write_lock:
-                        self.socket.sendall(data)       # send it over TCP
+                    self.write(serial.to_bytes(self.rfc2217.escape(data)))
             except socket.error as msg:
                 self.log.error('%s' % (msg,))
                 # probably got disconnected
@@ -102,8 +97,8 @@
     import argparse
 
     parser = argparse.ArgumentParser(
-        description = "RFC 2217 Serial to Network (TCP/IP) redirector.",
-        epilog = """\
+        description="RFC 2217 Serial to Network (TCP/IP) redirector.",
+        epilog="""\
 NOTE: no security measures are implemented. Anyone can remotely connect
 to this service over the network.
 
@@ -113,14 +108,16 @@
 
     parser.add_argument('SERIALPORT')
 
-    parser.add_argument('-p', '--localport',
+    parser.add_argument(
+            '-p', '--localport',
             type=int,
             help='local TCP port, default: %(default)s',
             metavar='TCPPORT',
             default=2217
             )
 
-    parser.add_argument('-v', '--verbose',
+    parser.add_argument(
+            '-v', '--verbose',
             dest='verbosity',
             action='count',
             help='print more diagnostic messages (option can be given multiple times)',
@@ -138,43 +135,43 @@
             logging.NOTSET,
             )[args.verbosity]
     logging.basicConfig(level=logging.INFO)
-    logging.getLogger('root').setLevel(logging.INFO)
+    #~ logging.getLogger('root').setLevel(logging.INFO)
     logging.getLogger('rfc2217').setLevel(level)
 
     # connect to serial port
     ser = serial.serial_for_url(args.SERIALPORT, do_not_open=True)
-    ser.timeout  = 3     # required so that the reader thread can exit
+    ser.timeout = 3     # required so that the reader thread can exit
+    # reset control line as no _remote_ "terminal" has been connected yet
+    ser.dtr = False
+    ser.rts = False
 
     logging.info("RFC 2217 TCP/IP to Serial redirector - type Ctrl-C / BREAK to quit")
 
     try:
         ser.open()
     except serial.SerialException as e:
-        logging.error("Could not open serial port %s: %s" % (ser.name, e))
+        logging.error("Could not open serial port {}: {}".format(ser.name, e))
         sys.exit(1)
 
-    logging.info("Serving serial port: %s" % (ser.name,))
-    settings = ser.getSettingsDict()
-    # reset control line as no _remote_ "terminal" has been connected yet
-    ser.setDTR(False)
-    ser.setRTS(False)
+    logging.info("Serving serial port: {}".format(ser.name))
+    settings = ser.get_settings()
 
     srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     srv.bind(('', args.localport))
     srv.listen(1)
-    logging.info("TCP/IP port: %s" % (args.localport,))
+    logging.info("TCP/IP port: {}".format(args.localport))
     while True:
         try:
-            connection, addr = srv.accept()
-            logging.info('Connected by %s:%s' % (addr[0], addr[1]))
-            connection.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
-            ser.setRTS(True)
-            ser.setDTR(True)
+            client_socket, addr = srv.accept()
+            logging.info('Connected by {}:{}'.format(addr[0], addr[1]))
+            client_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
+            ser.rts = True
+            ser.dtr = True
             # enter network <-> serial loop
             r = Redirector(
                     ser,
-                    connection,
+                    client_socket,
                     args.verbosity > 0
                     )
             try:
@@ -182,15 +179,16 @@
             finally:
                 logging.info('Disconnected')
                 r.stop()
-                connection.close()
-                ser.setDTR(False)
-                ser.setRTS(False)
+                client_socket.close()
+                ser.dtr = False
+                ser.rts = False
                 # Restore port settings (may have been changed by RFC 2217
                 # capable client)
-                ser.applySettingsDict(settings)
+                ser.apply_settings(settings)
         except KeyboardInterrupt:
+            sys.stdout.write('\n')
             break
         except socket.error as msg:
-            logging.error('%s' % (msg,))
+            logging.error(str(msg))
 
     logging.info('--- exit ---')