[packages/python] - add fix for backwards-incompatible change in SysLogHandler (fixes http://bugs.python.org/issue17

draenog draenog at pld-linux.org
Fri May 17 20:49:14 CEST 2013


commit a35a64a86b91d5ca2e09f507d7ebc4a68d3081fb
Author: Kacper Kornet <draenog at pld-linux.org>
Date:   Fri May 17 19:48:33 2013 +0100

    - add fix for backwards-incompatible change in SysLogHandler (fixes
      http://bugs.python.org/issue17795)

 python-sysloghandler.patch | 99 ++++++++++++++++++++++++++++++++++++++++++++++
 python.spec                |  4 +-
 2 files changed, 102 insertions(+), 1 deletion(-)
---
diff --git a/python.spec b/python.spec
index 586ee14..47646d7 100644
--- a/python.spec
+++ b/python.spec
@@ -43,7 +43,7 @@ Summary(tr.UTF-8):	X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
 Summary(uk.UTF-8):	Мова програмування дуже високого рівня з X-інтерфейсом
 Name:		python
 Version:	%{py_ver}.4
-Release:	2
+Release:	3
 Epoch:		1
 License:	PSF
 Group:		Development/Languages/Python
@@ -58,6 +58,7 @@ Patch3:		%{name}-lib64.patch
 Patch4:		%{name}-noarch_to_datadir.patch
 Patch5:		%{name}-verbose.patch
 Patch6:		%{name}-distro.patch
+Patch7:		%{name}-sysloghandler.patch
 URL:		http://www.python.org/
 BuildRequires:	autoconf >= 2.65
 BuildRequires:	automake
@@ -557,6 +558,7 @@ Przykłady te są dla Pythona 2.3.4, nie %{version}.
 %patch4 -p1
 %patch5 -p1
 %patch6 -p1
+%patch7 -p1
 
 tar xjf %{SOURCE1}
 
diff --git a/python-sysloghandler.patch b/python-sysloghandler.patch
new file mode 100644
index 0000000..9377b05
--- /dev/null
+++ b/python-sysloghandler.patch
@@ -0,0 +1,99 @@
+
+# HG changeset patch
+# User Vinay Sajip <vinay_sajip at yahoo.co.uk>
+# Date 1366621131 -3600
+# Node ID 32a5de0e91d5612dca65d5d34f5e142e493d6e62
+# Parent  a1421d28393b4ee88965a747b92296bde81bae05
+Issue #17795: Reverted backwards-incompatible change in SysLogHandler with Unix domain sockets.
+
+diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
+--- a/Lib/logging/handlers.py
++++ b/Lib/logging/handlers.py
+@@ -1,4 +1,4 @@
+-# Copyright 2001-2012 by Vinay Sajip. All Rights Reserved.
++# Copyright 2001-2013 by Vinay Sajip. All Rights Reserved.
+ #
+ # Permission to use, copy, modify, and distribute this software and its
+ # documentation for any purpose and without fee is hereby granted,
+@@ -18,7 +18,7 @@
+ Additional handlers for the logging package for Python. The core package is
+ based on PEP 282 and comments thereto in comp.lang.python.
+ 
+-Copyright (C) 2001-2012 Vinay Sajip. All Rights Reserved.
++Copyright (C) 2001-2013 Vinay Sajip. All Rights Reserved.
+ 
+ To use, simply 'import logging.handlers' and log away!
+ """
+@@ -737,13 +737,17 @@ class SysLogHandler(logging.Handler):
+     }
+ 
+     def __init__(self, address=('localhost', SYSLOG_UDP_PORT),
+-                 facility=LOG_USER, socktype=socket.SOCK_DGRAM):
++                 facility=LOG_USER, socktype=None):
+         """
+         Initialize a handler.
+ 
+         If address is specified as a string, a UNIX socket is used. To log to a
+         local syslogd, "SysLogHandler(address="/dev/log")" can be used.
+-        If facility is not specified, LOG_USER is used.
++        If facility is not specified, LOG_USER is used. If socktype is
++        specified as socket.SOCK_DGRAM or socket.SOCK_STREAM, that specific
++        socket type will be used. For Unix sockets, you can also specify a
++        socktype of None, in which case socket.SOCK_DGRAM will be used, falling
++        back to socket.SOCK_STREAM.
+         """
+         logging.Handler.__init__(self)
+ 
+@@ -756,18 +760,37 @@ class SysLogHandler(logging.Handler):
+             self._connect_unixsocket(address)
+         else:
+             self.unixsocket = 0
++            if socktype is None:
++                socktype = socket.SOCK_DGRAM
+             self.socket = socket.socket(socket.AF_INET, socktype)
+             if socktype == socket.SOCK_STREAM:
+                 self.socket.connect(address)
++            self.socktype = socktype
+         self.formatter = None
+ 
+     def _connect_unixsocket(self, address):
+-        self.socket = socket.socket(socket.AF_UNIX, self.socktype)
++        use_socktype = self.socktype
++        if use_socktype is None:
++            use_socktype = socket.SOCK_DGRAM
++        self.socket = socket.socket(socket.AF_UNIX, use_socktype)
+         try:
+             self.socket.connect(address)
++            # it worked, so set self.socktype to the used type
++            self.socktype = use_socktype
+         except socket.error:
+             self.socket.close()
+-            raise
++            if self.socktype is not None:
++                # user didn't specify falling back, so fail
++                raise
++            use_socktype = socket.SOCK_STREAM
++            self.socket = socket.socket(socket.AF_UNIX, use_socktype)
++            try:
++                self.socket.connect(address)
++                # it worked, so set self.socktype to the used type
++                self.socktype = use_socktype
++            except socket.error:
++                self.socket.close()
++                raise
+ 
+     # curious: when talking to the unix-domain '/dev/log' socket, a
+     #   zero-terminator seems to be required.  this string is placed
+diff --git a/Misc/NEWS b/Misc/NEWS
+--- a/Misc/NEWS
++++ b/Misc/NEWS
+@@ -21,6 +21,9 @@
+ Library
+ -------
+ 
++- Issue #17795: Reverted backwards-incompatible change in SysLogHandler with
++  Unix domain sockets.
++
+ - Issue #17625: In IDLE, close the replace dialog after it is used.
+ 
+ - Issue #17531: Fix tests that thought group and user ids were always the int
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/python.git/commitdiff/a35a64a86b91d5ca2e09f507d7ebc4a68d3081fb



More information about the pld-cvs-commit mailing list