diff options
author | Daniel Lublin <daniel@lublin.se> | 2020-04-14 13:09:49 +0300 |
---|---|---|
committer | Daniel Lublin <daniel@lublin.se> | 2020-04-15 00:52:08 +0300 |
commit | f42b2f306bd03cbe2b94c47a881957f9ca837f4a (patch) | |
tree | 7c3c5fe25e8ff3ba10f85a9c43d69c75249d88cb | |
parent | 8cc262badeb4f47647a0336f8f0b4a38ef0627ed (diff) |
Resolve SRV records, with Humla
4 files changed, 41 insertions, 42 deletions
diff --git a/app/src/main/java/se/lublin/mumla/app/MumlaActivity.java b/app/src/main/java/se/lublin/mumla/app/MumlaActivity.java index 916da05..d10e1b5 100644 --- a/app/src/main/java/se/lublin/mumla/app/MumlaActivity.java +++ b/app/src/main/java/se/lublin/mumla/app/MumlaActivity.java @@ -698,7 +698,8 @@ public class MumlaActivity extends AppCompatActivity implements ListView.OnItemC Toast.LENGTH_SHORT).show(); } }); - // TODO SRV ? we no longer display port, as we might not know + // SRV lookup is done later, so we no longer show the port (and + // only the configured hostname) mConnectingDialog.setMessage(getString(R.string.connecting_to_server, server.getHost()) + (mSettings.isTorEnabled() ? " (Tor)" : "")); mConnectingDialog.show(); diff --git a/app/src/main/java/se/lublin/mumla/channel/ServerInfoFragment.java b/app/src/main/java/se/lublin/mumla/channel/ServerInfoFragment.java index c00b922..53bee4f 100644 --- a/app/src/main/java/se/lublin/mumla/channel/ServerInfoFragment.java +++ b/app/src/main/java/se/lublin/mumla/channel/ServerInfoFragment.java @@ -85,10 +85,10 @@ public class ServerInfoFragment extends HumlaServiceFragment { mOSVersionView.setText(getString(R.string.server_info_version, session.getServerOSName(), session.getServerOSVersion())); mTCPLatencyView.setText(getString(R.string.server_info_latency, (float)session.getTCPLatency()*Math.pow(10, -3))); mUDPLatencyView.setText(getString(R.string.server_info_latency, (float)session.getUDPLatency()*Math.pow(10, -3))); - // TODO SRV should figure out port we're actually connected to + // TODO SRV note also getHost,Port? mHostView.setText(getString(R.string.server_info_host, - getService().getTargetServer().getHost(), - getService().getTargetServer().getPort())); + getService().getTargetServer().getSrvHost(), + getService().getTargetServer().getSrvPort())); String codecName; HumlaUDPMessageType codecType = session.getCodec(); diff --git a/app/src/main/java/se/lublin/mumla/servers/ServerInfoTask.java b/app/src/main/java/se/lublin/mumla/servers/ServerInfoTask.java index fc04d6e..80cccb9 100644 --- a/app/src/main/java/se/lublin/mumla/servers/ServerInfoTask.java +++ b/app/src/main/java/se/lublin/mumla/servers/ServerInfoTask.java @@ -35,48 +35,46 @@ import se.lublin.mumla.Constants; * */ public class ServerInfoTask extends AsyncTask<Server, Void, ServerInfoResponse> { + private Server server; - private Server server; - - @Override - protected ServerInfoResponse doInBackground(Server... params) { - server = params[0]; - try { - InetAddress host = InetAddress.getByName(server.getHost()); - - // Create ping message - ByteBuffer buffer = ByteBuffer.allocate(12); - buffer.putInt(0); // Request type - buffer.putLong(server.getId()); // Identifier - // TODO SRV use looked up port here. - DatagramPacket requestPacket = new DatagramPacket(buffer.array(), 12, host, server.getPort()); - - // Send packet and wait for response - DatagramSocket socket = new DatagramSocket(); - socket.setSoTimeout(1000); - socket.setReceiveBufferSize(1024); + @Override + protected ServerInfoResponse doInBackground(Server... params) { + server = params[0]; + try { + // Create ping message + ByteBuffer buffer = ByteBuffer.allocate(12); + buffer.putInt(0); // Request type + buffer.putLong(server.getId()); // Identifier + DatagramPacket requestPacket = new DatagramPacket(buffer.array(), 12, + InetAddress.getByName(server.getSrvHost()), server.getSrvPort()); + + // Send packet and wait for response + DatagramSocket socket = new DatagramSocket(); + socket.setSoTimeout(1000); + socket.setReceiveBufferSize(1024); long startTime = System.nanoTime(); socket.send(requestPacket); - - byte[] responseBuffer = new byte[24]; - DatagramPacket responsePacket = new DatagramPacket(responseBuffer, responseBuffer.length); - socket.receive(responsePacket); + + byte[] responseBuffer = new byte[24]; + DatagramPacket responsePacket = new DatagramPacket(responseBuffer, responseBuffer.length); + socket.receive(responsePacket); int latencyInMs = (int) ((System.nanoTime()-startTime)/1000000); - - ServerInfoResponse response = new ServerInfoResponse(server, responseBuffer, latencyInMs); - - Log.i(Constants.TAG, "DEBUG: Server version: "+response.getVersionString()+"\nUsers: "+response.getCurrentUsers()+"/"+response.getMaximumUsers()); - - return response; - - } catch (Exception e) { -// e.printStackTrace(); - } - - return new ServerInfoResponse(); // Return dummy in case of failure - } - -}
\ No newline at end of file + + ServerInfoResponse response = new ServerInfoResponse(server, responseBuffer, latencyInMs); + + Log.d(Constants.TAG, "Server version: " + response.getVersionString() + + " Users: " + response.getCurrentUsers() + "/" + response.getMaximumUsers()); + + return response; + + } catch (Exception e) { +// e.printStackTrace(); + } + + return new ServerInfoResponse(); // Return dummy in case of failure + } + +} diff --git a/libraries/humla b/libraries/humla -Subproject e451061ccba59f8e1a329d4a42093260c75d556 +Subproject 1682953f71bad7d7868bd2ab8f7c4d1c7caddb7 |