[Lldb-commits] [lldb] r234332 - Delete port forwarding if ConnectRemote fails.
Oleksiy Vyalov
ovyalov at google.com
Tue Apr 7 10:23:15 PDT 2015
Author: ovyalov
Date: Tue Apr 7 12:23:15 2015
New Revision: 234332
URL: http://llvm.org/viewvc/llvm-project?rev=234332&view=rev
Log:
Delete port forwarding if ConnectRemote fails.
http://reviews.llvm.org/D8826
Modified:
lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp
lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h
Modified: lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp?rev=234332&r1=234331&r2=234332&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp (original)
+++ lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp Tue Apr 7 12:23:15 2015
@@ -80,13 +80,7 @@ PlatformAndroidRemoteGDBServer::LaunchGD
bool
PlatformAndroidRemoteGDBServer::KillSpawnedProcess (lldb::pid_t pid)
{
- auto it = m_port_forwards.find (pid);
- if (it != m_port_forwards.end ())
- {
- DeleteForwardPortWithAdb (it->second.first, it->second.second);
- m_port_forwards.erase (it);
- }
-
+ DeleteForwardPort (pid);
return m_gdb_client.KillSpawnedProcess (pid);
}
@@ -109,18 +103,35 @@ PlatformAndroidRemoteGDBServer::ConnectR
m_port_forwards[g_remote_platform_pid] = std::make_pair (port, device_id);
- return PlatformRemoteGDBServer::ConnectRemote (args);
+ error = PlatformRemoteGDBServer::ConnectRemote (args);
+ if (error.Fail ())
+ DeleteForwardPort (g_remote_platform_pid);
+
+ return error;
}
Error
PlatformAndroidRemoteGDBServer::DisconnectRemote ()
{
- auto it = m_port_forwards.find (g_remote_platform_pid);
- if (it != m_port_forwards.end ())
- {
- DeleteForwardPortWithAdb (it->second.first, it->second.second);
- m_port_forwards.erase (it);
- }
-
+ DeleteForwardPort (g_remote_platform_pid);
return PlatformRemoteGDBServer::DisconnectRemote ();
}
+
+void
+PlatformAndroidRemoteGDBServer::DeleteForwardPort (lldb::pid_t pid)
+{
+ Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_PLATFORM));
+
+ auto it = m_port_forwards.find (pid);
+ if (it == m_port_forwards.end ())
+ return;
+
+ const auto& forward_val = it->second;
+ const auto error = DeleteForwardPortWithAdb (forward_val.first, forward_val.second);
+ if (error.Fail ()) {
+ if (log)
+ log->Printf ("Failed to delete port forwarding (pid=%" PRIu64 ", port=%d, device=%s): %s",
+ pid, forward_val.first, forward_val.second.c_str (), error.AsCString ());
+ }
+ m_port_forwards.erase (it);
+}
Modified: lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h?rev=234332&r1=234331&r2=234332&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h (original)
+++ lldb/trunk/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h Tue Apr 7 12:23:15 2015
@@ -45,6 +45,9 @@ protected:
bool
KillSpawnedProcess (lldb::pid_t pid) override;
+ void
+ DeleteForwardPort (lldb::pid_t pid);
+
private:
DISALLOW_COPY_AND_ASSIGN (PlatformAndroidRemoteGDBServer);
More information about the lldb-commits
mailing list