Auto-detect hstrerror. Raise socket.herror in PyH_Error. Register the three
exception classes in the module dictionary.
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index e6a9ec8..41dd2c4 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -431,7 +431,7 @@
 	v = Py_BuildValue("(is)", h_error, "host not found");
 #endif
 	if (v != NULL) {
-		PyErr_SetObject(PyGAI_Error, v);
+		PyErr_SetObject(PyH_Error, v);
 		Py_DECREF(v);
 	}
 
@@ -2915,13 +2915,16 @@
 	PySocket_Error = PyErr_NewException("socket.error", NULL, NULL);
 	if (PySocket_Error == NULL)
 		return;
+	PyDict_SetItemString(d, "error", PySocket_Error);
 	PyH_Error = PyErr_NewException("socket.herror", PySocket_Error, NULL);
 	if (PyH_Error == NULL)
 		return;
+	PyDict_SetItemString(d, "herror", PyH_Error);
 	PyGAI_Error = PyErr_NewException("socket.gaierror", PySocket_Error,
 	    NULL);
 	if (PyGAI_Error == NULL)
 		return;
+	PyDict_SetItemString(d, "gaierror", PyGAI_Error);
 #ifdef USE_SSL
 	SSL_load_error_strings();
 	SSLeay_add_ssl_algorithms();
@@ -2934,7 +2937,6 @@
 				 (PyObject *)&SSL_Type) != 0)
 		return;
 #endif /* USE_SSL */
-	PyDict_SetItemString(d, "error", PySocket_Error);
 	PySocketSock_Type.ob_type = &PyType_Type;
 	PySocketSock_Type.tp_doc = sockettype_doc;
 	Py_INCREF(&PySocketSock_Type);
diff --git a/configure b/configure
index e1b8bda..c044c69 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# From configure.in Revision: 1.236 
+# From configure.in Revision: 1.237 
 
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.13 
@@ -4518,7 +4518,7 @@
 for ac_func in alarm chown clock confstr ctermid ctermid_r execv \
  flock fork fsync fdatasync fpathconf ftime ftruncate \
  getgroups getlogin getpeername getpid getpwent getwd \
- inet_pton kill link lstat mkfifo mktime mremap \
+ hstrerror inet_pton kill link lstat mkfifo mktime mremap \
  nice pathconf pause plock poll pthread_init \
  putenv readlink \
  select setegid seteuid setgid \
diff --git a/configure.in b/configure.in
index 2d163d3..5ec8b44 100644
--- a/configure.in
+++ b/configure.in
@@ -1178,7 +1178,7 @@
 AC_CHECK_FUNCS(alarm chown clock confstr ctermid ctermid_r execv \
  flock fork fsync fdatasync fpathconf ftime ftruncate \
  getgroups getlogin getpeername getpid getpwent getwd \
- inet_pton kill link lstat mkfifo mktime mremap \
+ hstrerror inet_pton kill link lstat mkfifo mktime mremap \
  nice pathconf pause plock poll pthread_init \
  putenv readlink \
  select setegid seteuid setgid \
diff --git a/pyconfig.h.in b/pyconfig.h.in
index e1013fe..4f46a09 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -410,6 +410,9 @@
 /* Define if you have the getwd function.  */
 #undef HAVE_GETWD
 
+/* Define if you have the hstrerror function.  */
+#undef HAVE_HSTRERROR
+
 /* Define if you have the hypot function.  */
 #undef HAVE_HYPOT