Hi Antonio,

Well, I'm using the DBM Database module. Certainly, the endless loop seems
to be a little bug... ;)

Frustrating but I don't know how to fix it without potentially breaking the module completely because I'm not really familiar with DB.pm (I "only" ocded the SQL interface).


I have another problem, after completing all the previous steps, when i
going to issue the certificates (29 users), i get only 6 certificates
correctly and then the process stall. If I try again, the system issues
next 6 certificates and then stall again. I'll do it time after time, till
i get all the certificates. This is not the standard behaviour, no?

No, this is not the standard behaviour but it is the same problem like the first one. Both functionalities use the function getNextItem from DB.pm. It looks like this function has a problem. We changed the function a little bit for 0.9.2 but I don't know which sideeffects the new changes can have in 0.9.1.


0.9.1:

        if ( ($self->{dbms}->seq($key, $val, R_CURSOR) != 0) or
             ($keys->{KEY} != $key) ) {
                ## the key doesn't exist
                $dbstat = $self->{dbms}->seq($key, $val, R_FIRST);
        } else {
                do {
                        $dbstat = $self->{dbms}->seq($key, $val, R_NEXT );
                } while (($dbstat == 0) and ($key eq "ELEMENTS"));
        }

        return undef
                if ($dbstat < 0);

## Return object (if any)
return $self->getItem( DATATYPE=>$dataType, MODE=>$mode, KEY=>$key, PARSE_MODE => $parse_mode);


0.9.2:

        if ( ($self->{dbms}->seq($key, $val, R_CURSOR) != 0) or
             not exists $keys->{KEY} or
             ($keys->{KEY} != $key) ) {
                ## the key does not exist
                $dbstat = $self->{dbms}->seq($key, $val, R_FIRST);
        } else {
                do {
                        $dbstat = $self->{dbms}->seq($key, $val, R_NEXT );
                } while (($dbstat == 0) and ($key eq "ELEMENTS"));
        }

        return undef if ($dbstat < 0);  ## real error
        return undef if ($dbstat == 1); ## R_NEXT or R_FIRST does not exist

## Return object (if any)
return $self->getItem( DATATYPE=>$dataType, MODE=>$mode, KEY=>$key);


The first "if" contains a more safe construction to detect a needed first element. Also there is a better error detection and we don't need a parse mode because the crypto object parser is now much faster and we completely parse every object.

Michael
--
-------------------------------------------------------------------
Michael Bell                   Email: [EMAIL PROTECTED]
ZE Computer- und Medienservice            Tel.: +49 (0)30-2093 2482
(Computing Centre)                        Fax:  +49 (0)30-2093 2704
Humboldt-University of Berlin
Unter den Linden 6
10099 Berlin                   Email (private): [EMAIL PROTECTED]
Germany                                       http://www.openca.org



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Openca-Users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/openca-users

Reply via email to