diff --git a/apps/sam/python/src/i2p/socket.py b/apps/sam/python/src/i2p/socket.py
index bd67a21a4a4adb6e54ed607c01b3bdfcd089ee7e..c3609a8fe686f0568e5fd63ddf776f3c3cffc33b 100644
--- a/apps/sam/python/src/i2p/socket.py
+++ b/apps/sam/python/src/i2p/socket.py
@@ -416,11 +416,14 @@ class Socket:
 
     if self.type == SOCK_STREAM:
       self._verify_connected()
-      if bufsize < 0: raise ValueError('bufsize must be >= 0')
+      if bufsize < 0: raise ValueError('bufsize must be >= 0 for streams')
       return (self.sessobj.recv(bufsize, timeout, peek, waitall), \
               self.remotedest)
     else:
-      return self.sessobj.recv(timeout, peek)[:bufsize]
+      if bufsize < -1:
+        raise ValueError('bufsize must be >= -1 for packets')
+      (data, addr) = self.sessobj.recv(timeout, peek)
+      return (data[:bufsize], addr)
 
   def send(self, string, flags=0):
     """Sends string data to a remote Destination.