0955025 sasl: Fix authentication when using PLAIN mechanism

Authored and Committed by teuf 10 years ago
    sasl: Fix authentication when using PLAIN mechanism
    
    With some authentication mechanism (PLAIN for example), sasl_client_start()
    can return SASL_OK, which translates to virNetSASLSessionClientStart()
    returning VIR_NET_SASL_COMPLETE.
    cyrus-sasl documentation is a bit vague as to what to do in such situation,
    but upstream clarified this a bit in
    http://asg.andrew.cmu.edu/archive/message.php?mailbox=archive.cyrus-sasl&msg=10104
    
    When we got VIR_NET_SASL_COMPLETE after virNetSASLSessionClientStart() and
    if the remote also tells us that authentication is complete, then we should
    end the authentication procedure rather than forcing a call to
    virNetSASLSessionClientStep(). Without this patch, when trying to use SASL
    PLAIN, I get:
    errorĀ :authentication failed : Failed to step SASL negotiation: -1
    (SASL(-1): generic failure: Unable to find a callback: 32775)
    
    This patch is based on a spice-gtk patch by Dietmar Maurer.
    
        
file modified
+6 -0