]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async: fix mark_down vs accept race
authorxie xingguo <xie.xingguo@zte.com.cn>
Tue, 15 Jan 2019 05:47:09 +0000 (13:47 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Tue, 15 Jan 2019 06:50:55 +0000 (14:50 +0800)
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/msg/async/AsyncConnection.cc

index d9bdf027bcbdb3aff9277566a1068f4730873ffd..ac863a42df3171152d16e89c67c30ddf7e87932d 100644 (file)
@@ -1530,6 +1530,14 @@ ssize_t AsyncConnection::handle_connect_msg(ceph_msg_connect &connect, bufferlis
        need_challenge ? &authorizer_challenge : nullptr) ||
       !authorizer_valid) {
     lock.lock();
+    if (state != STATE_ACCEPTING_WAIT_CONNECT_MSG_AUTH) {
+      ldout(async_msgr->cct, 1) << __func__
+                                << " state changed while verify_authorizer,"
+                                << " it must be mark_down"
+                                << dendl;
+      ceph_assert(state == STATE_CLOSED);
+      return -1;
+    }
     char tag;
     if (need_challenge && !had_challenge && authorizer_challenge) {
       ldout(async_msgr->cct,10) << __func__ << ": challenging authorizer"