| Index: runtime/bin/vmservice_impl.cc
 | 
| diff --git a/runtime/bin/vmservice_impl.cc b/runtime/bin/vmservice_impl.cc
 | 
| index 871a91c7ca0298d014e94eeb032ccb4728eb8b8a..004cf66dd75e95c549a809660e27e5b813634634 100644
 | 
| --- a/runtime/bin/vmservice_impl.cc
 | 
| +++ b/runtime/bin/vmservice_impl.cc
 | 
| @@ -91,27 +91,20 @@ class Resources {
 | 
|  
 | 
|  void NotifyServerState(Dart_NativeArguments args) {
 | 
|    Dart_EnterScope();
 | 
| -  const char* ip_chars;
 | 
| -  Dart_Handle ip_arg = Dart_GetNativeArgument(args, 0);
 | 
| -  if (Dart_IsError(ip_arg)) {
 | 
| -    VmService::SetServerIPAndPort("", 0);
 | 
| +  const char* uri_chars;
 | 
| +  Dart_Handle uri_arg = Dart_GetNativeArgument(args, 0);
 | 
| +  if (Dart_IsError(uri_arg)) {
 | 
| +    VmService::SetServerAddress("");
 | 
|      Dart_ExitScope();
 | 
|      return;
 | 
|    }
 | 
| -  Dart_Handle result = Dart_StringToCString(ip_arg, &ip_chars);
 | 
| +  Dart_Handle result = Dart_StringToCString(uri_arg, &uri_chars);
 | 
|    if (Dart_IsError(result)) {
 | 
| -    VmService::SetServerIPAndPort("", 0);
 | 
| +    VmService::SetServerAddress("");
 | 
|      Dart_ExitScope();
 | 
|      return;
 | 
|    }
 | 
| -  Dart_Handle port_arg = Dart_GetNativeArgument(args, 1);
 | 
| -  if (Dart_IsError(port_arg)) {
 | 
| -    VmService::SetServerIPAndPort("", 0);
 | 
| -    Dart_ExitScope();
 | 
| -    return;
 | 
| -  }
 | 
| -  int64_t port = DartUtils::GetInt64ValueCheckRange(port_arg, 0, 65535);
 | 
| -  VmService::SetServerIPAndPort(ip_chars, port);
 | 
| +  VmService::SetServerAddress(uri_chars);
 | 
|    Dart_ExitScope();
 | 
|  }
 | 
|  
 | 
| @@ -129,7 +122,7 @@ struct VmServiceIONativeEntry {
 | 
|  
 | 
|  
 | 
|  static VmServiceIONativeEntry _VmServiceIONativeEntries[] = {
 | 
| -  {"VMServiceIO_NotifyServerState", 2, NotifyServerState},
 | 
| +  {"VMServiceIO_NotifyServerState", 1, NotifyServerState},
 | 
|    {"VMServiceIO_Shutdown", 0, Shutdown },
 | 
|  };
 | 
|  
 | 
| @@ -156,8 +149,7 @@ static Dart_NativeFunction VmServiceIONativeResolver(Dart_Handle name,
 | 
|  
 | 
|  
 | 
|  const char* VmService::error_msg_ = NULL;
 | 
| -char VmService::server_ip_[kServerIpStringBufferSize];
 | 
| -intptr_t VmService::server_port_ = 0;
 | 
| +char VmService::server_uri_[kServerUriStringBufferSize];
 | 
|  
 | 
|  
 | 
|  bool VmService::LoadForGenPrecompiled() {
 | 
| @@ -180,7 +172,7 @@ bool VmService::Setup(const char* server_ip,
 | 
|                        bool dev_mode_server) {
 | 
|    Dart_Isolate isolate = Dart_CurrentIsolate();
 | 
|    ASSERT(isolate != NULL);
 | 
| -  SetServerIPAndPort("", 0);
 | 
| +  SetServerAddress("");
 | 
|  
 | 
|    Dart_Handle result;
 | 
|  
 | 
| @@ -290,13 +282,16 @@ const char* VmService::GetErrorMessage() {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void VmService::SetServerIPAndPort(const char* ip, intptr_t port) {
 | 
| -  if (ip == NULL) {
 | 
| -    ip = "";
 | 
| +void VmService::SetServerAddress(const char* server_uri) {
 | 
| +  if (server_uri == NULL) {
 | 
| +    server_uri = "";
 | 
| +  }
 | 
| +  const intptr_t server_uri_len = strlen(server_uri);
 | 
| +  if (server_uri_len >= (kServerUriStringBufferSize - 1)) {
 | 
| +    FATAL1("vm-service: Server URI exceeded length: %s\n", server_uri);
 | 
|    }
 | 
| -  strncpy(server_ip_, ip, kServerIpStringBufferSize);
 | 
| -  server_ip_[kServerIpStringBufferSize - 1] = '\0';
 | 
| -  server_port_ = port;
 | 
| +  strncpy(server_uri_, server_uri, kServerUriStringBufferSize);
 | 
| +  server_uri_[kServerUriStringBufferSize - 1] = '\0';
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |