diff --git a/lib/modules/SSL.pmod/session.pike b/lib/modules/SSL.pmod/session.pike
index 744b44680f6e1a7ea97011736d097b66e21b9fd3..21bf17d0f552dce6007cfb7349e812d987b47c22 100644
--- a/lib/modules/SSL.pmod/session.pike
+++ b/lib/modules/SSL.pmod/session.pike
@@ -127,6 +127,11 @@ array new_server_states(string client_random, string server_random)
       read_state->crypt->set_iv(keys[4]);
       write_state->crypt->set_iv(keys[5]);
     }
+    if (cipher_spec->cipher_type == CIPHER_BLOCK)
+    { /* Crypto.crypto takes care of splitting input into blocks */
+      read_state->crypt = Crypto.crypto(read_state->crypt);
+      write_state->crypt = Crypto.crypto(write_state->crypt);
+    }
   }
   return ({ read_state, write_state });
 }
@@ -153,6 +158,11 @@ array new_client_states(string client_random, string server_random)
       read_state->crypt->set_iv(keys[5]);
       write_state->crypt->set_iv(keys[4]);
     }
+    if (cipher_spec->cipher_type == CIPHER_BLOCK)
+    { /* Crypto.crypto takes care of splitting input into blocks */
+      read_state->crypt = Crypto.crypto(read_state->crypt);
+      write_state->crypt = Crypto.crypto(write_state->crypt);
+    }
   }
   return ({ read_state, write_state });
 }