Mercurial > hg > nginx-quic
comparison src/stream/ngx_stream_ssl_preread_module.c @ 7322:6649d4433266
Stream ssl_preread: added SSLv2 Client Hello support.
In particular, it was not possible to obtain SSLv2 protocol version.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 18 Jul 2018 18:51:25 +0300 |
parents | 3dfc1584ad75 |
children |
comparison
equal
deleted
inserted
replaced
7321:45e513c3540d | 7322:6649d4433266 |
---|---|
146 | 146 |
147 p = ctx->pos; | 147 p = ctx->pos; |
148 last = c->buffer->last; | 148 last = c->buffer->last; |
149 | 149 |
150 while (last - p >= 5) { | 150 while (last - p >= 5) { |
151 | |
152 if ((p[0] & 0x80) && p[2] == 1 && (p[3] == 0 || p[3] == 3)) { | |
153 ngx_log_debug0(NGX_LOG_DEBUG_STREAM, ctx->log, 0, | |
154 "ssl preread: version 2 ClientHello"); | |
155 ctx->version[0] = p[3]; | |
156 ctx->version[1] = p[4]; | |
157 return NGX_OK; | |
158 } | |
151 | 159 |
152 if (p[0] != 0x16) { | 160 if (p[0] != 0x16) { |
153 ngx_log_debug0(NGX_LOG_DEBUG_STREAM, ctx->log, 0, | 161 ngx_log_debug0(NGX_LOG_DEBUG_STREAM, ctx->log, 0, |
154 "ssl preread: not a handshake"); | 162 "ssl preread: not a handshake"); |
155 ngx_stream_set_ctx(s, NULL, ngx_stream_ssl_preread_module); | 163 ngx_stream_set_ctx(s, NULL, ngx_stream_ssl_preread_module); |
505 /* SSL_get_version() format */ | 513 /* SSL_get_version() format */ |
506 | 514 |
507 ngx_str_null(&version); | 515 ngx_str_null(&version); |
508 | 516 |
509 switch (ctx->version[0]) { | 517 switch (ctx->version[0]) { |
510 case 2: | 518 case 0: |
511 ngx_str_set(&version, "SSLv2"); | 519 switch (ctx->version[1]) { |
520 case 2: | |
521 ngx_str_set(&version, "SSLv2"); | |
522 break; | |
523 } | |
512 break; | 524 break; |
513 case 3: | 525 case 3: |
514 switch (ctx->version[1]) { | 526 switch (ctx->version[1]) { |
515 case 0: | 527 case 0: |
516 ngx_str_set(&version, "SSLv3"); | 528 ngx_str_set(&version, "SSLv3"); |