diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c
index 1dd5a97..96de3ac 100644
--- a/Modules/syslogmodule.c
+++ b/Modules/syslogmodule.c
@@ -26,6 +26,12 @@
 
 Revision history:
 
+1998/04/28 (Sean Reifschneider)
+  - When facility not specified to syslog() method, use default from openlog()
+    (This is how it was claimed to work in the documentation)
+  - Potential resource leak of o_ident, now cleaned up in closelog()
+  - Minor comment accuracy fix.
+
 95/06/29 (Steve Clift)
   - Changed arg parsing to use PyArg_ParseTuple.
   - Added PyErr_Clear() call(s) where needed.
@@ -42,6 +48,10 @@
 
 #include <syslog.h>
 
+/*  only one instance, only one syslog, so globals should be ok  */
+static PyObject *S_ident_o = NULL;			/*  identifier, held by openlog()  */
+
+
 static PyObject * 
 syslog_openlog(self, args)
 	PyObject * self;
@@ -50,20 +60,19 @@
 	long logopt = 0;
 	long facility = LOG_USER;
 
-	static PyObject *ident_o = NULL;
 
-	Py_XDECREF(ident_o);
+	Py_XDECREF(S_ident_o);
 	if (!PyArg_ParseTuple(args,
 			      "S|ll;ident string [, logoption [, facility]]",
-			      &ident_o, &logopt, &facility))
+			      &S_ident_o, &logopt, &facility))
 		return NULL;
 
 	/* This is needed because openlog() does NOT make a copy
 	 * and syslog() later uses it.. cannot trash it.
 	 */
-	Py_INCREF(ident_o);
+	Py_INCREF(S_ident_o);
 
-	openlog(PyString_AsString(ident_o), logopt, facility);
+	openlog(PyString_AsString(S_ident_o), logopt, facility);
 
 	Py_INCREF(Py_None);
 	return Py_None;
@@ -76,7 +85,7 @@
 	PyObject * args;
 {
 	char *message;
-	int   priority = LOG_INFO | LOG_USER;
+	int   priority = LOG_INFO;
 
 	if (!PyArg_ParseTuple(args, "is;[priority,] message string",
 			      &priority, &message)) {
@@ -85,6 +94,7 @@
 				      &message))
 			return NULL;
 	}
+
 	syslog(priority, "%s", message);
 	Py_INCREF(Py_None);
 	return Py_None;
@@ -98,6 +108,8 @@
 	if (!PyArg_ParseTuple(args, ""))
 		return NULL;
 	closelog();
+	Py_XDECREF(S_ident_o);
+	S_ident_o = NULL;
 	Py_INCREF(Py_None);
 	return Py_None;
 }
@@ -153,7 +165,7 @@
 	{NULL,		NULL,			0}
 };
 
-/* Initialization function for the module */
+/* helper function for initialization function */
 
 static void
 ins(d, s, x)
@@ -168,6 +180,7 @@
 	}
 }
 
+/* Initialization function for the module */
 
 void
 initsyslog()
@@ -205,25 +218,7 @@
 	ins(d, "LOG_MAIL",	LOG_MAIL);
 	ins(d, "LOG_DAEMON",	LOG_DAEMON);
 	ins(d, "LOG_AUTH",	LOG_AUTH);
-#ifdef LOG_SYSLOG
-	ins(d, "LOG_SYSLOG",    LOG_SYSLOG);
-#endif
 	ins(d, "LOG_LPR",	LOG_LPR);
-#ifdef LOG_NEWS
-	ins(d, "LOG_NEWS",	LOG_NEWS);
-#else
-	ins(d, "LOG_NEWS",	LOG_MAIL);
-#endif
-#ifdef LOG_UUCP
-	ins(d, "LOG_UUCP",	LOG_UUCP);
-#else
-	ins(d, "LOG_UUCP",	LOG_MAIL);
-#endif
-#ifdef LOG_CRON
-	ins(d, "LOG_CRON",	LOG_CRON);
-#else
-	ins(d, "LOG_CRON",	LOG_DAEMON);
-#endif
 	ins(d, "LOG_LOCAL0",	LOG_LOCAL0);
 	ins(d, "LOG_LOCAL1",	LOG_LOCAL1);
 	ins(d, "LOG_LOCAL2",	LOG_LOCAL2);
@@ -233,6 +228,24 @@
 	ins(d, "LOG_LOCAL6",	LOG_LOCAL6);
 	ins(d, "LOG_LOCAL7",	LOG_LOCAL7);
 
+#ifndef LOG_SYSLOG
+#define LOG_SYSLOG		LOG_DAEMON
+#endif
+#ifndef LOG_NEWS
+#define LOG_NEWS		LOG_MAIL
+#endif
+#ifndef LOG_UUCP
+#define LOG_UUCP		LOG_MAIL
+#endif
+#ifndef LOG_CRON
+#define LOG_CRON		LOG_DAEMON
+#endif
+
+	ins(d, "LOG_SYSLOG",	LOG_SYSLOG);
+	ins(d, "LOG_CRON",	LOG_CRON);
+	ins(d, "LOG_UUCP",	LOG_UUCP);
+	ins(d, "LOG_NEWS",	LOG_NEWS);
+
 	/* Check for errors */
 	if (PyErr_Occurred())
 		Py_FatalError("can't initialize module syslog");
