summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2021-09-13 15:05:07 +0800
committerliuxueli <[email protected]>2021-09-13 15:05:07 +0800
commit6bf86b18243eae01bf92fea01e29443f58e132eb (patch)
tree507f4ce7de822426e13d76399f876546ec282e0a /src
parent72e835353cf83ac5de0db70401aeceb954874a8d (diff)
TSG-7747: 调整SNI/UA的默认索引值
Diffstat (limited to 'src')
-rw-r--r--src/gquic_process.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/gquic_process.cpp b/src/gquic_process.cpp
index 31159b9..630c467 100644
--- a/src/gquic_process.cpp
+++ b/src/gquic_process.cpp
@@ -691,6 +691,9 @@ int parse_extension_tag(struct streaminfo *pstream, struct _quic_stream **quic_s
stream->ext_tags=(quic_tlv_t *)dictator_malloc(pstream->threadnum, tag_num*sizeof(quic_tlv_t));
memset(stream->ext_tags, 0, tag_num*sizeof(quic_tlv_t));
*quic_stream=stream;
+ stream->sni_idx=0xFF;
+ stream->ver_idx=0xFF;
+ stream->ua_idx=0xFF;
}
else
{
@@ -700,6 +703,9 @@ int parse_extension_tag(struct streaminfo *pstream, struct _quic_stream **quic_s
*quic_stream=stream;
stream->ext_tag_num=0;
stream->count++;
+ stream->sni_idx=0xFF;
+ stream->ver_idx=0xFF;
+ stream->ua_idx=0xFF;
}
while(tag_num>tag_used_num)
@@ -1166,6 +1172,9 @@ int parse_encrypt_client_hello(struct streaminfo *pstream, struct _quic_stream *
quic_stream->ext_tags=(quic_tlv_t *)dictator_malloc(pstream->threadnum, sizeof(quic_tlv_t)*3);
memset(quic_stream->ext_tags, 0, sizeof(quic_tlv_t)*3);
+ quic_stream->sni_idx=0xFF;
+ quic_stream->ua_idx=0xFF;
+ quic_stream->ver_idx=0xFF;
while(extension_total_len>used_len)
{
@@ -1364,10 +1373,17 @@ int quic_protocol_identify(struct streaminfo *a_stream, void *a_packet, char *ou
{
if(_context->quic_info.client_hello!=NULL)
{
- sni=(char *)(_context->quic_info.client_hello->ext_tags[_context->quic_info.client_hello->sni_idx].value);
- sni_len=_context->quic_info.client_hello->ext_tags[_context->quic_info.client_hello->sni_idx].length;
- len= sni_len>(out_sni_len-1) ? (out_sni_len-1) : sni_len;
- memcpy(out_sni, sni, len);
+ if(_context->quic_info.client_hello->sni_idx!=0xFF)
+ {
+ sni=(char *)(_context->quic_info.client_hello->ext_tags[_context->quic_info.client_hello->sni_idx].value);
+ sni_len=_context->quic_info.client_hello->ext_tags[_context->quic_info.client_hello->sni_idx].length;
+ len= sni_len>(out_sni_len-1) ? (out_sni_len-1) : sni_len;
+ memcpy(out_sni, sni, len);
+ }
+ else
+ {
+ len=0;
+ }
}
else
{