Further fork on getting things installed.

Also more cleanups.
This commit is contained in:
Jason Tibbitts 2016-11-22 19:24:55 -06:00
parent 779e0eeecc
commit 1df29a310b
9 changed files with 280 additions and 357 deletions

View File

@ -1,78 +0,0 @@
diff -up cyrus-imapd-2.4.6/lib/lock_flock.c.flock cyrus-imapd-2.4.6/lib/lock_flock.c
--- cyrus-imapd-2.4.6/lib/lock_flock.c.flock 2010-12-20 14:15:49.000000000 +0100
+++ cyrus-imapd-2.4.6/lib/lock_flock.c 2011-02-10 12:56:45.262786102 +0100
@@ -52,6 +52,10 @@
#endif
#include "cyr_lock.h"
+#include <syslog.h>
+
+/* Locking timeout parameter */
+#define MAXTIME 99
const char *lock_method_desc = "flock";
@@ -68,6 +72,18 @@ const char *lock_method_desc = "flock";
* 'failaction' is provided, it is filled in with a pointer to a fixed
* string naming the action that failed.
*
+ * Modified by jwade 4/16/2002 to work around seen file locking problem
+ * Added locking timeout parameter to allow processes that are
+ * waiting for a lock to eventually time out
+ *
+ * Calls flock() in non-blocking fashion and then retries until a
+ * maximum delay is reached or the lock succeeds.
+ *
+ * As written, uses a quadratic backoff on retries with MAXTIME being
+ * the longest interval delay. Total delay time is the sum of the squares
+ * of all integers whose square is less than MAXTIME. In the case of
+ * MAXTIME = 99 this is 0+1+4+9+16+25+36+49+64+81= 285 Seconds
+ * This time is arbitrary and can be adjusted
*/
int lock_reopen(fd, filename, sbuf, failaction)
int fd;
@@ -78,17 +94,29 @@ const char **failaction;
int r;
struct stat sbuffile, sbufspare;
int newfd;
+ int delay=0, i=0;
if (!sbuf) sbuf = &sbufspare;
- for (;;) {
- r = flock(fd, LOCK_EX);
+ for(i=0,delay=0;;) {
+ r = flock(fd, LOCK_EX|LOCK_NB);
if (r == -1) {
- if (errno == EINTR) continue;
- if (failaction) *failaction = "locking";
+ if (errno == EINTR) {
+ continue;
+ }
+ else if ((errno == EWOULDBLOCK) && (delay < MAXTIME)) {
+ syslog(LOG_DEBUG, "lock: reopen-blocked sleeping for %d on interval %d (%d, %s)" , delay, i, fd, filename);
+ sleep(delay);
+ i++;
+ delay = i*i;
+ continue;
+ }
+ if (failaction) {
+ if (delay >= MAXTIME) *failaction = "locking_timeout";
+ else *failaction = "locking";
+ }
return -1;
}
-
fstat(fd, sbuf);
r = stat(filename, &sbuffile);
if (r == -1) {
@@ -96,9 +124,7 @@ const char **failaction;
flock(fd, LOCK_UN);
return -1;
}
-
if (sbuf->st_ino == sbuffile.st_ino) return 0;
-
newfd = open(filename, O_RDWR);
if (newfd == -1) {
if (failaction) *failaction = "opening";

View File

@ -1,80 +0,0 @@
diff -up cyrus-imapd-2.4.14/lib/auth_unix.c.authid_normalize cyrus-imapd-2.4.14/lib/auth_unix.c
--- cyrus-imapd-2.4.14/lib/auth_unix.c.authid_normalize 2012-03-12 12:47:51.000000000 +0100
+++ cyrus-imapd-2.4.14/lib/auth_unix.c 2012-03-14 10:49:50.679822894 +0100
@@ -156,10 +156,12 @@ const char *identifier;
size_t len;
{
static char retbuf[81];
+ char backup[81];
struct group *grp;
char sawalpha;
char *p;
int username_tolower = 0;
+ int ic,rbc;
if(!len) len = strlen(identifier);
if(len >= sizeof(retbuf)) return NULL;
@@ -211,6 +213,22 @@ size_t len;
/* now we don't */
/* if (!sawalpha) return NULL; */
+ if( (libcyrus_config_getswitch(CYRUSOPT_NORMALIZEUID) == 1) ) {
+ strcpy(backup,retbuf);
+ /* remove leading blanks */
+ for(ic=0; isblank(backup[ic]); ic++);
+ for(rbc=0; backup[ic]; ic++) {
+ retbuf[rbc] = ( isalpha(backup[ic]) ?
+ tolower(backup[ic]) : backup[ic] );
+ rbc++;
+ }
+ retbuf[rbc] = '\0';
+ /* remove trailing blanks */
+ for(--rbc; isblank(retbuf[rbc]); rbc--) {
+ retbuf[rbc] = '\0';
+ }
+ }
+
return retbuf;
}
diff -up cyrus-imapd-2.4.14/lib/imapoptions.authid_normalize cyrus-imapd-2.4.14/lib/imapoptions
--- cyrus-imapd-2.4.14/lib/imapoptions.authid_normalize 2012-03-12 12:47:51.000000000 +0100
+++ cyrus-imapd-2.4.14/lib/imapoptions 2012-03-14 11:01:11.020256349 +0100
@@ -844,6 +844,11 @@ Blank lines and lines beginning with ``#
/* Set the length of the NNTP server's inactivity autologout timer,
in minutes. The minimum value is 3, the default. */
+{ "normalizeuid", 0, SWITCH }
+/* Lowercase uid and strip leading and trailing blanks. It is recommended
+ to set this to yes, especially if OpenLDAP is used as authentication
+ source. */
+
{ "notifysocket", "{configdirectory}/socket/notify", STRING }
/* Unix domain socket that the mail notification daemon listens on. */
diff -up cyrus-imapd-2.4.14/lib/libcyr_cfg.c.authid_normalize cyrus-imapd-2.4.14/lib/libcyr_cfg.c
--- cyrus-imapd-2.4.14/lib/libcyr_cfg.c.authid_normalize 2012-03-12 12:47:51.000000000 +0100
+++ cyrus-imapd-2.4.14/lib/libcyr_cfg.c 2012-03-14 10:49:50.681822910 +0100
@@ -158,6 +158,10 @@ struct cyrusopt_s cyrus_options[] = {
CFGVAL(long, 1),
CYRUS_OPT_SWITCH },
+ { CYRUSOPT_NORMALIZEUID,
+ CFGVAL(long, 1),
+ CYRUS_OPT_SWITCH },
+
{ CYRUSOPT_LAST, { NULL }, CYRUS_OPT_NOTOPT }
};
diff -up cyrus-imapd-2.4.14/lib/libcyr_cfg.h.authid_normalize cyrus-imapd-2.4.14/lib/libcyr_cfg.h
--- cyrus-imapd-2.4.14/lib/libcyr_cfg.h.authid_normalize 2012-03-12 12:47:51.000000000 +0100
+++ cyrus-imapd-2.4.14/lib/libcyr_cfg.h 2012-03-14 10:49:50.681822910 +0100
@@ -116,6 +116,8 @@ enum cyrus_opt {
CYRUSOPT_SQL_USESSL,
/* Checkpoint after every recovery (OFF) */
CYRUSOPT_SKIPLIST_ALWAYS_CHECKPOINT,
+ /* Lowercase uid and strip leading and trailing blanks (OFF) */
+ CYRUSOPT_NORMALIZEUID,
CYRUSOPT_LAST

Binary file not shown.

View File

@ -1,21 +0,0 @@
diff -up cyrus-imapd-2.4.6/cmulocal/berkdb.m4.db4.7 cyrus-imapd-2.4.6/cmulocal/berkdb.m4
--- cyrus-imapd-2.4.6/cmulocal/berkdb.m4.db4.7 2010-12-20 14:15:49.000000000 +0100
+++ cyrus-imapd-2.4.6/cmulocal/berkdb.m4 2011-02-10 13:43:26.397438481 +0100
@@ -214,6 +214,7 @@ AC_DEFUN([CYRUS_BERKELEY_DB_CHK_LIB],
saved_LIBS=$LIBS
for dbname in ${with_bdb} \
+ db \
db-4.8 db4.8 db48 \
db-4.7 db4.7 db47 \
db-4.6 db4.6 db46 \
@@ -226,8 +227,7 @@ AC_DEFUN([CYRUS_BERKELEY_DB_CHK_LIB],
db-3.3 db3.3 db33 \
db-3.2 db3.2 db32 \
db-3.1 db3.1 db31 \
- db-3.0 db3.0 db30 db-3 db3 \
- db
+ db-3.0 db3.0 db30 db-3 db3
do
LIBS="$saved_LIBS -l$dbname"
AC_TRY_LINK([#include <stdio.h>

View File

@ -1,29 +0,0 @@
This is a backport of
https://cyrus.foundation/cyrus-imapd/commit/?id=ff4e6c71d932b3e6bbfa67d76f095e27ff21bad0
The patch is mentioned in http://seclists.org/oss-sec/2015/q3/651 as fixing
potential overflows.
diff --git a/master/master.c b/master/master.c
index 3886441..455548b 100644
--- a/master/master.c
+++ b/master/master.c
@@ -197,13 +197,15 @@ void event_free(struct event *a)
free(a);
}
-void get_prog(char *path, unsigned size, char *const *cmd)
+void get_prog(char *path, size_t size, char *const *cmd)
{
+ if (!size) return;
if (cmd[0][0] == '/') {
- /* master lacks strlcpy, due to no libcyrus */
- snprintf(path, size, "%s", cmd[0]);
+ /* master lacks strlcpy, due to no libcyrus */
+ strncpy(path, cmd[0], size - 1);
}
else snprintf(path, size, "%s/%s", SERVICE_PATH, cmd[0]);
+ path[size-1] = '\0';
}
void get_statsock(int filedes[2])

View File

@ -1,109 +0,0 @@
diff -up cyrus-imapd-2.4.12/imap/global.c.debugopt cyrus-imapd-2.4.12/imap/global.c
--- cyrus-imapd-2.4.12/imap/global.c.debugopt 2011-10-04 21:53:03.000000000 +0200
+++ cyrus-imapd-2.4.12/imap/global.c 2011-11-22 14:24:28.272416643 +0100
@@ -157,6 +157,10 @@ int cyrus_init(const char *alt_config, c
/* don't free the openlog() string! */
}
+ /* allow debug logging */
+ if (!config_debug)
+ setlogmask(~LOG_MASK(LOG_DEBUG));
+
/* Look up default partition */
config_defpartition = config_getstring(IMAPOPT_DEFAULTPARTITION);
for (p = (char *)config_defpartition; p && *p; p++) {
diff -up cyrus-imapd-2.4.12/imap/tls.c.debugopt cyrus-imapd-2.4.12/imap/tls.c
--- cyrus-imapd-2.4.12/imap/tls.c.debugopt 2011-10-04 21:53:03.000000000 +0200
+++ cyrus-imapd-2.4.12/imap/tls.c 2011-11-22 14:24:28.272416643 +0100
@@ -255,9 +255,9 @@ static DH *load_dh_param(const char *key
if (ret == NULL) {
ret = get_dh1024();
- syslog(LOG_NOTICE, "imapd:Loading hard-coded DH parameters");
+ syslog(LOG_DEBUG, "imapd:Loading hard-coded DH parameters");
} else {
- syslog(LOG_NOTICE, "imapd:Loading DH parameters from file");
+ syslog(LOG_DEBUG, "imapd:Loading DH parameters from file");
}
if (bio != NULL) BIO_free(bio);
diff -up cyrus-imapd-2.4.12/lib/imapoptions.debugopt cyrus-imapd-2.4.12/lib/imapoptions
--- cyrus-imapd-2.4.12/lib/imapoptions.debugopt 2011-11-22 14:24:28.265416615 +0100
+++ cyrus-imapd-2.4.12/lib/imapoptions 2011-11-22 14:24:28.273416647 +0100
@@ -388,6 +388,9 @@ Blank lines and lines beginning with ``#
hashing done on configuration directories. This is recommended if
one partition has a very bushy mailbox tree. */
+{ "debug", 0, SWITCH }
+/* If enabled, allow syslog() to pass LOG_DEBUG messages. */
+
# Commented out - there's no such thing as "hostname_mechs", but we need
# this for the man page
# { "hostname_mechs", NULL, STRING }
diff -up cyrus-imapd-2.4.12/lib/libconfig.c.debugopt cyrus-imapd-2.4.12/lib/libconfig.c
--- cyrus-imapd-2.4.12/lib/libconfig.c.debugopt 2011-10-04 21:53:03.000000000 +0200
+++ cyrus-imapd-2.4.12/lib/libconfig.c 2011-11-22 14:24:28.274416650 +0100
@@ -84,6 +84,7 @@ int config_auditlog;
unsigned config_maxword;
unsigned config_maxquoted;
int config_qosmarking;
+int config_debug;
/* declared in each binary that uses libconfig */
extern const int config_need_data;
@@ -350,6 +351,9 @@ void config_read(const char *alt_config)
ival = config_getenum(IMAPOPT_QOSMARKING);
config_qosmarking = qos[ival];
+
+ /* allow debug logging */
+ config_debug = config_getswitch(IMAPOPT_DEBUG);
}
#define GROWSIZE 4096
diff -up cyrus-imapd-2.4.12/lib/libconfig.h.debugopt cyrus-imapd-2.4.12/lib/libconfig.h
--- cyrus-imapd-2.4.12/lib/libconfig.h.debugopt 2011-10-04 21:53:03.000000000 +0200
+++ cyrus-imapd-2.4.12/lib/libconfig.h 2011-11-22 14:24:28.274416650 +0100
@@ -82,6 +82,7 @@ extern int config_auditlog;
extern unsigned config_maxquoted;
extern unsigned config_maxword;
extern int config_qosmarking;
+extern int config_debug;
/* config requirement flags */
#define CONFIG_NEED_PARTITION_DATA (1<<0)
diff -up cyrus-imapd-2.4.12/master/master.c.debugopt cyrus-imapd-2.4.12/master/master.c
--- cyrus-imapd-2.4.12/master/master.c.debugopt 2011-10-04 21:53:03.000000000 +0200
+++ cyrus-imapd-2.4.12/master/master.c 2011-11-22 14:30:47.243975974 +0100
@@ -1984,7 +1984,7 @@ int main(int argc, char **argv)
if(pidlock_fd != -1) close(pidlock_fd);
}
- syslog(LOG_NOTICE, "process started");
+ syslog(LOG_DEBUG, "process started");
#if defined(HAVE_UCDSNMP) || defined(HAVE_NETSNMP)
/* initialize SNMP agent */
@@ -2041,7 +2041,7 @@ int main(int argc, char **argv)
init_janitor();
/* ok, we're going to start spawning like mad now */
- syslog(LOG_NOTICE, "ready for work");
+ syslog(LOG_DEBUG, "ready for work");
now = time(NULL);
for (;;) {
diff -up cyrus-imapd-2.4.12/master/masterconf.c.debugopt cyrus-imapd-2.4.12/master/masterconf.c
--- cyrus-imapd-2.4.12/master/masterconf.c.debugopt 2011-10-04 21:53:03.000000000 +0200
+++ cyrus-imapd-2.4.12/master/masterconf.c 2011-11-22 14:24:28.276416658 +0100
@@ -99,6 +99,10 @@ int masterconf_init(const char *ident, c
/* don't free the openlog() string! */
}
+ /* drop debug messages locally */
+ if (!config_debug)
+ setlogmask(~LOG_MASK(LOG_DEBUG));
+
return 0;
}

View File

@ -27,16 +27,10 @@ Source11: README.rpm
Source12: cyrus-imapd.service Source12: cyrus-imapd.service
Source13: cyr_systemd_helper Source13: cyr_systemd_helper
#Patch0: cyrus-imapd-2.1.3-flock.patch # There is a conflict between the sched_param structure defined in the source
#Patch1: cyrus-imapd-2.3.1-authid_normalize.patch # and one defined by a system header. Fixed upstream as
# https://github.com/cyrusimap/cyrus-imapd/commit/a288b4fea15f843e309dcdf7039a1ebcc3d19616
# fedora/rhel specific, find current db lib, rhbz#461875 Patch0: fix-sched_param.patch
#Patch2: cyrus-imapd-2.3.12p2-current-db.patch
# for c-i <= 2.4.12
#Patch3: cyrus-imapd-2.4.12-debugopt.patch
#Patch4: cyrus-imapd-2.3.18-potential-overflow.patch
BuildRequires: autoconf automake bison flex groff libtool BuildRequires: autoconf automake bison flex groff libtool
BuildRequires: pkgconfig tcp_wrappers transfig BuildRequires: pkgconfig tcp_wrappers transfig
@ -58,7 +52,7 @@ Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
%{?perl_default_filter} %{?perl_default_filter}
%description %description
The %{name} package contains the core of the Cyrus IMAP server. The cyrus-imapd package contains the core of the Cyrus IMAP server.
It is a scaleable enterprise mail system designed for use from It is a scaleable enterprise mail system designed for use from
small to large enterprise environments using standards-based small to large enterprise environments using standards-based
internet mail technologies. internet mail technologies.
@ -101,13 +95,13 @@ Requires(post): grep, coreutils, make, openssl
Requires(postun): shadow-utils Requires(postun): shadow-utils
%description utils %description utils
The %{name}-utils package contains administrative tools for the The cyrus-imapd-utils package contains administrative tools for the
Cyrus IMAP server. It can be installed on systems other than the Cyrus IMAP server. It can be installed on systems other than the
one running the server. one running the server.
%prep %prep
%autosetup -p1 %autosetup -p1
install -m 644 %{SOURCE11} doc/ install -m 644 %SOURCE11 doc/
# Modify docs master --> cyrus-master # Modify docs master --> cyrus-master
perl -pi -e "s@master\(8\)@cyrus-master(8)@" man/*5 man/*8 lib/imapoptions perl -pi -e "s@master\(8\)@cyrus-master(8)@" man/*5 man/*8 lib/imapoptions
@ -137,13 +131,13 @@ find . -type f -name "*.pl" -exec chmod 755 {} \;
autoreconf -vi autoreconf -vi
%{configure} \ %{configure} \
--with-bdb-incdir=%{_includedir}/libdb \ --with-bdb-incdir=%_includedir/libdb \
--with-cyrus-prefix=%{cyrexecdir} \ --with-cyrus-prefix=%cyrexecdir \
--with-extraident="Fedora-RPM-%{version}-%{release}" \ --with-extraident="Fedora-RPM-%version-%release" \
--with-krbimpl=mit \ --with-krbimpl=mit \
--with-ldap=/usr \ --with-ldap=/usr \
--with-perl=%{__perl} \ --with-perl=%__perl \
--with-service-path=%{cyrexecdir} \ --with-service-path=%cyrexecdir \
--with-snmp \ --with-snmp \
--with-syslogfacility=MAIL \ --with-syslogfacility=MAIL \
--enable-autocreate \ --enable-autocreate \
@ -156,47 +150,54 @@ autoreconf -vi
--enable-replication \ --enable-replication \
--enable-unit-tests \ --enable-unit-tests \
%undefine smp_mflags
%make_build %make_build
# This isn't built by default, but this package has always installed it.
make -C notifyd notifytest
#make -C man -f Makefile.dist #make -C man -f Makefile.dist
#make -C doc -f Makefile.dist #make -C doc -f Makefile.dist
#make LDFLAGS="$LDFLAGS -pie %{__global_ldflags}" #make LDFLAGS="$LDFLAGS -pie %{__global_ldflags}"
#make -C notifyd notifytest
%install %install
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
make install DESTDIR=%buildroot
# Install some additional binaryes
# Create directories
install -d \
%buildroot/etc/{rc.d/init.d,logrotate.d,pam.d,sysconfig,cron.daily} \
%buildroot/%_libdir/sasl \
%buildroot/var/spool/imap \
%buildroot/var/lib/imap/{user,quota,proc,log,msg,socket,db,sieve,sync,md5,rpm,backup,meta} \
%buildroot/var/lib/imap/ptclient \
%buildroot/%_datadir/%name/rpm \
%buildroot/etc/pki/%name
echo BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
ls -lR %buildroot
# This is needed to install the perl files correctly # This is needed to install the perl files correctly
pushd perl/imap #pushd perl/imap
perl Makefile.PL PREFIX=%{buildroot}%{_prefix} INSTALLDIRS=vendor # perl Makefile.PL PREFIX=%{buildroot}%{_prefix} INSTALLDIRS=vendor
popd #popd
pushd perl/sieve/managesieve #pushd perl/sieve/managesieve
perl Makefile.PL PREFIX=%{buildroot}%{_prefix} INSTALLDIRS=vendor # perl Makefile.PL PREFIX=%{buildroot}%{_prefix} INSTALLDIRS=vendor
popd #popd
# Do what the regular make install does # Do what the regular make install does
make install DESTDIR=%{buildroot} PREFIX=%{_prefix} mandir=%{_mandir} make install DESTDIR=%{buildroot} PREFIX=%{_prefix} mandir=%{_mandir}
make -C man install DESTDIR=%{buildroot} PREFIX=%{_prefix} mandir=%{_mandir} make -C man install DESTDIR=%{buildroot} PREFIX=%{_prefix} mandir=%{_mandir}
install -m 755 imtest/imtest %{buildroot}%{_bindir}/ install -m 755 notifyd/notifytest %buildroot%_bindir/
install -m 755 notifyd/notifytest %{buildroot}%{_bindir}/ install -m 755 perl/imap/cyradm %buildroot%_bindir/
install -m 755 perl/imap/cyradm %{buildroot}%{_bindir}/
# Install tools # Install tools
for tool in tools/* ; do for tool in tools/* ; do
test -f ${tool} && install -m 755 ${tool} %{buildroot}%{cyrexecdir}/ test -f ${tool} && install -m 755 ${tool} %{buildroot}%{cyrexecdir}/
done done
# Create directories
install -d \
%{buildroot}/etc/{rc.d/init.d,logrotate.d,pam.d,sysconfig,cron.daily} \
%{buildroot}%{_libdir}/sasl \
%{buildroot}%{_var}/spool/imap \
%{buildroot}%{_var}/lib/imap/{user,quota,proc,log,msg,socket,db,sieve,sync,md5,rpm,backup,meta} \
%{buildroot}%{_var}/lib/imap/ptclient \
%{buildroot}%{_datadir}/%{name}/rpm \
%{buildroot}/etc/pki/%{name} \
doc/contrib
# Install additional files # Install additional files
install -m 755 %{SOURCE8} %{buildroot}%{cyrexecdir}/cvt_cyrusdb_all install -m 755 %{SOURCE8} %{buildroot}%{cyrexecdir}/cvt_cyrusdb_all
install -m 644 %{SOURCE9} %{buildroot}%{_datadir}/%{name}/rpm/magic install -m 644 %{SOURCE9} %{buildroot}%{_datadir}/%{name}/rpm/magic

238
fix-sched_param.patch Normal file
View File

@ -0,0 +1,238 @@
diff --git a/imap/http_caldav.c b/imap/http_caldav.c
index 98c0f70..4520424 100644
--- a/imap/http_caldav.c
+++ b/imap/http_caldav.c
@@ -362,7 +362,7 @@ static int store_resource(struct transaction_t *txn, icalcomponent *ical,
struct caldav_db *caldavdb, int overwrite,
unsigned flags);
-static void sched_request(const char *organizer, struct sched_param *sparam,
+static void sched_request(const char *organizer, struct caldav_sched_param *sparam,
icalcomponent *oldical, icalcomponent *newical,
const char *att_update);
static void sched_reply(const char *userid,
@@ -1154,7 +1154,7 @@ static int caldav_delete_sched(struct transaction_t *txn,
const char *userid, *organizer, **hdr;
icalcomponent *ical, *comp;
icalproperty *prop;
- struct sched_param sparam;
+ struct caldav_sched_param sparam;
/* Load message containing the resource and parse iCal data */
ical = record_to_ical(mailbox, record);
@@ -2441,7 +2441,7 @@ static int caldav_post(struct transaction_t *txn)
icalproperty_method meth = 0;
icalproperty *prop = NULL;
const char *uid = NULL, *organizer = NULL;
- struct sched_param sparam;
+ struct caldav_sched_param sparam;
if (!(namespace_calendar.allow & ALLOW_CAL_SCHED) || !txn->req_tgt.flags) {
/* POST to regular calendar collection */
@@ -2726,7 +2726,7 @@ static int caldav_put(struct transaction_t *txn,
/* Scheduling object resource */
const char *userid;
struct caldav_data *cdata;
- struct sched_param sparam;
+ struct caldav_sched_param sparam;
icalcomponent *oldical = NULL;
int r;
@@ -5359,12 +5359,12 @@ static int store_resource(struct transaction_t *txn, icalcomponent *ical,
}
-int caladdress_lookup(const char *addr, struct sched_param *param)
+int caladdress_lookup(const char *addr, struct caldav_sched_param *param)
{
const char *userid = addr;
int islocal = 1, found = 1;
- memset(param, 0, sizeof(struct sched_param));
+ memset(param, 0, sizeof(struct caldav_sched_param));
if (!addr) return HTTP_NOT_FOUND;
@@ -5571,7 +5571,7 @@ struct remote_rock {
static void busytime_query_remote(const char *server __attribute__((unused)),
void *data, void *rock)
{
- struct sched_param *remote = (struct sched_param *) data;
+ struct caldav_sched_param *remote = (struct caldav_sched_param *) data;
struct remote_rock *rrock = (struct remote_rock *) rock;
icalcomponent *comp;
struct proplist *list;
@@ -5673,18 +5673,18 @@ static void busytime_query_remote(const char *server __attribute__((unused)),
}
-static void free_sched_param(void *data)
+static void free_caldav_sched_param(void *data)
{
- struct sched_param *sched_param = (struct sched_param *) data;
+ struct caldav_sched_param *caldav_sched_param = (struct caldav_sched_param *) data;
- if (sched_param) {
+ if (caldav_sched_param) {
struct proplist *prop, *next;
- for (prop = sched_param->props; prop; prop = next) {
+ for (prop = caldav_sched_param->props; prop; prop = next) {
next = prop->next;
free(prop);
}
- free(sched_param);
+ free(caldav_sched_param);
}
}
@@ -5700,14 +5700,14 @@ int sched_busytime_query(struct transaction_t *txn,
char mailboxname[MAX_MAILBOX_BUFFER];
icalproperty *prop = NULL, *next;
const char *uid = NULL, *organizer = NULL;
- struct sched_param sparam;
+ struct caldav_sched_param sparam;
struct auth_state *org_authstate = NULL;
xmlNodePtr root = NULL;
xmlNsPtr ns[NUM_NAMESPACE];
struct propfind_ctx fctx;
struct calquery_filter calfilter;
struct hash_table remote_table;
- struct sched_param *remote = NULL;
+ struct caldav_sched_param *remote = NULL;
if (!calendarprefix) {
calendarprefix = config_getstring(IMAPOPT_CALENDARPREFIX);
@@ -5811,7 +5811,7 @@ int sched_busytime_query(struct transaction_t *txn,
remote = hash_lookup(key, &remote_table);
if (!remote) {
/* New remote - add it to the hash table */
- remote = xzmalloc(sizeof(struct sched_param));
+ remote = xzmalloc(sizeof(struct caldav_sched_param));
if (sparam.server) remote->server = xstrdup(sparam.server);
remote->port = sparam.port;
remote->flags = sparam.flags;
@@ -5907,7 +5907,7 @@ int sched_busytime_query(struct transaction_t *txn,
struct remote_rock rrock = { txn, ical, root, ns };
hash_enumerate(&remote_table, busytime_query_remote, &rrock);
}
- free_hash_table(&remote_table, free_sched_param);
+ free_hash_table(&remote_table, free_caldav_sched_param);
/* Output the XML response */
if (!ret) xml_response(HTTP_OK, txn, root->doc);
@@ -5945,7 +5945,7 @@ static void free_sched_data(void *data)
/* Deliver scheduling object to a remote recipient */
static void sched_deliver_remote(const char *recipient,
- struct sched_param *sparam,
+ struct caldav_sched_param *sparam,
struct sched_data *sched_data)
{
int r;
@@ -6250,7 +6250,7 @@ static int deliver_merge_pollstatus(icalcomponent *ical, icalcomponent *request)
static void sched_pollstatus(const char *organizer,
- struct sched_param *sparam, icalcomponent *ical,
+ struct caldav_sched_param *sparam, icalcomponent *ical,
const char *voter)
{
struct auth_state *authstate;
@@ -6376,7 +6376,7 @@ deliver_merge_pollstatus(icalcomponent *ical __attribute__((unused)),
}
static void sched_pollstatus(const char *organizer __attribute__((unused)),
- struct sched_param *sparam __attribute__((unused)),
+ struct caldav_sched_param *sparam __attribute__((unused)),
icalcomponent *ical __attribute__((unused)),
const char *voter __attribute__((unused)))
{
@@ -6708,7 +6708,7 @@ static int deliver_merge_request(const char *attendee,
/* Deliver scheduling object to local recipient */
static void sched_deliver_local(const char *recipient,
- struct sched_param *sparam,
+ struct caldav_sched_param *sparam,
struct sched_data *sched_data,
struct auth_state *authstate)
{
@@ -6986,7 +6986,7 @@ void sched_deliver(const char *recipient, void *data, void *rock)
{
struct sched_data *sched_data = (struct sched_data *) data;
struct auth_state *authstate = (struct auth_state *) rock;
- struct sched_param sparam;
+ struct caldav_sched_param sparam;
int islegal;
/* Check SCHEDULE-FORCE-SEND value */
@@ -7325,7 +7325,7 @@ static unsigned propcmp(icalcomponent *oldical, icalcomponent *newical,
/* Create and deliver an organizer scheduling request */
-static void sched_request(const char *organizer, struct sched_param *sparam,
+static void sched_request(const char *organizer, struct caldav_sched_param *sparam,
icalcomponent *oldical, icalcomponent *newical,
const char *att_update)
{
@@ -7607,7 +7607,7 @@ static icalcomponent *trim_attendees(icalcomponent *comp, const char *userid,
prop;
prop = nextprop) {
const char *att = get_recipient(prop);
- struct sched_param sparam;
+ struct caldav_sched_param sparam;
nextprop = icalcomponent_get_next_property(copy, recip_kind);
diff --git a/imap/http_caldav_sched.h b/imap/http_caldav_sched.h
index 5d8b2a9..9b66b81 100644
--- a/imap/http_caldav_sched.h
+++ b/imap/http_caldav_sched.h
@@ -109,7 +109,7 @@ struct proplist {
};
/* Each calendar user address has the following scheduling protocol params */
-struct sched_param {
+struct caldav_sched_param {
char *userid; /* Userid corresponding to calendar address */
char *server; /* Remote server user lives on */
unsigned port; /* Remote server port, default = 80 */
@@ -119,7 +119,7 @@ struct sched_param {
extern icalarray *rscale_calendars;
extern const char *get_icalcomponent_errstr(icalcomponent *ical);
-extern int isched_send(struct sched_param *sparam, const char *recipient,
+extern int isched_send(struct caldav_sched_param *sparam, const char *recipient,
icalcomponent *ical, xmlNodePtr *xml);
extern int sched_busytime_query(struct transaction_t *txn,
@@ -127,6 +127,6 @@ extern int sched_busytime_query(struct transaction_t *txn,
extern void sched_deliver(const char *recipient, void *data, void *rock);
extern xmlNodePtr xml_add_schedresponse(xmlNodePtr root, xmlNsPtr dav_ns,
xmlChar *recipient, xmlChar *status);
-extern int caladdress_lookup(const char *addr, struct sched_param *param);
+extern int caladdress_lookup(const char *addr, struct caldav_sched_param *param);
#endif /* HTTP_CALDAV_SCHED_H */
diff --git a/imap/http_ischedule.c b/imap/http_ischedule.c
index fef11a0..e08bc80 100644
--- a/imap/http_ischedule.c
+++ b/imap/http_ischedule.c
@@ -540,7 +540,7 @@ static int meth_post_isched(struct transaction_t *txn,
while ((recipient = tok_next(&tok))) {
/* Is recipient remote or local? */
- struct sched_param sparam;
+ struct caldav_sched_param sparam;
int r = caladdress_lookup(recipient, &sparam);
/* Don't allow scheduling with remote users via iSchedule */
@@ -583,7 +583,7 @@ static int meth_post_isched(struct transaction_t *txn,
}
-int isched_send(struct sched_param *sparam, const char *recipient,
+int isched_send(struct caldav_sched_param *sparam, const char *recipient,
icalcomponent *ical, xmlNodePtr *xml)
{
int r = 0;

1
rpmlint.cf Normal file
View File

@ -0,0 +1 @@
addFilter('hardcoded-library-path in %{_prefix}/lib/%{name}')