Fix: agent: read: end of loop condition should exclude 0
[lttng-ust.git] / liblttng-ust-java-agent / java / lttng-ust-agent-common / org / lttng / ust / agent / client / LttngTcpSessiondClient.java
index 0f979a4f88da7d7fa97da19c6786f0dcc9fe1e90..c63850050444ad42a47a8dccce94b3b30f2b638e 100644 (file)
@@ -133,11 +133,31 @@ public class LttngTcpSessiondClient implements Runnable {
                                handleSessiondCmd();
                        } catch (UnknownHostException uhe) {
                                uhe.printStackTrace();
+                               /*
+                                * Terminate agent thread.
+                                */
+                               close();
                        } catch (IOException ioe) {
+                               /*
+                                * I/O exception may have been triggered by a session daemon
+                                * closing the socket. Close our own socket and
+                                * retry connecting after a delay.
+                                */
                                try {
+                                       if (this.sessiondSock != null) {
+                                               this.sessiondSock.close();
+                                       }
                                        Thread.sleep(3000);
                                } catch (InterruptedException e) {
-                                       e.printStackTrace();
+                                       /*
+                                        * Retry immediately if sleep is interrupted.
+                                        */
+                               } catch (IOException closeioe) {
+                                       closeioe.printStackTrace();
+                                       /*
+                                        * Terminate agent thread.
+                                        */
+                                       close();
                                }
                        }
                }
@@ -367,7 +387,7 @@ public class LttngTcpSessiondClient implements Runnable {
                int bytesLeft = data.length;
                int bytesOffset = 0;
 
-               while (bytesLeft != 0) {
+               while (bytesLeft > 0) {
                        int bytesRead = this.inFromSessiond.read(data, bytesOffset, bytesLeft);
 
                        if (bytesRead < 0) {
@@ -396,7 +416,7 @@ public class LttngTcpSessiondClient implements Runnable {
                        return null;
                }
 
-               while (bytesLeft != 0) {
+               while (bytesLeft > 0) {
                        int bytesRead = inFromSessiond.read(payload, bytesOffset, bytesLeft);
 
                        if (bytesRead < 0) {
This page took 0.024661 seconds and 4 git commands to generate.