[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