2008/12/29 Rob Shearman <robertshear...@gmail.com>:
> 2008/12/28 Henri Verbeet <hverb...@gmail.com>:
>> +    while (received < data_size)
>> +    {
>> +        ret = pgnutls_record_recv(ctx->session, data + received, data_size 
>> - received);
>> +        if (ret < 0)
>> +        {
>> +            if (ret == GNUTLS_E_AGAIN)
>> +            {
>> +                if (!received)
>
> Shouldn't this be "if (received == data_size)"?
>
>> +                {
>> +                    pgnutls_perror(ret);
>> +                    HeapFree(GetProcessHeap(), 0, data);
>> +                    TRACE("Returning SEC_E_INCOMPLETE_MESSAGE\n");
>> +                    return SEC_E_INCOMPLETE_MESSAGE;
>> +                }
>> +                break;
>> +            }
>> +            else
>> +            {
>> +                pgnutls_perror(ret);
>> +                HeapFree(GetProcessHeap(), 0, data);
>> +                ERR("Returning SEC_E_INTERNAL_ERROR\n");
>> +                return SEC_E_INTERNAL_ERROR;
>> +            }
>> +        }
>> +        received += ret;
>> +    }
>
The idea was to only return SEC_E_INCOMPLETE_MESSAGE if there's less
than one complete TLS record in the buffer, it shouldn't be a problem
to have eg. one complete message plus some bytes from the next one,
setting the buffer size further down is supposed to take care of that.


Reply via email to