|
@@ -1802,6 +1802,11 @@ static inline void rfcomm_process_dlcs(struct rfcomm_session *s)
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (test_bit(RFCOMM_ENC_DROP, &d->flags)) {
|
|
|
|
+ __rfcomm_dlc_close(d, ECONNREFUSED);
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (test_and_clear_bit(RFCOMM_AUTH_ACCEPT, &d->flags)) {
|
|
if (test_and_clear_bit(RFCOMM_AUTH_ACCEPT, &d->flags)) {
|
|
rfcomm_dlc_clear_timer(d);
|
|
rfcomm_dlc_clear_timer(d);
|
|
if (d->out) {
|
|
if (d->out) {
|
|
@@ -2074,7 +2079,7 @@ static void rfcomm_security_cfm(struct hci_conn *conn, u8 status, u8 encrypt)
|
|
if (test_and_clear_bit(RFCOMM_SEC_PENDING, &d->flags)) {
|
|
if (test_and_clear_bit(RFCOMM_SEC_PENDING, &d->flags)) {
|
|
rfcomm_dlc_clear_timer(d);
|
|
rfcomm_dlc_clear_timer(d);
|
|
if (status || encrypt == 0x00) {
|
|
if (status || encrypt == 0x00) {
|
|
- __rfcomm_dlc_close(d, ECONNREFUSED);
|
|
|
|
|
|
+ set_bit(RFCOMM_ENC_DROP, &d->flags);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -2085,7 +2090,7 @@ static void rfcomm_security_cfm(struct hci_conn *conn, u8 status, u8 encrypt)
|
|
rfcomm_dlc_set_timer(d, RFCOMM_AUTH_TIMEOUT);
|
|
rfcomm_dlc_set_timer(d, RFCOMM_AUTH_TIMEOUT);
|
|
continue;
|
|
continue;
|
|
} else if (d->sec_level == BT_SECURITY_HIGH) {
|
|
} else if (d->sec_level == BT_SECURITY_HIGH) {
|
|
- __rfcomm_dlc_close(d, ECONNREFUSED);
|
|
|
|
|
|
+ set_bit(RFCOMM_ENC_DROP, &d->flags);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|