[SNMP4J] Agent 1.0 beta 2 SET command locked

Matthieu Casanova chocolat.mou at gmail.com
Mon May 22 11:05:31 CEST 2006


thanks it's perfect now

Matthieu

2006/5/19, Frank Fock <fock at agentpp.com>:
>
> Hi Matthieu,
>
> Sorry, this is a bug/shortcoming in MOScalar.
> In the methods MOScalar.prepare and MOScalar.undo
> the phase should be set to "complete".
>
> This code would be correct:
>
>    public void prepare(SubRequest request) {
>      RequestStatus status = request.getStatus();
>      if (access.isAccessibleForWrite()) {
>        VariableBinding vb = request.getVariableBinding();
>        if (vb.getVariable().getSyntax() != getValue().getSyntax()) {
>          status.setErrorStatus(SnmpConstants.SNMP_ERROR_WRONG_TYPE);
>          return;
>        }
>        int valueOK = isValueOK(request);
>        status.setErrorStatus(valueOK);
>        status.setPhaseComplete(true);
>      }
>      else {
>        status.setErrorStatus(SnmpConstants.SNMP_ERROR_NOT_WRITEABLE);
>      }
>    }
>
>    public void commit(SubRequest request) {
>      RequestStatus status = request.getStatus();
>      VariableBinding vb = request.getVariableBinding();
>      request.setUndoValue(getValue());
>      setValue(vb.getVariable());
>      status.setPhaseComplete(true);
>    }
>
>    public void undo(SubRequest request) {
>      RequestStatus status = request.getStatus();
>      if ((request.getUndoValue() != null) &&
>          (request.getUndoValue() instanceof Variable)) {
>        int errorStatus = setValue((Variable)request.getUndoValue());
>        status.setErrorStatus(errorStatus);
>        status.setPhaseComplete(true);
>      }
>      else {
>        status.setErrorStatus(SnmpConstants.SNMP_ERROR_UNDO_FAILED);
>      }
>    }
>
> I will upload a fixed version on Monday!
>
> Best regards,
> Frank
>
> Matthieu Casanova wrote:
> > Hi, I switched from agent 1.0 beta 1 to beta 2.
> > I have in my server a MoScalar on which I'm doing some SETs. Of course
> it
> > was working with beta 1, but not anymore with beta 2.
> > In fact during the process it is locked at line 632 of CommandProcessor
> > during the SetHandler.prepare()
> > The prepare method is the default of MOScalar.
> > the errorStatus found at line 126 of MOScalar is 0 so I think it means
> that
> > it's all right
> > But in the RequestStatus class in method setErrorStatus()
> > there are those lines
> >
> > boolean error = (errorStatus != SnmpConstants.SNMP_ERROR_SUCCESS);
> > setPhaseComplete(error);
> >
> > so if the error status was 0 ( SnmpConstants.SNMP_ERROR_SUCCESS )
> > this means that the phase is not complete.
> > But it seems the request is not processed again, and the MOScalar
> remains
> > locked because nothing calls unlock.
> > Did I forgot something ?
> >
> > Matthieu
> > _______________________________________________
> > SNMP4J mailing list
> > SNMP4J at agentpp.org
> > http://lists.agentpp.org/mailman/listinfo/snmp4j
>
> --
> AGENT++
> http://www.agentpp.com
> http://www.mibexplorer.com
> http://www.mibdesigner.com
>
>



More information about the SNMP4J mailing list