add missing state change on corrupt packet header in drbd_recv_header

Otherwise the 'state fixup' in the receiver will change to Unconnected,
but the receiver will terminate itself, and any attempt at 'down'ing
that drbd later will block forever.

see also Bugz. #259

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
Lars Ellenberg 2009-11-16 15:58:04 +01:00 committed by Philipp Reisner
parent 6c6c7951be
commit 0b33a9164a

View file

@ -3499,8 +3499,10 @@ static void drbdd(struct drbd_conf *mdev)
while (get_t_state(&mdev->receiver) == Running) { while (get_t_state(&mdev->receiver) == Running) {
drbd_thread_current_set_cpu(mdev); drbd_thread_current_set_cpu(mdev);
if (!drbd_recv_header(mdev, header)) if (!drbd_recv_header(mdev, header)) {
drbd_force_state(mdev, NS(conn, C_PROTOCOL_ERROR));
break; break;
}
if (header->command < P_MAX_CMD) if (header->command < P_MAX_CMD)
handler = drbd_cmd_handler[header->command]; handler = drbd_cmd_handler[header->command];