This commit consists of:
1) Improved error handling
2) Return correct XML message for unimplemented rpcs
3) Clean up

Change-Id: Ia59d203840efc2e238a50d4f05e56f854cca9fc7
diff --git a/netconf/session/nc_protocol_handler.py b/netconf/session/nc_protocol_handler.py
index 02d1454..79cfb06 100644
--- a/netconf/session/nc_protocol_handler.py
+++ b/netconf/session/nc_protocol_handler.py
@@ -23,6 +23,7 @@
 from netconf.constants import Constants as C
 from netconf.nc_common.utils import qmap, ns, elm
 import netconf.nc_common.error as ncerror
+from netconf.nc_common.error import BadMsg, NotImpl, ServerException, Error
 
 log = structlog.get_logger()
 
@@ -178,8 +179,10 @@
                              rpc_handler=rpc_handler,
                              is_error=response.is_error,
                              response=response)
-                    self.send_rpc_reply(response.node, rpc)
-                    # self.send_rpc_reply(self.get_instance(), rpc)
+                    if not response.is_error:
+                        self.send_rpc_reply(response.node, rpc)
+                    else:
+                        self.send_message(response.node.get_xml_reply())
 
                     if response.close_session:
                         log.info('response-closing-session', response=response)
@@ -188,12 +191,13 @@
                     log.error('no-rpc-handler',
                               request=msg,
                               session_id=self.session.session_id)
-                    raise ncerror.NotImpl(msg)
+                    error = ncerror.NotImpl(msg)
+                    self.send_message(error.get_xml_reply())
 
             except ncerror.BadMsg as err:
                 log.info('ncerror.BadMsg')
                 if self.new_framing:
-                    self.send_message(err.get_reply_msg())
+                    self.send_message(err.get_xml_reply())
                 else:
                     # If we are 1.0 we have to simply close the connection
                     # as we are not allowed to send this error
@@ -205,7 +209,7 @@
             except Exception as ex:
                 log.info('Exception', repr(ex))
                 error = ncerror.ServerException(rpc, ex)
-                self.send_message(error.get_reply_msg())
+                self.send_message(error.get_xml_reply())
 
 
     def stop(self, reason):