some tls_eap optimizations

This commit is contained in:
Andreas Steffen
2012-07-11 17:09:04 +02:00
parent 87efdef35b
commit dfe82160e4
+13 -10
View File
@@ -150,10 +150,12 @@ METHOD(tls_eap_t, initiate, status_t,
*/ */
static status_t process_pkt(private_tls_eap_t *this, eap_tls_packet_t *pkt) static status_t process_pkt(private_tls_eap_t *this, eap_tls_packet_t *pkt)
{ {
u_int32_t msg_len;
u_int16_t pkt_len; u_int16_t pkt_len;
u_int32_t msg_len;
size_t msg_len_offset = 0;
pkt_len = untoh16(&pkt->length); pkt_len = untoh16(&pkt->length);
if (pkt->flags & EAP_TLS_LENGTH) if (pkt->flags & EAP_TLS_LENGTH)
{ {
if (pkt_len < sizeof(eap_tls_packet_t) + sizeof(msg_len)) if (pkt_len < sizeof(eap_tls_packet_t) + sizeof(msg_len))
@@ -169,11 +171,11 @@ static status_t process_pkt(private_tls_eap_t *this, eap_tls_packet_t *pkt)
this->type, msg_len); this->type, msg_len);
return FAILED; return FAILED;
} }
return this->tls->process(this->tls, (char*)(pkt + 1) + sizeof(msg_len), msg_len_offset = sizeof(msg_len);
pkt_len - sizeof(eap_tls_packet_t) - sizeof(msg_len));
} }
return this->tls->process(this->tls, (char*)(pkt + 1),
pkt_len - sizeof(eap_tls_packet_t)); return this->tls->process(this->tls, (char*)(pkt + 1) + msg_len_offset,
pkt_len - sizeof(eap_tls_packet_t) - msg_len_offset);
} }
/** /**
@@ -183,7 +185,7 @@ static status_t build_pkt(private_tls_eap_t *this, chunk_t *out)
{ {
char buf[this->frag_size]; char buf[this->frag_size];
eap_tls_packet_t *pkt; eap_tls_packet_t *pkt;
size_t len, reclen; size_t len, reclen, msg_len_offset;
status_t status; status_t status;
char *kind; char *kind;
@@ -215,15 +217,16 @@ static status_t build_pkt(private_tls_eap_t *this, chunk_t *out)
if (this->first_fragment) if (this->first_fragment)
{ {
len = sizeof(buf) - sizeof(eap_tls_packet_t) - sizeof(u_int32_t); len = sizeof(buf) - sizeof(eap_tls_packet_t) - sizeof(u_int32_t);
status = this->tls->build(this->tls, buf + sizeof(eap_tls_packet_t) + msg_len_offset = sizeof(u_int32_t);
sizeof(u_int32_t), &len, &reclen);
} }
else else
{ {
len = sizeof(buf) - sizeof(eap_tls_packet_t); len = sizeof(buf) - sizeof(eap_tls_packet_t);
status = this->tls->build(this->tls, buf + sizeof(eap_tls_packet_t), msg_len_offset = 0;
&len, &reclen);
} }
status = this->tls->build(this->tls, buf + sizeof(eap_tls_packet_t) +
msg_len_offset, &len, &reclen);
switch (status) switch (status)
{ {
case NEED_MORE: case NEED_MORE: