Full_Name: Hallvard B Furuseth Version: HEAD OS: URL: Submission from: (NULL) (129.240.6.233) Submitted by: hallvard
Looking at the code (not sure how to reproduce):
Cancel(pending operation) abandons the operation, without responding to either Cancel or the cancelled operation. That code in slapd/cancel.c is copied from the equivalent abandon.c code.
Cancel as currently written must wait for the cancelled operation to complete. But an active operation must not wait for a pending one, all threads could block. For now we can make Cancel respond with
LDAP_CANNOT_CANCEL: "can't handle Cancel now, try Abandon".
Repeating myself, a better fix (RE25?) would be to make the cancelled operation send the Cancel response. Don't how deep surgery that'd need to slapd.