Always explain why bind(2) failed.
This has confused several people lately.
Bug: http://b/20219978
Change-Id: I2537ceb83bff0b3166c230c728d4389a983db858
diff --git a/adb/adb_listeners.cpp b/adb/adb_listeners.cpp
index 84b9c64..a1a5ddb 100644
--- a/adb/adb_listeners.cpp
+++ b/adb/adb_listeners.cpp
@@ -190,17 +190,17 @@
return result;
}
-int remove_listener(const char *local_name, atransport* transport)
+install_status_t remove_listener(const char *local_name, atransport* transport)
{
alistener *l;
for (l = listener_list.next; l != &listener_list; l = l->next) {
if (!strcmp(local_name, l->local_name)) {
listener_disconnect(l, l->transport);
- return 0;
+ return INSTALL_STATUS_OK;
}
}
- return -1;
+ return INSTALL_STATUS_LISTENER_NOT_FOUND;
}
void remove_all_listeners(void)
@@ -268,10 +268,10 @@
listener->fd = local_name_to_fd(local_name);
if (listener->fd < 0) {
+ printf("cannot bind '%s': %s\n", local_name, strerror(errno));
free(listener->local_name);
free(listener->connect_to);
free(listener);
- printf("cannot bind '%s'\n", local_name);
return INSTALL_STATUS_CANNOT_BIND;
}