diff --git a/src/facilities.c b/src/facilities.c index b1dbf6f..e91f644 100644 --- a/src/facilities.c +++ b/src/facilities.c @@ -278,6 +278,7 @@ static int transport_indication(facilities_t *facilities, void* responder, void* tlsc = tolling_tlsc_new(&facilities->tolling, &facilities->epv, tpi->choice.tcp.sourceAddress->buf, 7011); id = tlsc->id; } + ++tlsc->nmsg; pthread_mutex_unlock(&facilities->tolling.lock); sreq->choice.tlsSend.connId = id; @@ -313,9 +314,8 @@ static int transport_indication(facilities_t *facilities, void* responder, void* goto cleanup; } - // Forward to [transport] - if (srep->data->choice.tlsRecv.initializing) { + if (srep->data->choice.tlsRecv.state != 1) { tr = calloc(1, sizeof(TransportRequest_t)); tr->present = TransportRequest_PR_packet; tr->choice.packet.present = TransportPacketRequest_PR_tcp; diff --git a/src/tpm.c b/src/tpm.c index 08329c4..a860e7f 100644 --- a/src/tpm.c +++ b/src/tpm.c @@ -281,6 +281,7 @@ int tpm_pay(void* fc, tolling_info_t* info, void* security_socket, uint8_t* neig tlsc = tolling_tlsc_new(tolling, &facilities->epv, dst_addr, 7011); id = tlsc->id; } + ++tlsc->nmsg; sreq->choice.tlsSend.connId = id; buf[0] = 4; @@ -808,6 +809,7 @@ static void rsu_handle_recv(facilities_t* facilities, TPM_t* tpm_rx, void* secur tlsc = tolling_tlsc_new(tolling, &facilities->epv, src_addr, 7011); id = tlsc->id; } + ++tlsc->nmsg; sreq->choice.tlsSend.connId = id; buf[0] = 4; @@ -849,8 +851,7 @@ static void rsu_handle_recv(facilities_t* facilities, TPM_t* tpm_rx, void* secur tcp->data.size = srep->data->choice.tlsSend.data.size; memcpy(tcp->data.buf, srep->data->choice.tlsSend.data.buf, srep->data->choice.tlsSend.data.size); - if (tolling->protocol.p == TOLLING_PROTOCOL_TLS_GN || - tolling->protocol.p == TOLLING_PROTOCOL_TLS_SHS) { + if (tolling->protocol.p == TOLLING_PROTOCOL_TLS_GN) { tcp->gn = calloc(1, sizeof(GeonetworkingOutboundOptions_t)); tcp->gn->packetTransportType = PacketTransportType_shb; tcp->gn->destinationAddress.buf = calloc(1, 6); @@ -1301,6 +1302,8 @@ tlsc_t* tolling_tlsc_new(tolling_t* tolling, itss_epv_t* epv, uint8_t ipv6[16], tlsc->port = port; tlsc->id = rand(); tlsc->ts = itss_time_get(epv); + tlsc->nmsg = 0; + tlsc->state = 0; ++tolling->protocol.c.tls.n_tlsc; return tlsc; } diff --git a/src/tpm.h b/src/tpm.h index 119fc52..6ff4bab 100644 --- a/src/tpm.h +++ b/src/tpm.h @@ -35,6 +35,8 @@ typedef struct tlsc { uint16_t port; uint64_t id; uint64_t ts; + uint8_t state; + uint16_t nmsg; } tlsc_t; typedef struct tolling {