diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/gnutls.c | 23 |
2 files changed, 24 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 17e3c5988a6..df704efdf2d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2014-11-26 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * gnutls.c (gnutls_ip_address_p): New function. | ||
| 4 | (Fgnutls_boot): Only send SNI if the host name is not an IP address. | ||
| 5 | |||
| 1 | 2014-11-26 Toke Høiland-Jørgensen <toke@toke.dk> (tiny change) | 6 | 2014-11-26 Toke Høiland-Jørgensen <toke@toke.dk> (tiny change) |
| 2 | 7 | ||
| 3 | * gnutls.c (Fgnutls_boot): Send the server name over (bug#18208). | 8 | * gnutls.c (Fgnutls_boot): Send the server name over (bug#18208). |
diff --git a/src/gnutls.c b/src/gnutls.c index 5a4b39f789a..752df3c8edd 100644 --- a/src/gnutls.c +++ b/src/gnutls.c | |||
| @@ -1095,6 +1095,18 @@ emacs_gnutls_global_init (void) | |||
| 1095 | return gnutls_make_error (ret); | 1095 | return gnutls_make_error (ret); |
| 1096 | } | 1096 | } |
| 1097 | 1097 | ||
| 1098 | static bool | ||
| 1099 | gnutls_ip_address_p (char *string) | ||
| 1100 | { | ||
| 1101 | char c; | ||
| 1102 | |||
| 1103 | while ((c = *string++) != 0) | ||
| 1104 | if (! ((c == '.' || c == ':' || (c >= '0' && c <= '9')))) | ||
| 1105 | return false; | ||
| 1106 | |||
| 1107 | return true; | ||
| 1108 | } | ||
| 1109 | |||
| 1098 | #if 0 | 1110 | #if 0 |
| 1099 | /* Deinitializes global GnuTLS state. | 1111 | /* Deinitializes global GnuTLS state. |
| 1100 | See also `gnutls-global-init'. */ | 1112 | See also `gnutls-global-init'. */ |
| @@ -1418,10 +1430,13 @@ one trustfile (usually a CA bundle). */) | |||
| 1418 | if (ret < GNUTLS_E_SUCCESS) | 1430 | if (ret < GNUTLS_E_SUCCESS) |
| 1419 | return gnutls_make_error (ret); | 1431 | return gnutls_make_error (ret); |
| 1420 | 1432 | ||
| 1421 | ret = fn_gnutls_server_name_set (state, GNUTLS_NAME_DNS, c_hostname, | 1433 | if (!gnutls_ip_address_p (c_hostname)) |
| 1422 | strlen(c_hostname)); | 1434 | { |
| 1423 | if (ret < GNUTLS_E_SUCCESS) | 1435 | ret = fn_gnutls_server_name_set (state, GNUTLS_NAME_DNS, c_hostname, |
| 1424 | return gnutls_make_error (ret); | 1436 | strlen (c_hostname)); |
| 1437 | if (ret < GNUTLS_E_SUCCESS) | ||
| 1438 | return gnutls_make_error (ret); | ||
| 1439 | } | ||
| 1425 | 1440 | ||
| 1426 | GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_CRED_SET; | 1441 | GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_CRED_SET; |
| 1427 | ret = emacs_gnutls_handshake (XPROCESS (proc)); | 1442 | ret = emacs_gnutls_handshake (XPROCESS (proc)); |