diff --git a/router/java/src/net/i2p/router/crypto/ratchet/ACKTimer.java b/router/java/src/net/i2p/router/crypto/ratchet/ACKTimer.java
index 264cf61eb43cc15d3137247cf3153b160ff839e4..425092a73bf8833a9f76a1f76f3341f66bdd3c60 100644
--- a/router/java/src/net/i2p/router/crypto/ratchet/ACKTimer.java
+++ b/router/java/src/net/i2p/router/crypto/ratchet/ACKTimer.java
@@ -26,12 +26,16 @@ class ACKTimer extends SimpleTimer2.TimedEvent {
     private final Destination _from, _to;
 
     private static final long EXPIRATION = 60*1000;
+    // ClientMessageOptions.LS_MASK, don't send LS
+    // Never bundle our LS with a ratchet-layer ACK, because we don't need to,
+    // and because it will be the wrong LS for subsessions
+    private static final int LS_MASK = 0x0100;
 
     /**
      *  Caller must schedule
      *
-     *  @param from local destination ACK will come from
-     *  @param to remote destination ACK will go to
+     *  @param from local destination ACK will come from, non-null
+     *  @param to remote destination ACK will go to, non-null
      *
      */
     public ACKTimer(RouterContext context, Destination from, Destination to) {
@@ -51,8 +55,8 @@ class ACKTimer extends SimpleTimer2.TimedEvent {
         long now = _context.clock().now();
         long exp = now + EXPIRATION;
         MessageId msgID = new MessageId();
-        // null payload, no nonce, no flags
-        ClientMessage cmsg = new ClientMessage(_to, null, config, _from, msgID, 0, exp, 0);
+        // null payload, no nonce
+        ClientMessage cmsg = new ClientMessage(_to, null, config, _from, msgID, 0, exp, LS_MASK);
         _context.clientMessagePool().add(cmsg, true);
         if (_log.shouldInfo())
             _log.info("Sent ratchet ack from " + _from.toBase32() + " to " + _to.toBase32());