Your message dated Sun, 24 Mar 2013 21:17:21 +0000 with message-id <20130324211721.GA21426@ernie.home.powdarrmonkey.net> and subject line Re: Bug#701663: pre-approve unblock: tryton-server/2.2.7-1 has caused the Debian Bug report #701663, regarding pre-approve unblock: tryton-server/2.2.7-1 to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 701663: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=701663 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: submit@bugs.debian.org
- Subject: pre-approve unblock: tryton-server/2.2.7-1
- From: Mathias Behrle <mathiasb@m9s.biz>
- Date: Mon, 25 Feb 2013 21:55:17 +0100
- Message-id: <20130225215517.432d913f@obelix.mbehrle.de>
Package: release.debian.org Severity: normal User: release.debian.org@packages.debian.org Usertags: unblock Dear release managers, please approve the upload of tryton-server_2.2.7-1. There were several bugfix releases in Tryton, that are out since a considerable time and thus are well tested. I am filing this unblock request for the server first to know if it finds the approval of the release team. Once it is accepted I will file the unblock requests for the client and 16 modules. Those fixes are generally quite smaller than this one. Upstream VCS of tryton-server is at [1]. The new version contains the following fixes: * Fix documentation about child * http://hg.tryton.org/2.2/trytond/rev/c9909a4825d1 * Fix domain concatenation between list and tuple * http://hg.tryton.org/2.2/trytond/rev/518c047f560e * Set domain_get mode correctly * http://hg.tryton.org/2.2/trytond/rev/2027979de6eb * Fix read related values of reference fields * http://hg.tryton.org/2.2/trytond/rev/bc728fcb3c49 * fix use of password not in ASCII * http://hg.tryton.org/2.2/trytond/rev/0b7f360ee251 * Add missing context when filling cache from search * http://hg.tryton.org/2.2/trytond/rev/6841eaa2a624 * local_cache and model2ids must depend on datetime * http://hg.tryton.org/2.2/trytond/rev/89d4d6c8c19a Additionally * Updating to Standards-Version: 3.9.4, no changes needed. * Removing obsolete Dm-Upload-Allowed to get the package lintian clean [2]. [1] http://hg.tryton.org/2.2/trytond [2] http://lintian.debian.org/maintainer/maintainers@debian.tryton.org.html#tryton-server debdiff attached unblock: tryton-server/2.2.7-1diff -Nru tryton-server-2.2.4/CHANGELOG tryton-server-2.2.7/CHANGELOG --- tryton-server-2.2.4/CHANGELOG 2012-09-10 18:06:36.000000000 +0200 +++ tryton-server-2.2.7/CHANGELOG 2013-02-12 18:12:09.000000000 +0100 @@ -1,3 +1,12 @@ +Version 2.2.7 - 2013-02-12 +* Bug fixes (see mercurial logs for details) + +Version 2.2.6 - 2012-12-23 +* Bug fixes (see mercurial logs for details) + +Version 2.2.5 - 2012-11-05 +* Bug fixes (see mercurial logs for details) + Version 2.2.4 - 2012-09-10 * Bug fixes (see mercurial logs for details) diff -Nru tryton-server-2.2.4/COPYRIGHT tryton-server-2.2.7/COPYRIGHT --- tryton-server-2.2.4/COPYRIGHT 2012-09-10 18:06:35.000000000 +0200 +++ tryton-server-2.2.7/COPYRIGHT 2013-02-12 18:12:08.000000000 +0100 @@ -1,7 +1,7 @@ Copyright (C) 2004-2008 Tiny SPRL. -Copyright (C) 2007-2012 Cédric Krier. +Copyright (C) 2007-2013 Cédric Krier. Copyright (C) 2007-2011 Bertrand Chenal. -Copyright (C) 2008-2012 B2CK SPRL. +Copyright (C) 2008-2013 B2CK SPRL. Copyright (C) 2011 Openlabs Technologies & Consulting (P) Ltd. This program is free software: you can redistribute it and/or modify diff -Nru tryton-server-2.2.4/debian/changelog tryton-server-2.2.7/debian/changelog --- tryton-server-2.2.4/debian/changelog 2012-10-03 21:52:54.000000000 +0200 +++ tryton-server-2.2.7/debian/changelog 2013-02-24 22:14:47.000000000 +0100 @@ -1,3 +1,15 @@ +tryton-server (2.2.7-1) unstable; urgency=low + + * Merging upstream version 2.2.5. + * Merging upstream version 2.2.6. + * Merging upstream version 2.2.7. + * Refreshing 02-support-pywebdav-0.9.8 patch. + * Updating to Standards-Version: 3.9.4, no changes needed. + * Removing obsolete Dm-Upload-Allowed + * Updating copyright. + + -- Mathias Behrle <mathiasb@m9s.biz> Sun, 24 Feb 2013 22:14:23 +0100 + tryton-server (2.2.4-1) unstable; urgency=low * Merging upstream version 2.2.4. diff -Nru tryton-server-2.2.4/debian/control tryton-server-2.2.7/debian/control --- tryton-server-2.2.4/debian/control 2012-09-11 19:41:40.000000000 +0200 +++ tryton-server-2.2.7/debian/control 2013-02-24 22:01:37.000000000 +0100 @@ -3,9 +3,8 @@ Priority: optional Maintainer: Debian Tryton Maintainers <maintainers@debian.tryton.org> Uploaders: Daniel Baumann <daniel@debian.org>, Mathias Behrle <mathiasb@m9s.biz> -Dm-Upload-Allowed: yes Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools -Standards-Version: 3.9.3 +Standards-Version: 3.9.4 Homepage: http://www.tryton.org/ Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-server.git Vcs-Git: git://debian.tryton.org/git/packages/tryton-server.git diff -Nru tryton-server-2.2.4/debian/copyright tryton-server-2.2.7/debian/copyright --- tryton-server-2.2.4/debian/copyright 2012-09-11 19:41:40.000000000 +0200 +++ tryton-server-2.2.7/debian/copyright 2013-02-24 22:07:39.000000000 +0100 @@ -2,10 +2,10 @@ Files: * Copyright: 2004-2008 Tiny SPRL - 2007-2012 Cedric Krier + 2007-2013 Cédric Krier 2007-2011 Bertrand Chenal - 2008-2012 B2CK SPRL - 2011 Openlabs Technologies & Consulting (P) Ltd. + 2008-2013 B2CK SPRL + 2011 Openlabs Technologies & Consulting (P) Ltd License: GPL-3+ Files: doc/* diff -Nru tryton-server-2.2.4/debian/patches/02-support-pywebdav-0.9.8 tryton-server-2.2.7/debian/patches/02-support-pywebdav-0.9.8 --- tryton-server-2.2.4/debian/patches/02-support-pywebdav-0.9.8 2012-09-12 16:44:38.000000000 +0200 +++ tryton-server-2.2.7/debian/patches/02-support-pywebdav-0.9.8 2013-02-24 21:50:18.000000000 +0100 @@ -1,7 +1,7 @@ Author: Mathias Behrle <mathiasb@m9s.biz> Description: Support new structure of pywebdav > 0.9.4.1. ---- tryton-server.orig/trytond/protocols/webdav.py 2012-09-11 19:41:40.000000000 +0200 -+++ tryton-server/trytond/protocols/webdav.py 2012-09-12 16:44:26.630387413 +0200 +--- tryton-server.orig/trytond/protocols/webdav.py 2012-08-07 12:31:14.000000000 +0200 ++++ tryton-server/trytond/protocols/webdav.py 2013-02-24 21:49:35.992089190 +0100 @@ -12,11 +12,15 @@ import logging from threading import local @@ -201,7 +201,7 @@ class SecureWebDAVAuthRequestHandler(WebDAVAuthRequestHandler): --- tryton-server.orig/trytond/webdav/webdav.py 2011-10-24 15:57:46.000000000 +0200 -+++ tryton-server/trytond/webdav/webdav.py 2012-09-12 16:07:24.620219292 +0200 ++++ tryton-server/trytond/webdav/webdav.py 2013-02-24 21:49:35.992089190 +0100 @@ -2,11 +2,33 @@ #this repository contains the full copyright notices and license terms. import os @@ -501,9 +501,9 @@ + raise Exception('Bad arguments') + Attachment() ---- tryton-server.orig/CHANGELOG 2012-09-11 19:41:40.000000000 +0200 -+++ tryton-server/CHANGELOG 2012-09-12 16:07:24.620219292 +0200 -@@ -7,6 +7,7 @@ +--- tryton-server.orig/CHANGELOG 2013-02-24 21:47:16.316806170 +0100 ++++ tryton-server/CHANGELOG 2013-02-24 21:49:35.992089190 +0100 +@@ -16,6 +16,7 @@ Version 2.2.2 - 2012-03-28 * Bug fixes (see mercurial logs for details) * Don't allow rpc call on ModelStorage without ModelView (CVE-2012-0215) @@ -512,7 +512,7 @@ Version 2.2.1 - 2011-12-26 * Bug fixes (see mercurial logs for details) --- tryton-server.orig/doc/topics/install.rst 2011-10-24 15:57:45.000000000 +0200 -+++ tryton-server/doc/topics/install.rst 2012-09-12 16:07:24.620219292 +0200 ++++ tryton-server/doc/topics/install.rst 2013-02-24 21:49:35.992089190 +0100 @@ -15,7 +15,7 @@ * polib (https://bitbucket.org/izi/polib/wiki/Home) * Optional: psycopg 2 or later (http://www.initd.org/) @@ -522,8 +522,8 @@ * Optional: pydot (http://code.google.com/p/pydot/) * Optional: pytz (http://pytz.sourceforge.net/) * Optional: unoconv http://dag.wieers.com/home-made/unoconv/) ---- tryton-server.orig/etc/trytond.conf 2012-09-12 16:04:53.000000000 +0200 -+++ tryton-server/etc/trytond.conf 2012-09-12 16:07:24.620219292 +0200 +--- tryton-server.orig/etc/trytond.conf 2013-02-24 21:49:35.956090408 +0100 ++++ tryton-server/etc/trytond.conf 2013-02-24 21:49:35.992089190 +0100 @@ -2,13 +2,13 @@ #this repository contains the full copyright notices and license terms. [options] @@ -552,7 +552,7 @@ # allowed values are postgresql, sqlite, mysql #db_type = postgresql --- tryton-server.orig/setup.py 2011-10-24 15:57:45.000000000 +0200 -+++ tryton-server/setup.py 2012-09-12 16:07:24.620219292 +0200 ++++ tryton-server/setup.py 2013-02-24 21:49:35.992089190 +0100 @@ -65,7 +65,7 @@ extras_require={ 'PostgreSQL': ['psycopg2 >= 2.0'], @@ -563,7 +563,7 @@ 'SSL': ['pyOpenSSL'], 'graphviz': ['pydot'], --- tryton-server.orig/trytond/config.py 2012-03-17 11:25:18.000000000 +0100 -+++ tryton-server/trytond/config.py 2012-09-12 16:07:24.620219292 +0200 ++++ tryton-server/trytond/config.py 2013-02-24 21:49:35.992089190 +0100 @@ -24,14 +24,15 @@ class ConfigManager(object): def __init__(self, fname=None): @@ -582,7 +582,7 @@ 'db_host': False, 'db_port': False, --- tryton-server.orig/trytond/tests/test_mixins.py 2011-12-06 11:28:56.000000000 +0100 -+++ tryton-server/trytond/tests/test_mixins.py 2012-09-12 16:07:24.624219161 +0200 ++++ tryton-server/trytond/tests/test_mixins.py 2013-02-24 21:49:35.992089190 +0100 @@ -30,7 +30,7 @@ urllib.quote(DB_NAME))) @@ -609,7 +609,7 @@ 'tryton://%s/%s/wizard/test.test_wizard' % (server_name, urllib.quote(DB_NAME))) --- tryton-server.orig/trytond/url.py 2011-10-24 15:57:46.000000000 +0200 -+++ tryton-server/trytond/url.py 2012-09-12 16:07:24.624219161 +0200 ++++ tryton-server/trytond/url.py 2013-02-24 21:49:35.992089190 +0100 @@ -16,7 +16,8 @@ from trytond.wizard import Wizard from trytond.report import Report @@ -621,7 +621,7 @@ hostname.split('.')) --- tryton-server.orig/trytond/webdav/webdav.xml 2011-10-24 15:57:46.000000000 +0200 -+++ tryton-server/trytond/webdav/webdav.xml 2012-09-12 16:07:24.624219161 +0200 ++++ tryton-server/trytond/webdav/webdav.xml 2013-02-24 21:49:35.992089190 +0100 @@ -105,5 +105,122 @@ <field name="menu" ref="menu_collection_list"/> <field name="group" ref="res.group_admin"/> diff -Nru tryton-server-2.2.4/doc/topics/views/index.rst tryton-server-2.2.7/doc/topics/views/index.rst --- tryton-server-2.2.4/doc/topics/views/index.rst 2011-12-22 12:45:22.000000000 +0100 +++ tryton-server-2.2.7/doc/topics/views/index.rst 2012-10-06 21:57:03.000000000 +0200 @@ -358,10 +358,10 @@ * ``colspan``: see in common-attributes-colspan_. The default for panes is 4 columns. -child1, child2 -^^^^^^^^^^^^^^ +child +^^^^^ -Contains the two childs of a hpaned or vpaned. +Contains the childs of a hpaned or vpaned. .. _example_form_view: diff -Nru tryton-server-2.2.4/PKG-INFO tryton-server-2.2.7/PKG-INFO --- tryton-server-2.2.4/PKG-INFO 2012-09-10 18:06:44.000000000 +0200 +++ tryton-server-2.2.7/PKG-INFO 2013-02-12 18:12:14.000000000 +0100 @@ -1,6 +1,6 @@ -Metadata-Version: 1.0 +Metadata-Version: 1.1 Name: trytond -Version: 2.2.4 +Version: 2.2.7 Summary: Tryton server Home-page: http://www.tryton.org/ Author: B2CK diff -Nru tryton-server-2.2.4/trytond/ir/lang.py tryton-server-2.2.7/trytond/ir/lang.py --- tryton-server-2.2.4/trytond/ir/lang.py 2011-10-24 15:57:45.000000000 +0200 +++ tryton-server-2.2.7/trytond/ir/lang.py 2012-10-06 22:13:02.000000000 +0200 @@ -59,7 +59,7 @@ if ids: ids += self.search([('name',) + clause[1:]], order=[]) return [('id', 'in', ids)] - return [('name',) + clause[1:]] + return [('name',) + tuple(clause[1:])] def read(self, ids, fields_names=None): pool = Pool() diff -Nru tryton-server-2.2.4/trytond/ir/rule.py tryton-server-2.2.7/trytond/ir/rule.py --- tryton-server-2.2.4/trytond/ir/rule.py 2011-10-24 15:57:45.000000000 +0200 +++ tryton-server-2.2.7/trytond/ir/rule.py 2012-10-06 22:20:00.000000000 +0200 @@ -156,7 +156,7 @@ if not Transaction().context.get('user'): return '', [] with Transaction().set_user(Transaction().context['user']): - return self.domain_get(model_name) + return self.domain_get(model_name, mode=mode) pool = Pool() rule_group_obj = pool.get('ir.rule.group') diff -Nru tryton-server-2.2.4/trytond/model/browse.py tryton-server-2.2.7/trytond/model/browse.py --- tryton-server-2.2.4/trytond/model/browse.py 2012-07-10 16:03:10.000000000 +0200 +++ tryton-server-2.2.7/trytond/model/browse.py 2013-02-10 18:58:54.000000000 +0100 @@ -190,9 +190,11 @@ _datetime = data[j.datetime_field] with Transaction().set_context( _datetime=_datetime): - ids = model2ids.setdefault(model, []) + ids = model2ids.setdefault((model, _datetime), + []) ids.append(data[i]) - local_cache = model2cache.setdefault(model, + local_cache = model2cache.setdefault( + (model, _datetime), LRUDict(RECORD_CACHE_SIZE)) data[i] = BrowseRecord(data[i], model, ids, local_cache) @@ -204,9 +206,10 @@ _datetime = data[j.datetime_field] with Transaction().set_context( _datetime=_datetime): - ids = model2ids.setdefault(model, []) + ids = model2ids.setdefault((model, _datetime), []) ids.extend(data[i]) - local_cache = model2cache.setdefault(model, + local_cache = model2cache.setdefault( + (model, _datetime), LRUDict(RECORD_CACHE_SIZE)) data[i] = BrowseRecordList( BrowseRecord(x, model, ids, local_cache) diff -Nru tryton-server-2.2.4/trytond/model/modelsql.py tryton-server-2.2.7/trytond/model/modelsql.py --- tryton-server-2.2.4/trytond/model/modelsql.py 2012-08-30 11:39:21.000000000 +0200 +++ tryton-server-2.2.7/trytond/model/modelsql.py 2012-12-05 15:38:03.000000000 +0100 @@ -691,7 +691,7 @@ obj = pool.get(model_name) record2 = obj.read(record_id, fields_related[field]) del record2['id'] - fields_related2values[field][record_id] = record2 + fields_related2values[field][record[field]] = record2 if to_del or fields_related.keys() or datetime_fields: for record in res: @@ -717,7 +717,7 @@ continue record[field + '.' + related] = \ fields_related2values[field][ - record_id][related] + record[field]][related] for field in to_del: del record[field] @@ -1218,7 +1218,7 @@ cursor.execute(query_str, tables_args + qu2) datas = cursor.dictfetchmany(cursor.IN_MAX) - cache = cursor.get_cache() + cache = cursor.get_cache(Transaction().context) cache.setdefault(self._name, LRUDict(RECORD_CACHE_SIZE)) delete_records = Transaction().delete_records.setdefault(self._name, set()) diff -Nru tryton-server-2.2.4/trytond/protocols/dispatcher.py tryton-server-2.2.7/trytond/protocols/dispatcher.py --- tryton-server-2.2.4/trytond/protocols/dispatcher.py 2011-10-24 15:57:45.000000000 +0200 +++ tryton-server-2.2.7/trytond/protocols/dispatcher.py 2012-11-27 22:14:25.000000000 +0100 @@ -222,9 +222,11 @@ 'WHERE code = %s', 1) + ')' \ 'WHERE login <> \'root\'', (lang,)) if hashlib: - admin_password = hashlib.sha1(admin_password).hexdigest() + admin_password = hashlib.sha1(admin_password.encode('utf-8'))\ + .hexdigest() else: - admin_password = sha.new(admin_password).hexdigest() + admin_password = sha.new(admin_password.encode('utf-8'))\ + .hexdigest() cursor.execute('UPDATE res_user ' \ 'SET password = %s ' \ 'WHERE login = \'admin\'', (admin_password,)) diff -Nru tryton-server-2.2.4/trytond/res/user.py tryton-server-2.2.7/trytond/res/user.py --- tryton-server-2.2.4/trytond/res/user.py 2012-02-06 11:53:45.000000000 +0100 +++ tryton-server-2.2.7/trytond/res/user.py 2012-10-06 22:13:02.000000000 +0200 @@ -223,7 +223,7 @@ ], order=[]) if len(ids) == 1: return [('id', '=', ids[0])] - return [(self._rec_name,) + clause[1:]] + return [(self._rec_name,) + tuple(clause[1:])] def copy(self, ids, default=None): if default is None: diff -Nru tryton-server-2.2.4/trytond/security.py tryton-server-2.2.7/trytond/security.py --- tryton-server-2.2.4/trytond/security.py 2011-10-24 15:57:45.000000000 +0200 +++ tryton-server-2.2.7/trytond/security.py 2012-11-27 22:14:45.000000000 +0100 @@ -21,7 +21,6 @@ if not dbname in database_list: pool.init() user_obj = pool.get('res.user') - password = password.decode('utf-8') user_id = user_obj.get_login(loginname, password) transaction.cursor.commit() if user_id: diff -Nru tryton-server-2.2.4/trytond/version.py tryton-server-2.2.7/trytond/version.py --- tryton-server-2.2.4/trytond/version.py 2012-05-07 14:54:04.000000000 +0200 +++ tryton-server-2.2.7/trytond/version.py 2012-12-23 16:56:07.000000000 +0100 @@ -1,7 +1,7 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.2.4" +VERSION = "2.2.7" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" diff -Nru tryton-server-2.2.4/trytond.egg-info/PKG-INFO tryton-server-2.2.7/trytond.egg-info/PKG-INFO --- tryton-server-2.2.4/trytond.egg-info/PKG-INFO 2012-09-10 18:06:42.000000000 +0200 +++ tryton-server-2.2.7/trytond.egg-info/PKG-INFO 2013-02-12 18:12:13.000000000 +0100 @@ -1,6 +1,6 @@ -Metadata-Version: 1.0 +Metadata-Version: 1.1 Name: trytond -Version: 2.2.4 +Version: 2.2.7 Summary: Tryton server Home-page: http://www.tryton.org/ Author: B2CKAttachment: signature.asc
Description: PGP signature
--- End Message ---
--- Begin Message ---
- To: Mathias Behrle <mathiasb@m9s.biz>, 701663-done@bugs.debian.org
- Subject: Re: Bug#701663: pre-approve unblock: tryton-server/2.2.7-1
- From: Jonathan Wiltshire <jmw@debian.org>
- Date: Sun, 24 Mar 2013 21:17:21 +0000
- Message-id: <20130324211721.GA21426@ernie.home.powdarrmonkey.net>
- In-reply-to: <[🔎] 20130316142309.41f7a16f@obelix.mbehrle.de>
- References: <20130225215517.432d913f@obelix.mbehrle.de> <[🔎] 20130315192430.GA4854@ernie.home.powdarrmonkey.net> <[🔎] 20130316142309.41f7a16f@obelix.mbehrle.de>
On Sat, Mar 16, 2013 at 02:23:09PM +0100, Mathias Behrle wrote: > * Betr.: " Re: Bug#701663: pre-approve unblock: tryton-server/2.2.7-1" (Fri, 15 > Mar 2013 19:24:30 +0000): > > > Control: tag -1 + moreinfo > > > > On Mon, Feb 25, 2013 at 09:55:17PM +0100, Mathias Behrle wrote: > > > Package: release.debian.org > > > Severity: normal > > > User: release.debian.org@packages.debian.org > > > Usertags: unblock > > > > > > Dear release managers, > > > > > > please approve the upload of tryton-server_2.2.7-1. > > > > > > There were several bugfix releases in Tryton, that are out since a > > > considerable time and thus are well tested. I am filing this unblock > > > request for the server first to know if it finds the approval of the > > > release team. > > > > > > Once it is accepted I will file the unblock requests for the client and 16 > > > modules. Those fixes are generally quite smaller than this one. > > > > Your changelog doesn't indicate how serious the proposed fixes are and I > > don't have time to dig through upstream commits trying to work it out. If > > there were Debian bugs for them, what severity would each be? > > This is my estimation with respect to debian bug severity: > > * Fix documentation about child > * http://hg.tryton.org/2.2/trytond/rev/c9909a4825d1 > > -> minor > > * Fix domain concatenation between list and tuple > * http://hg.tryton.org/2.2/trytond/rev/518c047f560e > > -> important > > * Set domain_get mode correctly > * http://hg.tryton.org/2.2/trytond/rev/2027979de6eb > > -> important > > * Fix read related values of reference fields > * http://hg.tryton.org/2.2/trytond/rev/bc728fcb3c49 > > -> important > > * fix use of password not in ASCII > * http://hg.tryton.org/2.2/trytond/rev/0b7f360ee251 > > -> important > > * Add missing context when filling cache from search > * http://hg.tryton.org/2.2/trytond/rev/6841eaa2a624 > > -> important > > * local_cache and model2ids must depend on datetime > * http://hg.tryton.org/2.2/trytond/rev/89d4d6c8c19a > > -> important Sorry, but nack. Minor and important just aren't candidates any more. Thanks, -- Jonathan Wiltshire jmw@debian.org Debian Developer http://people.debian.org/~jmw 4096R: 0xD3524C51 / 0A55 B7C5 1223 3942 86EC 74C3 5394 479D D352 4C51 <directhex> i have six years of solaris sysadmin experience, from 8->10. i am well qualified to say it is made from bonghits layered on top of bonghitsAttachment: signature.asc
Description: Digital signature
--- End Message ---