Mailing List Archive

forward and mysql patch
I have been tracking down a forward problem, see thread starting here:
http://mailman.fastxs.net/pipermail/dbmail/2004-March/004366.html

Anyway I have forwarding working now, but I don't know if I've missed something.

Also, Here is a patch to allow for linking against the mysql server. I don't know why
this wasn't fixed in rc3?

So, my question is: Why was the header put in the message in forward.c and in db.c?
removing from forward.c allows for mail to forwaord properly without duplicate headers.

ed


diff -c -r dbmail-2.0rc3/forward.c dbmail-2.0rc3-ed/forward.c
*** dbmail-2.0rc3/forward.c 2004-03-03 04:30:07.000000000 -0500
--- dbmail-2.0rc3-ed/forward.c 2004-03-08 15:49:45.000000000 -0500
***************
*** 128,134 ****
}

/* first send header if this is a direct pipe through */
! fprintf (pipe, "%s", header);
trace(TRACE_DEBUG, "forward(): wrote header to pipe");

trace(TRACE_INFO, "forward(): sending message id number [%llu] to forward pipe", msgidnr);
--- 128,134 ----
}

/* first send header if this is a direct pipe through */
! //fprintf (pipe, "%s", header);
trace(TRACE_DEBUG, "forward(): wrote header to pipe");

trace(TRACE_INFO, "forward(): sending message id number [%llu] to forward pipe", msgidnr);
diff -c -r dbmail-2.0rc3/imapcommands.c dbmail-2.0rc3-ed/imapcommands.c
*** dbmail-2.0rc3/imapcommands.c 2004-01-30 11:24:35.000000000 -0500
--- dbmail-2.0rc3-ed/imapcommands.c 2004-03-07 12:08:42.000000000 -0500
***************
*** 2047,2053 ****
}
}

! fetch_list.start = list_reverse(fetch_list.start);

/* now fetch results for each msg */
endptr = args[0];
--- 2047,2053 ----
}
}

! fetch_list.start = dbmail_list_reverse(fetch_list.start);

/* now fetch results for each msg */
endptr = args[0];
diff -c -r dbmail-2.0rc3/list.c dbmail-2.0rc3-ed/list.c
*** dbmail-2.0rc3/list.c 2004-01-07 10:00:16.000000000 -0500
--- dbmail-2.0rc3-ed/list.c 2004-03-07 12:10:32.000000000 -0500
***************
*** 65,71 ****
*
* reverse the order of a linked list
*/
! struct element* list_reverse(struct element *start)
{
struct element *newstart;

--- 65,71 ----
*
* reverse the order of a linked list
*/
! struct element* dbmail_list_reverse(struct element *start)
{
struct element *newstart;

***************
*** 75,81 ****
if (!start->nextnode)
return start; /* nothing to reverse */

! newstart = list_reverse(start->nextnode); /* reverse rest of list */
start->nextnode->nextnode = start;

start->nextnode = NULL; /* terminate list */
--- 75,81 ----
if (!start->nextnode)
return start; /* nothing to reverse */

! newstart = dbmail_list_reverse(start->nextnode); /* reverse rest of list */
start->nextnode->nextnode = start;

start->nextnode = NULL; /* terminate list */
diff -c -r dbmail-2.0rc3/list.h dbmail-2.0rc3-ed/list.h
*** dbmail-2.0rc3/list.h 2004-01-07 10:00:16.000000000 -0500
--- dbmail-2.0rc3-ed/list.h 2004-03-07 12:09:18.000000000 -0500
***************
*** 59,64 ****
long list_totalnodes(struct list *tlist);
void list_showlist(struct list *tlist);
void list_init(struct list *tlist);
! struct element* list_reverse(struct element *start);

#endif
--- 59,64 ----
long list_totalnodes(struct list *tlist);
void list_showlist(struct list *tlist);
void list_init(struct list *tlist);
! struct element* dbmail_list_reverse(struct element *start);

#endif
diff -c -r dbmail-2.0rc3/lmtp.c dbmail-2.0rc3-ed/lmtp.c
*** dbmail-2.0rc3/lmtp.c 2004-03-05 03:10:12.000000000 -0500
--- dbmail-2.0rc3-ed/lmtp.c 2004-03-07 12:09:29.000000000 -0500
***************
*** 532,538 ****
struct element *element;

/* The replies MUST be in the order received */
! rcpt.start = list_reverse(rcpt.start);

/* Resolve the addresses into deliverable / non-deliverable form. */
if (dsnuser_resolve_list(&rcpt) == -1)
--- 532,538 ----
struct element *element;

/* The replies MUST be in the order received */
! rcpt.start = dbmail_list_reverse(rcpt.start);

/* Resolve the addresses into deliverable / non-deliverable form. */
if (dsnuser_resolve_list(&rcpt) == -1)
diff -c -r dbmail-2.0rc3/rfcmsg.c dbmail-2.0rc3-ed/rfcmsg.c
*** dbmail-2.0rc3/rfcmsg.c 2004-01-07 10:00:16.000000000 -0500
--- dbmail-2.0rc3-ed/rfcmsg.c 2004-03-07 12:09:48.000000000 -0500
***************
*** 90,100 ****
}

/* reverse this list */
! msg->children.start = list_reverse(msg->children.start);

/* reverse header items */
! msg->mimeheader.start = list_reverse(msg->mimeheader.start);
! msg->rfcheader.start = list_reverse(msg->rfcheader.start);
}

/*
--- 90,100 ----
}

/* reverse this list */
! msg->children.start = dbmail_list_reverse(msg->children.start);

/* reverse header items */
! msg->mimeheader.start = dbmail_list_reverse(msg->mimeheader.start);
! msg->rfcheader.start = dbmail_list_reverse(msg->rfcheader.start);
}

/*


Security on the internet is impossible without strong, open,
and unhindered encryption.
Re: forward and mysql patch [ In reply to ]
What version of MySQL are you linking with? There were a couple of versions
that were polluting the namespace, IIRC, as list_reverse is absolutely not a
symbol that libmysql.so should be exporting.

Looks like you're right about the double headers, but I'm not familiar enough
with that code to really comment on it. Ilja's game on that one ;-)

Aaron


""Ed K."" <ed@hp.uab.edu> said:

> I have been tracking down a forward problem, see thread starting here:
> http://mailman.fastxs.net/pipermail/dbmail/2004-March/004366.html
>
> Anyway I have forwarding working now, but I don't know if I've missed something.
>
> Also, Here is a patch to allow for linking against the mysql server. I don't
know why
> this wasn't fixed in rc3?
>
> So, my question is: Why was the header put in the message in forward.c and
in db.c?
> removing from forward.c allows for mail to forwaord properly without
duplicate headers.
>
> ed
>
>
> diff -c -r dbmail-2.0rc3/forward.c dbmail-2.0rc3-ed/forward.c
> *** dbmail-2.0rc3/forward.c 2004-03-03 04:30:07.000000000 -0500
> --- dbmail-2.0rc3-ed/forward.c 2004-03-08 15:49:45.000000000 -0500
> ***************
> *** 128,134 ****
> }
>
> /* first send header if this is a direct pipe through */
> ! fprintf (pipe, "%s", header);
> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
>
> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
forward pipe", msgidnr);
> --- 128,134 ----
> }
>
> /* first send header if this is a direct pipe through */
> ! //fprintf (pipe, "%s", header);
> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
>
> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
forward pipe", msgidnr);
> diff -c -r dbmail-2.0rc3/imapcommands.c dbmail-2.0rc3-ed/imapcommands.c
> *** dbmail-2.0rc3/imapcommands.c 2004-01-30 11:24:35.000000000 -0500
> --- dbmail-2.0rc3-ed/imapcommands.c 2004-03-07 12:08:42.000000000 -0500
> ***************
> *** 2047,2053 ****
> }
> }
>
> ! fetch_list.start = list_reverse(fetch_list.start);
>
> /* now fetch results for each msg */
> endptr = args[0];
> --- 2047,2053 ----
> }
> }
>
> ! fetch_list.start = dbmail_list_reverse(fetch_list.start);
>
> /* now fetch results for each msg */
> endptr = args[0];
> diff -c -r dbmail-2.0rc3/list.c dbmail-2.0rc3-ed/list.c
> *** dbmail-2.0rc3/list.c 2004-01-07 10:00:16.000000000 -0500
> --- dbmail-2.0rc3-ed/list.c 2004-03-07 12:10:32.000000000 -0500
> ***************
> *** 65,71 ****
> *
> * reverse the order of a linked list
> */
> ! struct element* list_reverse(struct element *start)
> {
> struct element *newstart;
>
> --- 65,71 ----
> *
> * reverse the order of a linked list
> */
> ! struct element* dbmail_list_reverse(struct element *start)
> {
> struct element *newstart;
>
> ***************
> *** 75,81 ****
> if (!start->nextnode)
> return start; /* nothing to reverse */
>
> ! newstart = list_reverse(start->nextnode); /* reverse rest of list */
> start->nextnode->nextnode = start;
>
> start->nextnode = NULL; /* terminate list */
> --- 75,81 ----
> if (!start->nextnode)
> return start; /* nothing to reverse */
>
> ! newstart = dbmail_list_reverse(start->nextnode); /* reverse rest of list */
> start->nextnode->nextnode = start;
>
> start->nextnode = NULL; /* terminate list */
> diff -c -r dbmail-2.0rc3/list.h dbmail-2.0rc3-ed/list.h
> *** dbmail-2.0rc3/list.h 2004-01-07 10:00:16.000000000 -0500
> --- dbmail-2.0rc3-ed/list.h 2004-03-07 12:09:18.000000000 -0500
> ***************
> *** 59,64 ****
> long list_totalnodes(struct list *tlist);
> void list_showlist(struct list *tlist);
> void list_init(struct list *tlist);
> ! struct element* list_reverse(struct element *start);
>
> #endif
> --- 59,64 ----
> long list_totalnodes(struct list *tlist);
> void list_showlist(struct list *tlist);
> void list_init(struct list *tlist);
> ! struct element* dbmail_list_reverse(struct element *start);
>
> #endif
> diff -c -r dbmail-2.0rc3/lmtp.c dbmail-2.0rc3-ed/lmtp.c
> *** dbmail-2.0rc3/lmtp.c 2004-03-05 03:10:12.000000000 -0500
> --- dbmail-2.0rc3-ed/lmtp.c 2004-03-07 12:09:29.000000000 -0500
> ***************
> *** 532,538 ****
> struct element *element;
>
> /* The replies MUST be in the order received */
> ! rcpt.start = list_reverse(rcpt.start);
>
> /* Resolve the addresses into deliverable / non-deliverable
form. */
> if (dsnuser_resolve_list(&rcpt) == -1)
> --- 532,538 ----
> struct element *element;
>
> /* The replies MUST be in the order received */
> ! rcpt.start = dbmail_list_reverse(rcpt.start);
>
> /* Resolve the addresses into deliverable / non-deliverable
form. */
> if (dsnuser_resolve_list(&rcpt) == -1)
> diff -c -r dbmail-2.0rc3/rfcmsg.c dbmail-2.0rc3-ed/rfcmsg.c
> *** dbmail-2.0rc3/rfcmsg.c 2004-01-07 10:00:16.000000000 -0500
> --- dbmail-2.0rc3-ed/rfcmsg.c 2004-03-07 12:09:48.000000000 -0500
> ***************
> *** 90,100 ****
> }
>
> /* reverse this list */
> ! msg->children.start = list_reverse(msg->children.start);
>
> /* reverse header items */
> ! msg->mimeheader.start = list_reverse(msg->mimeheader.start);
> ! msg->rfcheader.start = list_reverse(msg->rfcheader.start);
> }
>
> /*
> --- 90,100 ----
> }
>
> /* reverse this list */
> ! msg->children.start = dbmail_list_reverse(msg->children.start);
>
> /* reverse header items */
> ! msg->mimeheader.start = dbmail_list_reverse(msg->mimeheader.start);
> ! msg->rfcheader.start = dbmail_list_reverse(msg->rfcheader.start);
> }
>
> /*
>
>
> Security on the internet is impossible without strong, open,
> and unhindered encryption.
>
> _______________________________________________
> Dbmail-dev mailing list
> Dbmail-dev@dbmail.org
> http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>



--
Re: forward and mysql patch [ In reply to ]
I've installed the mysql from:

http://www.mysql.com/get/Downloads/MySQL-4.1/mysql-standard-4.1.1-alpha-pc-linux-i686.tar.gz/from/pick

fyi: It is the binary install, with only static libraries.

from the mysql source:

> grep -i list_reverse /usr/local/mysql/include/*
/usr/local/mysql/include/my_list.h:extern LIST *list_reverse(LIST *root);

ed

On Tue, 9 Mar 2004, Aaron Stone wrote:

> What version of MySQL are you linking with? There were a couple of versions
> that were polluting the namespace, IIRC, as list_reverse is absolutely not a
> symbol that libmysql.so should be exporting.
>
> Looks like you're right about the double headers, but I'm not familiar enough
> with that code to really comment on it. Ilja's game on that one ;-)
>
> Aaron
>
>
> ""Ed K."" <ed@hp.uab.edu> said:
>
> > I have been tracking down a forward problem, see thread starting here:
> > http://mailman.fastxs.net/pipermail/dbmail/2004-March/004366.html
> >
> > Anyway I have forwarding working now, but I don't know if I've missed something.
> >
> > Also, Here is a patch to allow for linking against the mysql server. I don't
> know why
> > this wasn't fixed in rc3?
> >
> > So, my question is: Why was the header put in the message in forward.c and
> in db.c?
> > removing from forward.c allows for mail to forwaord properly without
> duplicate headers.
> >
> > ed
> >
> >
> > diff -c -r dbmail-2.0rc3/forward.c dbmail-2.0rc3-ed/forward.c
> > *** dbmail-2.0rc3/forward.c 2004-03-03 04:30:07.000000000 -0500
> > --- dbmail-2.0rc3-ed/forward.c 2004-03-08 15:49:45.000000000 -0500
> > ***************
> > *** 128,134 ****
> > }
> >
> > /* first send header if this is a direct pipe through */
> > ! fprintf (pipe, "%s", header);
> > trace(TRACE_DEBUG, "forward(): wrote header to pipe");
> >
> > trace(TRACE_INFO, "forward(): sending message id number [%llu] to
> forward pipe", msgidnr);
> > --- 128,134 ----
> > }
> >
> > /* first send header if this is a direct pipe through */
> > ! //fprintf (pipe, "%s", header);
> > trace(TRACE_DEBUG, "forward(): wrote header to pipe");
> >
> > trace(TRACE_INFO, "forward(): sending message id number [%llu] to
> forward pipe", msgidnr);
> > diff -c -r dbmail-2.0rc3/imapcommands.c dbmail-2.0rc3-ed/imapcommands.c
> > *** dbmail-2.0rc3/imapcommands.c 2004-01-30 11:24:35.000000000 -0500
> > --- dbmail-2.0rc3-ed/imapcommands.c 2004-03-07 12:08:42.000000000 -0500
> > ***************
> > *** 2047,2053 ****
> > }
> > }
> >
> > ! fetch_list.start = list_reverse(fetch_list.start);
> >
> > /* now fetch results for each msg */
> > endptr = args[0];
> > --- 2047,2053 ----
> > }
> > }
> >
> > ! fetch_list.start = dbmail_list_reverse(fetch_list.start);
> >
> > /* now fetch results for each msg */
> > endptr = args[0];
> > diff -c -r dbmail-2.0rc3/list.c dbmail-2.0rc3-ed/list.c
> > *** dbmail-2.0rc3/list.c 2004-01-07 10:00:16.000000000 -0500
> > --- dbmail-2.0rc3-ed/list.c 2004-03-07 12:10:32.000000000 -0500
> > ***************
> > *** 65,71 ****
> > *
> > * reverse the order of a linked list
> > */
> > ! struct element* list_reverse(struct element *start)
> > {
> > struct element *newstart;
> >
> > --- 65,71 ----
> > *
> > * reverse the order of a linked list
> > */
> > ! struct element* dbmail_list_reverse(struct element *start)
> > {
> > struct element *newstart;
> >
> > ***************
> > *** 75,81 ****
> > if (!start->nextnode)
> > return start; /* nothing to reverse */
> >
> > ! newstart = list_reverse(start->nextnode); /* reverse rest of list */
> > start->nextnode->nextnode = start;
> >
> > start->nextnode = NULL; /* terminate list */
> > --- 75,81 ----
> > if (!start->nextnode)
> > return start; /* nothing to reverse */
> >
> > ! newstart = dbmail_list_reverse(start->nextnode); /* reverse rest of list */
> > start->nextnode->nextnode = start;
> >
> > start->nextnode = NULL; /* terminate list */
> > diff -c -r dbmail-2.0rc3/list.h dbmail-2.0rc3-ed/list.h
> > *** dbmail-2.0rc3/list.h 2004-01-07 10:00:16.000000000 -0500
> > --- dbmail-2.0rc3-ed/list.h 2004-03-07 12:09:18.000000000 -0500
> > ***************
> > *** 59,64 ****
> > long list_totalnodes(struct list *tlist);
> > void list_showlist(struct list *tlist);
> > void list_init(struct list *tlist);
> > ! struct element* list_reverse(struct element *start);
> >
> > #endif
> > --- 59,64 ----
> > long list_totalnodes(struct list *tlist);
> > void list_showlist(struct list *tlist);
> > void list_init(struct list *tlist);
> > ! struct element* dbmail_list_reverse(struct element *start);
> >
> > #endif
> > diff -c -r dbmail-2.0rc3/lmtp.c dbmail-2.0rc3-ed/lmtp.c
> > *** dbmail-2.0rc3/lmtp.c 2004-03-05 03:10:12.000000000 -0500
> > --- dbmail-2.0rc3-ed/lmtp.c 2004-03-07 12:09:29.000000000 -0500
> > ***************
> > *** 532,538 ****
> > struct element *element;
> >
> > /* The replies MUST be in the order received */
> > ! rcpt.start = list_reverse(rcpt.start);
> >
> > /* Resolve the addresses into deliverable / non-deliverable
> form. */
> > if (dsnuser_resolve_list(&rcpt) == -1)
> > --- 532,538 ----
> > struct element *element;
> >
> > /* The replies MUST be in the order received */
> > ! rcpt.start = dbmail_list_reverse(rcpt.start);
> >
> > /* Resolve the addresses into deliverable / non-deliverable
> form. */
> > if (dsnuser_resolve_list(&rcpt) == -1)
> > diff -c -r dbmail-2.0rc3/rfcmsg.c dbmail-2.0rc3-ed/rfcmsg.c
> > *** dbmail-2.0rc3/rfcmsg.c 2004-01-07 10:00:16.000000000 -0500
> > --- dbmail-2.0rc3-ed/rfcmsg.c 2004-03-07 12:09:48.000000000 -0500
> > ***************
> > *** 90,100 ****
> > }
> >
> > /* reverse this list */
> > ! msg->children.start = list_reverse(msg->children.start);
> >
> > /* reverse header items */
> > ! msg->mimeheader.start = list_reverse(msg->mimeheader.start);
> > ! msg->rfcheader.start = list_reverse(msg->rfcheader.start);
> > }
> >
> > /*
> > --- 90,100 ----
> > }
> >
> > /* reverse this list */
> > ! msg->children.start = dbmail_list_reverse(msg->children.start);
> >
> > /* reverse header items */
> > ! msg->mimeheader.start = dbmail_list_reverse(msg->mimeheader.start);
> > ! msg->rfcheader.start = dbmail_list_reverse(msg->rfcheader.start);
> > }
> >
> > /*
> >
> >
> > Security on the internet is impossible without strong, open,
> > and unhindered encryption.
> >
> > _______________________________________________
> > Dbmail-dev mailing list
> > Dbmail-dev@dbmail.org
> > http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> >
>
>
>
> --
>
>
>
> _______________________________________________
> Dbmail-dev mailing list
> Dbmail-dev@dbmail.org
> http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>

Security on the internet is impossible without strong, open,
and unhindered encryption.
Re: forward and mysql patch [ In reply to ]
Well, isn't that the funniest thing? My MySQL links just fine but indeed does
have these headers. It's awfully nice of them to be providing a common list
data structure for the world to use... but not using standard library naming
conventions and barging into other people's namespaces is just rude!

Aaron


""Ed K."" <ed@hp.uab.edu> said:

> I've installed the mysql from:
>
>
http://www.mysql.com/get/Downloads/MySQL-4.1/mysql-standard-4.1.1-alpha-pc-linux-i686.tar.gz/from/pick
>
> fyi: It is the binary install, with only static libraries.
>
> from the mysql source:
>
> > grep -i list_reverse /usr/local/mysql/include/*
> /usr/local/mysql/include/my_list.h:extern LIST *list_reverse(LIST *root);
>
> ed
>
> On Tue, 9 Mar 2004, Aaron Stone wrote:
>
> > What version of MySQL are you linking with? There were a couple of versions
> > that were polluting the namespace, IIRC, as list_reverse is absolutely not a
> > symbol that libmysql.so should be exporting.
> >
> > Looks like you're right about the double headers, but I'm not familiar enough
> > with that code to really comment on it. Ilja's game on that one ;-)
> >
> > Aaron
> >
> >
> > ""Ed K."" <ed@hp.uab.edu> said:
> >
> > > I have been tracking down a forward problem, see thread starting here:
> > > http://mailman.fastxs.net/pipermail/dbmail/2004-March/004366.html
> > >
> > > Anyway I have forwarding working now, but I don't know if I've missed
something.
> > >
> > > Also, Here is a patch to allow for linking against the mysql server. I don't
> > know why
> > > this wasn't fixed in rc3?
> > >
> > > So, my question is: Why was the header put in the message in forward.c and
> > in db.c?
> > > removing from forward.c allows for mail to forwaord properly without
> > duplicate headers.
> > >
> > > ed
> > >
> > >
> > > diff -c -r dbmail-2.0rc3/forward.c dbmail-2.0rc3-ed/forward.c
> > > *** dbmail-2.0rc3/forward.c 2004-03-03 04:30:07.000000000 -0500
> > > --- dbmail-2.0rc3-ed/forward.c 2004-03-08 15:49:45.000000000 -0500
> > > ***************
> > > *** 128,134 ****
> > > }
> > >
> > > /* first send header if this is a direct pipe through */
> > > ! fprintf (pipe, "%s", header);
> > > trace(TRACE_DEBUG, "forward(): wrote header to pipe");
> > >
> > > trace(TRACE_INFO, "forward(): sending message id number [%llu] to
> > forward pipe", msgidnr);
> > > --- 128,134 ----
> > > }
> > >
> > > /* first send header if this is a direct pipe through */
> > > ! //fprintf (pipe, "%s", header);
> > > trace(TRACE_DEBUG, "forward(): wrote header to pipe");
> > >
> > > trace(TRACE_INFO, "forward(): sending message id number [%llu] to
> > forward pipe", msgidnr);
> > > diff -c -r dbmail-2.0rc3/imapcommands.c dbmail-2.0rc3-ed/imapcommands.c
> > > *** dbmail-2.0rc3/imapcommands.c 2004-01-30 11:24:35.000000000 -0500
> > > --- dbmail-2.0rc3-ed/imapcommands.c 2004-03-07 12:08:42.000000000 -0500
> > > ***************
> > > *** 2047,2053 ****
> > > }
> > > }
> > >
> > > ! fetch_list.start = list_reverse(fetch_list.start);
> > >
> > > /* now fetch results for each msg */
> > > endptr = args[0];
> > > --- 2047,2053 ----
> > > }
> > > }
> > >
> > > ! fetch_list.start = dbmail_list_reverse(fetch_list.start);
> > >
> > > /* now fetch results for each msg */
> > > endptr = args[0];
> > > diff -c -r dbmail-2.0rc3/list.c dbmail-2.0rc3-ed/list.c
> > > *** dbmail-2.0rc3/list.c 2004-01-07 10:00:16.000000000 -0500
> > > --- dbmail-2.0rc3-ed/list.c 2004-03-07 12:10:32.000000000 -0500
> > > ***************
> > > *** 65,71 ****
> > > *
> > > * reverse the order of a linked list
> > > */
> > > ! struct element* list_reverse(struct element *start)
> > > {
> > > struct element *newstart;
> > >
> > > --- 65,71 ----
> > > *
> > > * reverse the order of a linked list
> > > */
> > > ! struct element* dbmail_list_reverse(struct element *start)
> > > {
> > > struct element *newstart;
> > >
> > > ***************
> > > *** 75,81 ****
> > > if (!start->nextnode)
> > > return start; /* nothing to reverse */
> > >
> > > ! newstart = list_reverse(start->nextnode); /* reverse rest of list */
> > > start->nextnode->nextnode = start;
> > >
> > > start->nextnode = NULL; /* terminate list */
> > > --- 75,81 ----
> > > if (!start->nextnode)
> > > return start; /* nothing to reverse */
> > >
> > > ! newstart = dbmail_list_reverse(start->nextnode); /* reverse rest of
list */
> > > start->nextnode->nextnode = start;
> > >
> > > start->nextnode = NULL; /* terminate list */
> > > diff -c -r dbmail-2.0rc3/list.h dbmail-2.0rc3-ed/list.h
> > > *** dbmail-2.0rc3/list.h 2004-01-07 10:00:16.000000000 -0500
> > > --- dbmail-2.0rc3-ed/list.h 2004-03-07 12:09:18.000000000 -0500
> > > ***************
> > > *** 59,64 ****
> > > long list_totalnodes(struct list *tlist);
> > > void list_showlist(struct list *tlist);
> > > void list_init(struct list *tlist);
> > > ! struct element* list_reverse(struct element *start);
> > >
> > > #endif
> > > --- 59,64 ----
> > > long list_totalnodes(struct list *tlist);
> > > void list_showlist(struct list *tlist);
> > > void list_init(struct list *tlist);
> > > ! struct element* dbmail_list_reverse(struct element *start);
> > >
> > > #endif
> > > diff -c -r dbmail-2.0rc3/lmtp.c dbmail-2.0rc3-ed/lmtp.c
> > > *** dbmail-2.0rc3/lmtp.c 2004-03-05 03:10:12.000000000 -0500
> > > --- dbmail-2.0rc3-ed/lmtp.c 2004-03-07 12:09:29.000000000 -0500
> > > ***************
> > > *** 532,538 ****
> > > struct element *element;
> > >
> > > /* The replies MUST be in the order received */
> > > ! rcpt.start = list_reverse(rcpt.start);
> > >
> > > /* Resolve the addresses into deliverable / non-deliverable
> > form. */
> > > if (dsnuser_resolve_list(&rcpt) == -1)
> > > --- 532,538 ----
> > > struct element *element;
> > >
> > > /* The replies MUST be in the order received */
> > > ! rcpt.start = dbmail_list_reverse(rcpt.start);
> > >
> > > /* Resolve the addresses into deliverable / non-deliverable
> > form. */
> > > if (dsnuser_resolve_list(&rcpt) == -1)
> > > diff -c -r dbmail-2.0rc3/rfcmsg.c dbmail-2.0rc3-ed/rfcmsg.c
> > > *** dbmail-2.0rc3/rfcmsg.c 2004-01-07 10:00:16.000000000 -0500
> > > --- dbmail-2.0rc3-ed/rfcmsg.c 2004-03-07 12:09:48.000000000 -0500
> > > ***************
> > > *** 90,100 ****
> > > }
> > >
> > > /* reverse this list */
> > > ! msg->children.start = list_reverse(msg->children.start);
> > >
> > > /* reverse header items */
> > > ! msg->mimeheader.start = list_reverse(msg->mimeheader.start);
> > > ! msg->rfcheader.start = list_reverse(msg->rfcheader.start);
> > > }
> > >
> > > /*
> > > --- 90,100 ----
> > > }
> > >
> > > /* reverse this list */
> > > ! msg->children.start = dbmail_list_reverse(msg->children.start);
> > >
> > > /* reverse header items */
> > > ! msg->mimeheader.start = dbmail_list_reverse(msg->mimeheader.start);
> > > ! msg->rfcheader.start = dbmail_list_reverse(msg->rfcheader.start);
> > > }
> > >
> > > /*
> > >
> > >
> > > Security on the internet is impossible without strong, open,
> > > and unhindered encryption.
> > >
> > > _______________________________________________
> > > Dbmail-dev mailing list
> > > Dbmail-dev@dbmail.org
> > > http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> > >
> >
> >
> >
> > --
> >
> >
> >
> > _______________________________________________
> > Dbmail-dev mailing list
> > Dbmail-dev@dbmail.org
> > http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> >
>
> Security on the internet is impossible without strong, open,
> and unhindered encryption.
>
> _______________________________________________
> Dbmail-dev mailing list
> Dbmail-dev@dbmail.org
> http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>



--
Re: forward and mysql patch [ In reply to ]
"Funny" indeed.

I've changed the function to use the dbmail_list_reverse() name. I guess
this won't be a problem in the long run, because I think we should use a
library like glib (http://www.gtk.org) to provide functions/utilies
like linked lists.

I'm still looking at the double header stuff.

Ilja

Aaron Stone wrote:

> Well, isn't that the funniest thing? My MySQL links just fine but indeed does
> have these headers. It's awfully nice of them to be providing a common list
> data structure for the world to use... but not using standard library naming
> conventions and barging into other people's namespaces is just rude!
>
> Aaron
>
>
> ""Ed K."" <ed@hp.uab.edu> said:
>
>
>>I've installed the mysql from:
>>
>>
>
> http://www.mysql.com/get/Downloads/MySQL-4.1/mysql-standard-4.1.1-alpha-pc-linux-i686.tar.gz/from/pick
>
>>fyi: It is the binary install, with only static libraries.
>>
>>from the mysql source:
>>
>>
>>>grep -i list_reverse /usr/local/mysql/include/*
>>
>>/usr/local/mysql/include/my_list.h:extern LIST *list_reverse(LIST *root);
>>
>>ed
>>
>>On Tue, 9 Mar 2004, Aaron Stone wrote:
>>
>>
>>>What version of MySQL are you linking with? There were a couple of versions
>>>that were polluting the namespace, IIRC, as list_reverse is absolutely not a
>>>symbol that libmysql.so should be exporting.
>>>
>>>Looks like you're right about the double headers, but I'm not familiar enough
>>>with that code to really comment on it. Ilja's game on that one ;-)
>>>
>>>Aaron
>>>
>>>
>>>""Ed K."" <ed@hp.uab.edu> said:
>>>
>>>
>>>>I have been tracking down a forward problem, see thread starting here:
>>>>http://mailman.fastxs.net/pipermail/dbmail/2004-March/004366.html
>>>>
>>>>Anyway I have forwarding working now, but I don't know if I've missed
>
> something.
>
>>>>Also, Here is a patch to allow for linking against the mysql server. I don't
>>>
>>>know why
>>>
>>>>this wasn't fixed in rc3?
>>>>
>>>>So, my question is: Why was the header put in the message in forward.c and
>>>
>>>in db.c?
>>>
>>>>removing from forward.c allows for mail to forwaord properly without
>>>
>>>duplicate headers.
>>>
>>>>ed
>>>>
>>>>
>>>>diff -c -r dbmail-2.0rc3/forward.c dbmail-2.0rc3-ed/forward.c
>>>>*** dbmail-2.0rc3/forward.c 2004-03-03 04:30:07.000000000 -0500
>>>>--- dbmail-2.0rc3-ed/forward.c 2004-03-08 15:49:45.000000000 -0500
>>>>***************
>>>>*** 128,134 ****
>>>> }
>>>>
>>>> /* first send header if this is a direct pipe through */
>>>>! fprintf (pipe, "%s", header);
>>>> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
>>>>
>>>> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
>>>
>>>forward pipe", msgidnr);
>>>
>>>>--- 128,134 ----
>>>> }
>>>>
>>>> /* first send header if this is a direct pipe through */
>>>>! //fprintf (pipe, "%s", header);
>>>> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
>>>>
>>>> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
>>>
>>>forward pipe", msgidnr);
>>>
>>>>diff -c -r dbmail-2.0rc3/imapcommands.c dbmail-2.0rc3-ed/imapcommands.c
>>>>*** dbmail-2.0rc3/imapcommands.c 2004-01-30 11:24:35.000000000 -0500
>>>>--- dbmail-2.0rc3-ed/imapcommands.c 2004-03-07 12:08:42.000000000 -0500
>>>>***************
>>>>*** 2047,2053 ****
>>>> }
>>>> }
>>>>
>>>>! fetch_list.start = list_reverse(fetch_list.start);
>>>>
>>>> /* now fetch results for each msg */
>>>> endptr = args[0];
>>>>--- 2047,2053 ----
>>>> }
>>>> }
>>>>
>>>>! fetch_list.start = dbmail_list_reverse(fetch_list.start);
>>>>
>>>> /* now fetch results for each msg */
>>>> endptr = args[0];
>>>>diff -c -r dbmail-2.0rc3/list.c dbmail-2.0rc3-ed/list.c
>>>>*** dbmail-2.0rc3/list.c 2004-01-07 10:00:16.000000000 -0500
>>>>--- dbmail-2.0rc3-ed/list.c 2004-03-07 12:10:32.000000000 -0500
>>>>***************
>>>>*** 65,71 ****
>>>> *
>>>> * reverse the order of a linked list
>>>> */
>>>>! struct element* list_reverse(struct element *start)
>>>> {
>>>> struct element *newstart;
>>>>
>>>>--- 65,71 ----
>>>> *
>>>> * reverse the order of a linked list
>>>> */
>>>>! struct element* dbmail_list_reverse(struct element *start)
>>>> {
>>>> struct element *newstart;
>>>>
>>>>***************
>>>>*** 75,81 ****
>>>> if (!start->nextnode)
>>>> return start; /* nothing to reverse */
>>>>
>>>>! newstart = list_reverse(start->nextnode); /* reverse rest of list */
>>>> start->nextnode->nextnode = start;
>>>>
>>>> start->nextnode = NULL; /* terminate list */
>>>>--- 75,81 ----
>>>> if (!start->nextnode)
>>>> return start; /* nothing to reverse */
>>>>
>>>>! newstart = dbmail_list_reverse(start->nextnode); /* reverse rest of
>
> list */
>
>>>> start->nextnode->nextnode = start;
>>>>
>>>> start->nextnode = NULL; /* terminate list */
>>>>diff -c -r dbmail-2.0rc3/list.h dbmail-2.0rc3-ed/list.h
>>>>*** dbmail-2.0rc3/list.h 2004-01-07 10:00:16.000000000 -0500
>>>>--- dbmail-2.0rc3-ed/list.h 2004-03-07 12:09:18.000000000 -0500
>>>>***************
>>>>*** 59,64 ****
>>>> long list_totalnodes(struct list *tlist);
>>>> void list_showlist(struct list *tlist);
>>>> void list_init(struct list *tlist);
>>>>! struct element* list_reverse(struct element *start);
>>>>
>>>> #endif
>>>>--- 59,64 ----
>>>> long list_totalnodes(struct list *tlist);
>>>> void list_showlist(struct list *tlist);
>>>> void list_init(struct list *tlist);
>>>>! struct element* dbmail_list_reverse(struct element *start);
>>>>
>>>> #endif
>>>>diff -c -r dbmail-2.0rc3/lmtp.c dbmail-2.0rc3-ed/lmtp.c
>>>>*** dbmail-2.0rc3/lmtp.c 2004-03-05 03:10:12.000000000 -0500
>>>>--- dbmail-2.0rc3-ed/lmtp.c 2004-03-07 12:09:29.000000000 -0500
>>>>***************
>>>>*** 532,538 ****
>>>> struct element *element;
>>>>
>>>> /* The replies MUST be in the order received */
>>>>! rcpt.start = list_reverse(rcpt.start);
>>>>
>>>> /* Resolve the addresses into deliverable / non-deliverable
>>>
>>>form. */
>>>
>>>> if (dsnuser_resolve_list(&rcpt) == -1)
>>>>--- 532,538 ----
>>>> struct element *element;
>>>>
>>>> /* The replies MUST be in the order received */
>>>>! rcpt.start = dbmail_list_reverse(rcpt.start);
>>>>
>>>> /* Resolve the addresses into deliverable / non-deliverable
>>>
>>>form. */
>>>
>>>> if (dsnuser_resolve_list(&rcpt) == -1)
>>>>diff -c -r dbmail-2.0rc3/rfcmsg.c dbmail-2.0rc3-ed/rfcmsg.c
>>>>*** dbmail-2.0rc3/rfcmsg.c 2004-01-07 10:00:16.000000000 -0500
>>>>--- dbmail-2.0rc3-ed/rfcmsg.c 2004-03-07 12:09:48.000000000 -0500
>>>>***************
>>>>*** 90,100 ****
>>>> }
>>>>
>>>> /* reverse this list */
>>>>! msg->children.start = list_reverse(msg->children.start);
>>>>
>>>> /* reverse header items */
>>>>! msg->mimeheader.start = list_reverse(msg->mimeheader.start);
>>>>! msg->rfcheader.start = list_reverse(msg->rfcheader.start);
>>>> }
>>>>
>>>> /*
>>>>--- 90,100 ----
>>>> }
>>>>
>>>> /* reverse this list */
>>>>! msg->children.start = dbmail_list_reverse(msg->children.start);
>>>>
>>>> /* reverse header items */
>>>>! msg->mimeheader.start = dbmail_list_reverse(msg->mimeheader.start);
>>>>! msg->rfcheader.start = dbmail_list_reverse(msg->rfcheader.start);
>>>> }
>>>>
>>>> /*
>>>>
>>>>
>>>>Security on the internet is impossible without strong, open,
>>>>and unhindered encryption.
>>>>
>>>>_______________________________________________
>>>>Dbmail-dev mailing list
>>>>Dbmail-dev@dbmail.org
>>>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>>>
>>>
>>>
>>>
>>>--
>>>
>>>
>>>
>>>_______________________________________________
>>>Dbmail-dev mailing list
>>>Dbmail-dev@dbmail.org
>>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>>
>>
>>Security on the internet is impossible without strong, open,
>>and unhindered encryption.
>>
>>_______________________________________________
>>Dbmail-dev mailing list
>>Dbmail-dev@dbmail.org
>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>
>
>
>
>
Re: forward and mysql patch [ In reply to ]
Glib is a pretty big external dependency just for a linked list! I'm sure that
they also have MD5 functions and all sorts of other goodies, but we're in good
shape for now... IMHO, it's pretty nice that we only have to worry about
having MySQL or PostgreSQL and optionally LDAP or libSieve to link with.

Aaron


Ilja Booij <ilja@ic-s.nl> said:

> "Funny" indeed.
>
> I've changed the function to use the dbmail_list_reverse() name. I guess
> this won't be a problem in the long run, because I think we should use a
> library like glib (http://www.gtk.org) to provide functions/utilies
> like linked lists.
>
> I'm still looking at the double header stuff.
>
> Ilja
>
> Aaron Stone wrote:
>
> > Well, isn't that the funniest thing? My MySQL links just fine but indeed does
> > have these headers. It's awfully nice of them to be providing a common list
> > data structure for the world to use... but not using standard library naming
> > conventions and barging into other people's namespaces is just rude!
> >
> > Aaron
> >
> >
> > ""Ed K."" <ed@hp.uab.edu> said:
> >
> >
> >>I've installed the mysql from:
> >>
> >>
> >
> >
http://www.mysql.com/get/Downloads/MySQL-4.1/mysql-standard-4.1.1-alpha-pc-linux-i686.tar.gz/from/pick
> >
> >>fyi: It is the binary install, with only static libraries.
> >>
> >>from the mysql source:
> >>
> >>
> >>>grep -i list_reverse /usr/local/mysql/include/*
> >>
> >>/usr/local/mysql/include/my_list.h:extern LIST *list_reverse(LIST *root);
> >>
> >>ed
> >>
> >>On Tue, 9 Mar 2004, Aaron Stone wrote:
> >>
> >>
> >>>What version of MySQL are you linking with? There were a couple of versions
> >>>that were polluting the namespace, IIRC, as list_reverse is absolutely not a
> >>>symbol that libmysql.so should be exporting.
> >>>
> >>>Looks like you're right about the double headers, but I'm not familiar enough
> >>>with that code to really comment on it. Ilja's game on that one ;-)
> >>>
> >>>Aaron
> >>>
> >>>
> >>>""Ed K."" <ed@hp.uab.edu> said:
> >>>
> >>>
> >>>>I have been tracking down a forward problem, see thread starting here:
> >>>>http://mailman.fastxs.net/pipermail/dbmail/2004-March/004366.html
> >>>>
> >>>>Anyway I have forwarding working now, but I don't know if I've missed
> >
> > something.
> >
> >>>>Also, Here is a patch to allow for linking against the mysql server. I don't
> >>>
> >>>know why
> >>>
> >>>>this wasn't fixed in rc3?
> >>>>
> >>>>So, my question is: Why was the header put in the message in forward.c and
> >>>
> >>>in db.c?
> >>>
> >>>>removing from forward.c allows for mail to forwaord properly without
> >>>
> >>>duplicate headers.
> >>>
> >>>>ed
> >>>>
> >>>>
> >>>>diff -c -r dbmail-2.0rc3/forward.c dbmail-2.0rc3-ed/forward.c
> >>>>*** dbmail-2.0rc3/forward.c 2004-03-03 04:30:07.000000000 -0500
> >>>>--- dbmail-2.0rc3-ed/forward.c 2004-03-08 15:49:45.000000000 -0500
> >>>>***************
> >>>>*** 128,134 ****
> >>>> }
> >>>>
> >>>> /* first send header if this is a direct pipe through */
> >>>>! fprintf (pipe, "%s", header);
> >>>> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
> >>>>
> >>>> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
> >>>
> >>>forward pipe", msgidnr);
> >>>
> >>>>--- 128,134 ----
> >>>> }
> >>>>
> >>>> /* first send header if this is a direct pipe through */
> >>>>! //fprintf (pipe, "%s", header);
> >>>> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
> >>>>
> >>>> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
> >>>
> >>>forward pipe", msgidnr);
> >>>
> >>>>diff -c -r dbmail-2.0rc3/imapcommands.c dbmail-2.0rc3-ed/imapcommands.c
> >>>>*** dbmail-2.0rc3/imapcommands.c 2004-01-30 11:24:35.000000000 -0500
> >>>>--- dbmail-2.0rc3-ed/imapcommands.c 2004-03-07 12:08:42.000000000 -0500
> >>>>***************
> >>>>*** 2047,2053 ****
> >>>> }
> >>>> }
> >>>>
> >>>>! fetch_list.start = list_reverse(fetch_list.start);
> >>>>
> >>>> /* now fetch results for each msg */
> >>>> endptr = args[0];
> >>>>--- 2047,2053 ----
> >>>> }
> >>>> }
> >>>>
> >>>>! fetch_list.start = dbmail_list_reverse(fetch_list.start);
> >>>>
> >>>> /* now fetch results for each msg */
> >>>> endptr = args[0];
> >>>>diff -c -r dbmail-2.0rc3/list.c dbmail-2.0rc3-ed/list.c
> >>>>*** dbmail-2.0rc3/list.c 2004-01-07 10:00:16.000000000 -0500
> >>>>--- dbmail-2.0rc3-ed/list.c 2004-03-07 12:10:32.000000000 -0500
> >>>>***************
> >>>>*** 65,71 ****
> >>>> *
> >>>> * reverse the order of a linked list
> >>>> */
> >>>>! struct element* list_reverse(struct element *start)
> >>>> {
> >>>> struct element *newstart;
> >>>>
> >>>>--- 65,71 ----
> >>>> *
> >>>> * reverse the order of a linked list
> >>>> */
> >>>>! struct element* dbmail_list_reverse(struct element *start)
> >>>> {
> >>>> struct element *newstart;
> >>>>
> >>>>***************
> >>>>*** 75,81 ****
> >>>> if (!start->nextnode)
> >>>> return start; /* nothing to reverse */
> >>>>
> >>>>! newstart = list_reverse(start->nextnode); /* reverse rest of list */
> >>>> start->nextnode->nextnode = start;
> >>>>
> >>>> start->nextnode = NULL; /* terminate list */
> >>>>--- 75,81 ----
> >>>> if (!start->nextnode)
> >>>> return start; /* nothing to reverse */
> >>>>
> >>>>! newstart = dbmail_list_reverse(start->nextnode); /* reverse rest of
> >
> > list */
> >
> >>>> start->nextnode->nextnode = start;
> >>>>
> >>>> start->nextnode = NULL; /* terminate list */
> >>>>diff -c -r dbmail-2.0rc3/list.h dbmail-2.0rc3-ed/list.h
> >>>>*** dbmail-2.0rc3/list.h 2004-01-07 10:00:16.000000000 -0500
> >>>>--- dbmail-2.0rc3-ed/list.h 2004-03-07 12:09:18.000000000 -0500
> >>>>***************
> >>>>*** 59,64 ****
> >>>> long list_totalnodes(struct list *tlist);
> >>>> void list_showlist(struct list *tlist);
> >>>> void list_init(struct list *tlist);
> >>>>! struct element* list_reverse(struct element *start);
> >>>>
> >>>> #endif
> >>>>--- 59,64 ----
> >>>> long list_totalnodes(struct list *tlist);
> >>>> void list_showlist(struct list *tlist);
> >>>> void list_init(struct list *tlist);
> >>>>! struct element* dbmail_list_reverse(struct element *start);
> >>>>
> >>>> #endif
> >>>>diff -c -r dbmail-2.0rc3/lmtp.c dbmail-2.0rc3-ed/lmtp.c
> >>>>*** dbmail-2.0rc3/lmtp.c 2004-03-05 03:10:12.000000000 -0500
> >>>>--- dbmail-2.0rc3-ed/lmtp.c 2004-03-07 12:09:29.000000000 -0500
> >>>>***************
> >>>>*** 532,538 ****
> >>>> struct element *element;
> >>>>
> >>>> /* The replies MUST be in the order received */
> >>>>! rcpt.start = list_reverse(rcpt.start);
> >>>>
> >>>> /* Resolve the addresses into deliverable / non-deliverable
> >>>
> >>>form. */
> >>>
> >>>> if (dsnuser_resolve_list(&rcpt) == -1)
> >>>>--- 532,538 ----
> >>>> struct element *element;
> >>>>
> >>>> /* The replies MUST be in the order received */
> >>>>! rcpt.start = dbmail_list_reverse(rcpt.start);
> >>>>
> >>>> /* Resolve the addresses into deliverable / non-deliverable
> >>>
> >>>form. */
> >>>
> >>>> if (dsnuser_resolve_list(&rcpt) == -1)
> >>>>diff -c -r dbmail-2.0rc3/rfcmsg.c dbmail-2.0rc3-ed/rfcmsg.c
> >>>>*** dbmail-2.0rc3/rfcmsg.c 2004-01-07 10:00:16.000000000 -0500
> >>>>--- dbmail-2.0rc3-ed/rfcmsg.c 2004-03-07 12:09:48.000000000 -0500
> >>>>***************
> >>>>*** 90,100 ****
> >>>> }
> >>>>
> >>>> /* reverse this list */
> >>>>! msg->children.start = list_reverse(msg->children.start);
> >>>>
> >>>> /* reverse header items */
> >>>>! msg->mimeheader.start = list_reverse(msg->mimeheader.start);
> >>>>! msg->rfcheader.start = list_reverse(msg->rfcheader.start);
> >>>> }
> >>>>
> >>>> /*
> >>>>--- 90,100 ----
> >>>> }
> >>>>
> >>>> /* reverse this list */
> >>>>! msg->children.start = dbmail_list_reverse(msg->children.start);
> >>>>
> >>>> /* reverse header items */
> >>>>! msg->mimeheader.start = dbmail_list_reverse(msg->mimeheader.start);
> >>>>! msg->rfcheader.start = dbmail_list_reverse(msg->rfcheader.start);
> >>>> }
> >>>>
> >>>> /*
> >>>>
> >>>>
> >>>>Security on the internet is impossible without strong, open,
> >>>>and unhindered encryption.
> >>>>
> >>>>_______________________________________________
> >>>>Dbmail-dev mailing list
> >>>>Dbmail-dev@dbmail.org
> >>>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> >>>>
> >>>
> >>>
> >>>
> >>>--
> >>>
> >>>
> >>>
> >>>_______________________________________________
> >>>Dbmail-dev mailing list
> >>>Dbmail-dev@dbmail.org
> >>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> >>>
> >>
> >>Security on the internet is impossible without strong, open,
> >>and unhindered encryption.
> >>
> >>_______________________________________________
> >>Dbmail-dev mailing list
> >>Dbmail-dev@dbmail.org
> >>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> >>
> >
> >
> >
> >
> _______________________________________________
> Dbmail-dev mailing list
> Dbmail-dev@dbmail.org
> http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>



--
Re: forward and mysql patch [ In reply to ]
It's a pretty big dependency if we use it just for linked lists. I was
thinking more of using it for quite a lot things (The lexical scanner
stuff is also quite nice).

I've also found a library that we'd probably like to use, called GMime
(http://spruce.sourceforge.net/gmime/), which we can use a message
parser. The current message parsing code works, but even Roel, who wrote
it, cannot understand all parts of it. I don't like having code in our
tree that we do not understand, but have to fix when it breaks for some
reason.

GMime has a dependency on GLib.

In general, I always like to use as many functionality as possible from
libraries. Call it laziness ;)

Anyway, I guess this is something we should discuss a lot more, because
having a small number of dependencies also has its virtues of course.

Ilja


Aaron Stone wrote:

> Glib is a pretty big external dependency just for a linked list! I'm sure that
> they also have MD5 functions and all sorts of other goodies, but we're in good
> shape for now... IMHO, it's pretty nice that we only have to worry about
> having MySQL or PostgreSQL and optionally LDAP or libSieve to link with.
>
> Aaron
>
>
> Ilja Booij <ilja@ic-s.nl> said:
>
>
>>"Funny" indeed.
>>
>>I've changed the function to use the dbmail_list_reverse() name. I guess
>>this won't be a problem in the long run, because I think we should use a
>> library like glib (http://www.gtk.org) to provide functions/utilies
>>like linked lists.
>>
>>I'm still looking at the double header stuff.
>>
>>Ilja
>>
>>Aaron Stone wrote:
>>
>>
>>>Well, isn't that the funniest thing? My MySQL links just fine but indeed does
>>>have these headers. It's awfully nice of them to be providing a common list
>>>data structure for the world to use... but not using standard library naming
>>>conventions and barging into other people's namespaces is just rude!
>>>
>>>Aaron
>>>
>>>
>>>""Ed K."" <ed@hp.uab.edu> said:
>>>
>>>
>>>
>>>>I've installed the mysql from:
>>>>
>>>>
>>>
>>>
> http://www.mysql.com/get/Downloads/MySQL-4.1/mysql-standard-4.1.1-alpha-pc-linux-i686.tar.gz/from/pick
>
>>>>fyi: It is the binary install, with only static libraries.
>>>>
>>>
>>>>from the mysql source:
>>>
>>>>
>>>>>grep -i list_reverse /usr/local/mysql/include/*
>>>>
>>>>/usr/local/mysql/include/my_list.h:extern LIST *list_reverse(LIST *root);
>>>>
>>>>ed
>>>>
>>>>On Tue, 9 Mar 2004, Aaron Stone wrote:
>>>>
>>>>
>>>>
>>>>>What version of MySQL are you linking with? There were a couple of versions
>>>>>that were polluting the namespace, IIRC, as list_reverse is absolutely not a
>>>>>symbol that libmysql.so should be exporting.
>>>>>
>>>>>Looks like you're right about the double headers, but I'm not familiar enough
>>>>>with that code to really comment on it. Ilja's game on that one ;-)
>>>>>
>>>>>Aaron
>>>>>
>>>>>
>>>>>""Ed K."" <ed@hp.uab.edu> said:
>>>>>
>>>>>
>>>>>
>>>>>>I have been tracking down a forward problem, see thread starting here:
>>>>>>http://mailman.fastxs.net/pipermail/dbmail/2004-March/004366.html
>>>>>>
>>>>>>Anyway I have forwarding working now, but I don't know if I've missed
>>>
>>>something.
>>>
>>>
>>>>>>Also, Here is a patch to allow for linking against the mysql server. I don't
>>>>>
>>>>>know why
>>>>>
>>>>>
>>>>>>this wasn't fixed in rc3?
>>>>>>
>>>>>>So, my question is: Why was the header put in the message in forward.c and
>>>>>
>>>>>in db.c?
>>>>>
>>>>>
>>>>>>removing from forward.c allows for mail to forwaord properly without
>>>>>
>>>>>duplicate headers.
>>>>>
>>>>>
>>>>>>ed
>>>>>>
>>>>>>
>>>>>>diff -c -r dbmail-2.0rc3/forward.c dbmail-2.0rc3-ed/forward.c
>>>>>>*** dbmail-2.0rc3/forward.c 2004-03-03 04:30:07.000000000 -0500
>>>>>>--- dbmail-2.0rc3-ed/forward.c 2004-03-08 15:49:45.000000000 -0500
>>>>>>***************
>>>>>>*** 128,134 ****
>>>>>> }
>>>>>>
>>>>>> /* first send header if this is a direct pipe through */
>>>>>>! fprintf (pipe, "%s", header);
>>>>>> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
>>>>>>
>>>>>> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
>>>>>
>>>>>forward pipe", msgidnr);
>>>>>
>>>>>
>>>>>>--- 128,134 ----
>>>>>> }
>>>>>>
>>>>>> /* first send header if this is a direct pipe through */
>>>>>>! //fprintf (pipe, "%s", header);
>>>>>> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
>>>>>>
>>>>>> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
>>>>>
>>>>>forward pipe", msgidnr);
>>>>>
>>>>>
>>>>>>diff -c -r dbmail-2.0rc3/imapcommands.c dbmail-2.0rc3-ed/imapcommands.c
>>>>>>*** dbmail-2.0rc3/imapcommands.c 2004-01-30 11:24:35.000000000 -0500
>>>>>>--- dbmail-2.0rc3-ed/imapcommands.c 2004-03-07 12:08:42.000000000 -0500
>>>>>>***************
>>>>>>*** 2047,2053 ****
>>>>>> }
>>>>>> }
>>>>>>
>>>>>>! fetch_list.start = list_reverse(fetch_list.start);
>>>>>>
>>>>>> /* now fetch results for each msg */
>>>>>> endptr = args[0];
>>>>>>--- 2047,2053 ----
>>>>>> }
>>>>>> }
>>>>>>
>>>>>>! fetch_list.start = dbmail_list_reverse(fetch_list.start);
>>>>>>
>>>>>> /* now fetch results for each msg */
>>>>>> endptr = args[0];
>>>>>>diff -c -r dbmail-2.0rc3/list.c dbmail-2.0rc3-ed/list.c
>>>>>>*** dbmail-2.0rc3/list.c 2004-01-07 10:00:16.000000000 -0500
>>>>>>--- dbmail-2.0rc3-ed/list.c 2004-03-07 12:10:32.000000000 -0500
>>>>>>***************
>>>>>>*** 65,71 ****
>>>>>> *
>>>>>> * reverse the order of a linked list
>>>>>> */
>>>>>>! struct element* list_reverse(struct element *start)
>>>>>> {
>>>>>> struct element *newstart;
>>>>>>
>>>>>>--- 65,71 ----
>>>>>> *
>>>>>> * reverse the order of a linked list
>>>>>> */
>>>>>>! struct element* dbmail_list_reverse(struct element *start)
>>>>>> {
>>>>>> struct element *newstart;
>>>>>>
>>>>>>***************
>>>>>>*** 75,81 ****
>>>>>> if (!start->nextnode)
>>>>>> return start; /* nothing to reverse */
>>>>>>
>>>>>>! newstart = list_reverse(start->nextnode); /* reverse rest of list */
>>>>>> start->nextnode->nextnode = start;
>>>>>>
>>>>>> start->nextnode = NULL; /* terminate list */
>>>>>>--- 75,81 ----
>>>>>> if (!start->nextnode)
>>>>>> return start; /* nothing to reverse */
>>>>>>
>>>>>>! newstart = dbmail_list_reverse(start->nextnode); /* reverse rest of
>>>
>>>list */
>>>
>>>
>>>>>> start->nextnode->nextnode = start;
>>>>>>
>>>>>> start->nextnode = NULL; /* terminate list */
>>>>>>diff -c -r dbmail-2.0rc3/list.h dbmail-2.0rc3-ed/list.h
>>>>>>*** dbmail-2.0rc3/list.h 2004-01-07 10:00:16.000000000 -0500
>>>>>>--- dbmail-2.0rc3-ed/list.h 2004-03-07 12:09:18.000000000 -0500
>>>>>>***************
>>>>>>*** 59,64 ****
>>>>>> long list_totalnodes(struct list *tlist);
>>>>>> void list_showlist(struct list *tlist);
>>>>>> void list_init(struct list *tlist);
>>>>>>! struct element* list_reverse(struct element *start);
>>>>>>
>>>>>> #endif
>>>>>>--- 59,64 ----
>>>>>> long list_totalnodes(struct list *tlist);
>>>>>> void list_showlist(struct list *tlist);
>>>>>> void list_init(struct list *tlist);
>>>>>>! struct element* dbmail_list_reverse(struct element *start);
>>>>>>
>>>>>> #endif
>>>>>>diff -c -r dbmail-2.0rc3/lmtp.c dbmail-2.0rc3-ed/lmtp.c
>>>>>>*** dbmail-2.0rc3/lmtp.c 2004-03-05 03:10:12.000000000 -0500
>>>>>>--- dbmail-2.0rc3-ed/lmtp.c 2004-03-07 12:09:29.000000000 -0500
>>>>>>***************
>>>>>>*** 532,538 ****
>>>>>> struct element *element;
>>>>>>
>>>>>> /* The replies MUST be in the order received */
>>>>>>! rcpt.start = list_reverse(rcpt.start);
>>>>>>
>>>>>> /* Resolve the addresses into deliverable / non-deliverable
>>>>>
>>>>>form. */
>>>>>
>>>>>
>>>>>> if (dsnuser_resolve_list(&rcpt) == -1)
>>>>>>--- 532,538 ----
>>>>>> struct element *element;
>>>>>>
>>>>>> /* The replies MUST be in the order received */
>>>>>>! rcpt.start = dbmail_list_reverse(rcpt.start);
>>>>>>
>>>>>> /* Resolve the addresses into deliverable / non-deliverable
>>>>>
>>>>>form. */
>>>>>
>>>>>
>>>>>> if (dsnuser_resolve_list(&rcpt) == -1)
>>>>>>diff -c -r dbmail-2.0rc3/rfcmsg.c dbmail-2.0rc3-ed/rfcmsg.c
>>>>>>*** dbmail-2.0rc3/rfcmsg.c 2004-01-07 10:00:16.000000000 -0500
>>>>>>--- dbmail-2.0rc3-ed/rfcmsg.c 2004-03-07 12:09:48.000000000 -0500
>>>>>>***************
>>>>>>*** 90,100 ****
>>>>>> }
>>>>>>
>>>>>> /* reverse this list */
>>>>>>! msg->children.start = list_reverse(msg->children.start);
>>>>>>
>>>>>> /* reverse header items */
>>>>>>! msg->mimeheader.start = list_reverse(msg->mimeheader.start);
>>>>>>! msg->rfcheader.start = list_reverse(msg->rfcheader.start);
>>>>>> }
>>>>>>
>>>>>> /*
>>>>>>--- 90,100 ----
>>>>>> }
>>>>>>
>>>>>> /* reverse this list */
>>>>>>! msg->children.start = dbmail_list_reverse(msg->children.start);
>>>>>>
>>>>>> /* reverse header items */
>>>>>>! msg->mimeheader.start = dbmail_list_reverse(msg->mimeheader.start);
>>>>>>! msg->rfcheader.start = dbmail_list_reverse(msg->rfcheader.start);
>>>>>> }
>>>>>>
>>>>>> /*
>>>>>>
>>>>>>
>>>>>>Security on the internet is impossible without strong, open,
>>>>>>and unhindered encryption.
>>>>>>
>>>>>>_______________________________________________
>>>>>>Dbmail-dev mailing list
>>>>>>Dbmail-dev@dbmail.org
>>>>>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>--
>>>>>
>>>>>
>>>>>
>>>>>_______________________________________________
>>>>>Dbmail-dev mailing list
>>>>>Dbmail-dev@dbmail.org
>>>>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>>>>
>>>>
>>>>Security on the internet is impossible without strong, open,
>>>>and unhindered encryption.
>>>>
>>>>_______________________________________________
>>>>Dbmail-dev mailing list
>>>>Dbmail-dev@dbmail.org
>>>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>>>
>>>
>>>
>>>
>>>
>>_______________________________________________
>>Dbmail-dev mailing list
>>Dbmail-dev@dbmail.org
>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>
>
>
>
>
Re: forward and mysql patch [ In reply to ]
Hi

Aaron Stone wrote:

> What version of MySQL are you linking with? There were a couple of versions
> that were polluting the namespace, IIRC, as list_reverse is absolutely not a
> symbol that libmysql.so should be exporting.
>
> Looks like you're right about the double headers, but I'm not familiar enough
> with that code to really comment on it. Ilja's game on that one ;-)
I've done some checking of the double header stuff. As it turns out, we
should only pipe the header to sendmail if there's no message in the
database that has to be sent. So, instead of never sending the header,
forward now checks if msgidnr = 0. If it is, it sends only the header,
otherwise it only sends the message from the database (including the
header).

Problem solved, I guess.

Ilja

>
> Aaron
>
>
> ""Ed K."" <ed@hp.uab.edu> said:
>
>
>>I have been tracking down a forward problem, see thread starting here:
>>http://mailman.fastxs.net/pipermail/dbmail/2004-March/004366.html
>>
>>Anyway I have forwarding working now, but I don't know if I've missed something.
>>
>>Also, Here is a patch to allow for linking against the mysql server. I don't
>
> know why
>
>>this wasn't fixed in rc3?
>>
>>So, my question is: Why was the header put in the message in forward.c and
>
> in db.c?
>
>>removing from forward.c allows for mail to forwaord properly without
>
> duplicate headers.
>
>>ed
>>
>>
>>diff -c -r dbmail-2.0rc3/forward.c dbmail-2.0rc3-ed/forward.c
>>*** dbmail-2.0rc3/forward.c 2004-03-03 04:30:07.000000000 -0500
>>--- dbmail-2.0rc3-ed/forward.c 2004-03-08 15:49:45.000000000 -0500
>>***************
>>*** 128,134 ****
>> }
>>
>> /* first send header if this is a direct pipe through */
>>! fprintf (pipe, "%s", header);
>> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
>>
>> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
>
> forward pipe", msgidnr);
>
>>--- 128,134 ----
>> }
>>
>> /* first send header if this is a direct pipe through */
>>! //fprintf (pipe, "%s", header);
>> trace(TRACE_DEBUG, "forward(): wrote header to pipe");
>>
>> trace(TRACE_INFO, "forward(): sending message id number [%llu] to
>
> forward pipe", msgidnr);
>
>>diff -c -r dbmail-2.0rc3/imapcommands.c dbmail-2.0rc3-ed/imapcommands.c
>>*** dbmail-2.0rc3/imapcommands.c 2004-01-30 11:24:35.000000000 -0500
>>--- dbmail-2.0rc3-ed/imapcommands.c 2004-03-07 12:08:42.000000000 -0500
>>***************
>>*** 2047,2053 ****
>> }
>> }
>>
>>! fetch_list.start = list_reverse(fetch_list.start);
>>
>> /* now fetch results for each msg */
>> endptr = args[0];
>>--- 2047,2053 ----
>> }
>> }
>>
>>! fetch_list.start = dbmail_list_reverse(fetch_list.start);
>>
>> /* now fetch results for each msg */
>> endptr = args[0];
>>diff -c -r dbmail-2.0rc3/list.c dbmail-2.0rc3-ed/list.c
>>*** dbmail-2.0rc3/list.c 2004-01-07 10:00:16.000000000 -0500
>>--- dbmail-2.0rc3-ed/list.c 2004-03-07 12:10:32.000000000 -0500
>>***************
>>*** 65,71 ****
>> *
>> * reverse the order of a linked list
>> */
>>! struct element* list_reverse(struct element *start)
>> {
>> struct element *newstart;
>>
>>--- 65,71 ----
>> *
>> * reverse the order of a linked list
>> */
>>! struct element* dbmail_list_reverse(struct element *start)
>> {
>> struct element *newstart;
>>
>>***************
>>*** 75,81 ****
>> if (!start->nextnode)
>> return start; /* nothing to reverse */
>>
>>! newstart = list_reverse(start->nextnode); /* reverse rest of list */
>> start->nextnode->nextnode = start;
>>
>> start->nextnode = NULL; /* terminate list */
>>--- 75,81 ----
>> if (!start->nextnode)
>> return start; /* nothing to reverse */
>>
>>! newstart = dbmail_list_reverse(start->nextnode); /* reverse rest of list */
>> start->nextnode->nextnode = start;
>>
>> start->nextnode = NULL; /* terminate list */
>>diff -c -r dbmail-2.0rc3/list.h dbmail-2.0rc3-ed/list.h
>>*** dbmail-2.0rc3/list.h 2004-01-07 10:00:16.000000000 -0500
>>--- dbmail-2.0rc3-ed/list.h 2004-03-07 12:09:18.000000000 -0500
>>***************
>>*** 59,64 ****
>> long list_totalnodes(struct list *tlist);
>> void list_showlist(struct list *tlist);
>> void list_init(struct list *tlist);
>>! struct element* list_reverse(struct element *start);
>>
>> #endif
>>--- 59,64 ----
>> long list_totalnodes(struct list *tlist);
>> void list_showlist(struct list *tlist);
>> void list_init(struct list *tlist);
>>! struct element* dbmail_list_reverse(struct element *start);
>>
>> #endif
>>diff -c -r dbmail-2.0rc3/lmtp.c dbmail-2.0rc3-ed/lmtp.c
>>*** dbmail-2.0rc3/lmtp.c 2004-03-05 03:10:12.000000000 -0500
>>--- dbmail-2.0rc3-ed/lmtp.c 2004-03-07 12:09:29.000000000 -0500
>>***************
>>*** 532,538 ****
>> struct element *element;
>>
>> /* The replies MUST be in the order received */
>>! rcpt.start = list_reverse(rcpt.start);
>>
>> /* Resolve the addresses into deliverable / non-deliverable
>
> form. */
>
>> if (dsnuser_resolve_list(&rcpt) == -1)
>>--- 532,538 ----
>> struct element *element;
>>
>> /* The replies MUST be in the order received */
>>! rcpt.start = dbmail_list_reverse(rcpt.start);
>>
>> /* Resolve the addresses into deliverable / non-deliverable
>
> form. */
>
>> if (dsnuser_resolve_list(&rcpt) == -1)
>>diff -c -r dbmail-2.0rc3/rfcmsg.c dbmail-2.0rc3-ed/rfcmsg.c
>>*** dbmail-2.0rc3/rfcmsg.c 2004-01-07 10:00:16.000000000 -0500
>>--- dbmail-2.0rc3-ed/rfcmsg.c 2004-03-07 12:09:48.000000000 -0500
>>***************
>>*** 90,100 ****
>> }
>>
>> /* reverse this list */
>>! msg->children.start = list_reverse(msg->children.start);
>>
>> /* reverse header items */
>>! msg->mimeheader.start = list_reverse(msg->mimeheader.start);
>>! msg->rfcheader.start = list_reverse(msg->rfcheader.start);
>> }
>>
>> /*
>>--- 90,100 ----
>> }
>>
>> /* reverse this list */
>>! msg->children.start = dbmail_list_reverse(msg->children.start);
>>
>> /* reverse header items */
>>! msg->mimeheader.start = dbmail_list_reverse(msg->mimeheader.start);
>>! msg->rfcheader.start = dbmail_list_reverse(msg->rfcheader.start);
>> }
>>
>> /*
>>
>>
>>Security on the internet is impossible without strong, open,
>>and unhindered encryption.
>>
>>_______________________________________________
>>Dbmail-dev mailing list
>>Dbmail-dev@dbmail.org
>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>
>
>
>
>