int setup_alis(struct query *q, char *argv[], client *cl)
{
EXEC SQL BEGIN DECLARE SECTION;
- int ngid, cnt, mailman, mailman_id;
+ int ngid, cnt, mailman, mailman_id, lid;
char *name, *desc;
EXEC SQL END DECLARE SECTION;
unsigned char *p;
if (idx == 1)
{
- EXEC SQL BEGIN DECLARE SECTION;
- int lid = *(int *)argv[0];
- EXEC SQL END DECLARE SECTION;
+ lid = *(int *)argv[0];
if (acl_access_check(lid, cl))
return MR_PERM;
{
/* Client too old to know about the mailman code.
* Use existing value of mailman boolean in the table.
+ * Don't do this for add_list from an old client, since the row
+ * they're creating won't exist yet, and there's no way for them to
+ * create a list with the mailman bit set, anyway.
*/
- EXEC SQL SELECT mailman INTO :mailman FROM list WHERE name = :name;
- if (mailman)
+ if (idx == 1)
{
- EXEC SQL SELECT COUNT(name) INTO :cnt FROM list
- WHERE (name = :name || '-admin' OR name = :name || '-owner' OR
- name = :name || '-request');
- if (cnt)
- return MR_EXISTS;
+ EXEC SQL SELECT mailman INTO :mailman FROM list WHERE list_id = :lid;
+ if (mailman)
+ {
+ EXEC SQL SELECT COUNT(name) INTO :cnt FROM list
+ WHERE (name = :name || '-admin' OR name = :name || '-owner' OR
+ name = :name || '-request');
+ if (cnt)
+ return MR_EXISTS;
+ }
}
}