diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMEventHandler.java b/apps/sam/java/src/net/i2p/sam/client/SAMEventHandler.java
index ae17b893d7412d24a256725bcdfb04fbd0a2ac0f..dc90d3fb2423dd31688e7e7cbcef8a0411158617 100644
--- a/apps/sam/java/src/net/i2p/sam/client/SAMEventHandler.java
+++ b/apps/sam/java/src/net/i2p/sam/client/SAMEventHandler.java
@@ -98,7 +98,7 @@ public class SAMEventHandler extends SAMClientEventListenerImpl {
                     else 
                         return _helloOk.booleanValue() ? _version : null;
                 }
-            } catch (InterruptedException ie) {}
+            } catch (InterruptedException ie) { return null; }
         }
     }
 
@@ -116,7 +116,7 @@ public class SAMEventHandler extends SAMClientEventListenerImpl {
                     else
                         return _sessionCreateOk.booleanValue();
                 }
-            } catch (InterruptedException ie) {}
+            } catch (InterruptedException ie) { return false; }
         }
     }
 
@@ -134,7 +134,7 @@ public class SAMEventHandler extends SAMClientEventListenerImpl {
                     else
                         return _streamStatusOk.booleanValue();
                 }
-            } catch (InterruptedException ie) {}
+            } catch (InterruptedException ie) { return false; }
         }
     }
     
@@ -161,7 +161,7 @@ public class SAMEventHandler extends SAMClientEventListenerImpl {
                             return val;
                     }
                 }
-            } catch (InterruptedException ie) {}
+            } catch (InterruptedException ie) { return null; }
         }
     }
 }
diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMReader.java b/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
index 966d977cb7b95d14c1bd57dc62f9241201d237b4..f8a00b561b80dc8a7131673a9a4e59a69f9db23f 100644
--- a/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
+++ b/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
@@ -42,6 +42,7 @@ public class SAMReader {
         if (_thread != null) {
             _thread.interrupt();
             _thread = null;
+            try { _inRaw.close(); } catch (IOException ioe) {}
         }
     }
     
@@ -98,7 +99,7 @@ public class SAMReader {
                         baos.write(c);
                     }
                     if (c == -1) {
-                        _log.error("Error reading from the SAM bridge");
+                        _log.info("EOF reading from the SAM bridge");
                         break;
                     }
                 } catch (IOException ioe) {
@@ -106,14 +107,12 @@ public class SAMReader {
                     break;
                 }
                 
-                String line = new String(baos.toByteArray());
+                String line = "";
+                try {
+                    line = new String(baos.toByteArray(), "ISO-8859-1");
+                } catch (IOException ioe) {}
                 baos.reset();
                 
-                if (line == null) {
-                    _log.info("No more data from the SAM bridge");
-                    break;
-                }
-                
                 if (_log.shouldDebug())
                     _log.debug("Line read from the bridge: " + line);
                 
@@ -121,7 +120,6 @@ public class SAMReader {
                 
                 if (tok.countTokens() < 2) {
                     _log.error("Invalid SAM line: [" + line + "]");
-                    _live = false;
                     break;
                 }
                 
@@ -145,6 +143,7 @@ public class SAMReader {
                 
                 processEvent(major, minor, params);
             }
+            _live = false;
             if (_log.shouldWarn())
                 _log.warn("SAMReader exiting");
         }
diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
index 8b219124f748974c472aa152d79310fd2d95bb4b..2681122cea9b85403359a3fdf925171236447624 100644
--- a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
+++ b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
@@ -181,12 +181,14 @@ public class SAMStreamSend {
         }
     }
     
-    private void send(OutputStream samOut, SAMEventHandler eventHandler) {
+    private void send(OutputStream samOut, SAMEventHandler eventHandler) throws IOException {
         Sender sender = new Sender(samOut, eventHandler);
         boolean ok = sender.openConnection();
         if (ok) {
             I2PAppThread t = new I2PAppThread(sender, "Sender");
             t.start();
+        } else {
+            throw new IOException("Sender failed to connect");
         }
     }