ot = get_header(orig, "To");
of = get_header(orig, "From");
- if (!strstr(ot, "tag=")) {
+ /* Add tag *unless* this is a CANCEL, in which case we need to send it exactly
+ as our original request, including tag (or presumably lack thereof) */
+ if (!strstr(ot, "tag=") && strcasecmp(msg, "CANCEL")) {
/* Add the proper tag if we don't have it already. If they have specified
their tag, use it. Otherwise, use our own tag */
- if (strlen(p->theirtag))
+ if (!p->outgoing && strlen(p->theirtag))
snprintf(newto, sizeof(newto), "%s;tag=%s", ot, p->theirtag);
- else
+ else if (p->outgoing)
snprintf(newto, sizeof(newto), "%s;tag=%08x", ot, p->tag);
+ else
+ snprintf(newto, sizeof(newto), "%s", ot);
ot = newto;
}