diff --git a/autoload/vimspector/internal/channel.vim b/autoload/vimspector/internal/channel.vim index c58ff64..d9f5871 100644 --- a/autoload/vimspector/internal/channel.vim +++ b/autoload/vimspector/internal/channel.vim @@ -40,6 +40,7 @@ endfunction function! s:_Send( msg ) abort call ch_sendraw( s:ch, a:msg ) + return 1 endfunction function! vimspector#internal#channel#Timeout( id ) abort diff --git a/autoload/vimspector/internal/job.vim b/autoload/vimspector/internal/job.vim index 4f30ebf..8377225 100644 --- a/autoload/vimspector/internal/job.vim +++ b/autoload/vimspector/internal/job.vim @@ -43,21 +43,22 @@ endfunction function! s:_Send( msg ) abort if ! exists( 's:job' ) echom "Can't send message: Job was not initialised correctly" - return + return 0 endif if job_status( s:job ) != 'run' echom "Can't send message: Job is not running" - return + return 0 endif let ch = job_getchannel( s:job ) if ch == 'channel fail' echom "Channel was closed unexpectedly!" - return + return 0 endif call ch_sendraw( ch, a:msg ) + return 1 endfunction function! vimspector#internal#job#StartDebugSession( config ) abort diff --git a/python3/vimspector/debug_adapter_connection.py b/python3/vimspector/debug_adapter_connection.py index ae9cf37..c739df9 100644 --- a/python3/vimspector/debug_adapter_connection.py +++ b/python3/vimspector/debug_adapter_connection.py @@ -56,11 +56,14 @@ class DebugAdapterConnection( object ): 'timer_start( {}, "vimspector#internal#channel#Timeout" )'.format( timeout ) ) - self._outstanding_requests[ this_id ] = PendingRequest( msg, - handler, - failure_handler, - expiry_id ) - self._SendMessage( msg ) + request = PendingRequest( msg, + handler, + failure_handler, + expiry_id ) + self._outstanding_requests[ this_id ] = request + + if not self._SendMessage( msg ): + self._AbortRequest( request, 'Unable to send message' ) def OnRequestTimeout( self, timer_id ): request_id = None @@ -144,7 +147,7 @@ class DebugAdapterConnection( object ): data = 'Content-Length: {0}\r\n\r\n{1}'.format( len( msg ), msg ) # self._logger.debug( 'Sending: {0}'.format( data ) ) - self._Write( data ) + return self._Write( data ) def _ReadHeaders( self ): parts = self._buffer.split( bytes( '\r\n\r\n', 'utf-8' ), 1 ) diff --git a/python3/vimspector/debug_session.py b/python3/vimspector/debug_session.py index b7eae06..0750a50 100644 --- a/python3/vimspector/debug_session.py +++ b/python3/vimspector/debug_session.py @@ -578,6 +578,7 @@ class DebugSession( object ): def OnEvent_terminated( self, message ): self.Clear() + self._connection = None utils.UserMessage( "Debugging was terminated." ) def _RemoveBreakpoints( self ):