diff --git a/src/evm.c b/src/evm.c index fd60e25..613cd9a 100644 --- a/src/evm.c +++ b/src/evm.c @@ -157,7 +157,8 @@ int evrsrm_recv(EV_RSR_t *evrsr_request) { fi_oer[0] = 4; if (!evrsr_request->messageBody.present == EV_RSR_MessageBody_PR_preReservationRequestMessage || !evrsr_request->messageBody.present == EV_RSR_MessageBody_PR_reservationRequestMessage) { - return 1; + rv = 1; + goto cleanup; } int evrsr_response; if (evrsr_request->messageBody.present == EV_RSR_MessageBody_PR_preReservationRequestMessage) @@ -235,15 +236,13 @@ static int evrsrm_pre_reservation_response(EV_RSR_t *evrsr_request, uint8_t *evr response.supportedPaymentTypes.buf[0] = 0x00; response.preReservationExpirationTime = 0; - - pre_reservation_id++; - asn_enc_rval_t enc = uper_encode_to_buffer(&asn_DEF_EV_RSR, NULL, evrsr_response, evrsrm_oer, 512); if (enc.encoded == -1) { log_error("[ca] failed encoding evrsrm (%s)", enc.failed_type->name); return 1; } *evrsrm_len = (enc.encoded + 7) / 8; + pre_reservation_id++; return 0; }