Patch: Elm ME+ 2.5 PLalpha48 -> Elm ME+ 2.5 PLalpha49 [7/9] (2/5)
From
Kari Hurtta@21:1/5 to
All on Thu Jan 3 16:44:26 2019
[continued from previous message]
+ "rewrite_env_from_domain: No address, domain %s not used, rewriting canceled\n",
+ new_domain));
+ ret = 0;
+
+ goto fail;
+ }
+
+ if (env_from_domain &&
+ 0 == strcmp(env_from_domain,new_domain)) {
+
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain: Rewriting not needed, canceled\n"));
+
+ ret = 0;
+
+ goto fail;
+ }
+
+ if (env_from_addr) {
+ const char * value1 = env_from_addr;
+ char * buffer1 = NULL;
+ char * new_address = NULL;
+
+ const char * p;
+
+ if ('<' == env_from_addr[0]) {
+ int l = strlen(env_from_addr);
+
+ if (l < 2 || '>' != env_from_addr[l-1]) {
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain: Bad address, domain %s not used, rewriting canceled\n",
+ new_domain));
+ ret = 0;
+ goto fail2;
+ }
+ buffer1 = safe_malloc(l);
+ if (l > 2) {
+ memcpy(buffer1,env_from_addr+1,l-2);
+ }
+ buffer1[l-2] = '\0';
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain: stripping address %s => %s\n",
+ env_from_addr,buffer1));
+ value1 = buffer1;
+ }
+
+ p = qstrpbrk_c(value1,"@");
+ if (p) {
+ if (p > value1) {
+ int len = p - value1;
+
+ new_address =
+ elm_message(FRM("%.*s@%s"),
+ len,value1,new_domain);
+
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain: setting domain, address %s => %s\n",
+ value1,new_address));
+
+ } else {
+ /* If first character is @ then this is routed address,
+ do not change
+ */
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain: Unsupported address, domain %s not used, rewriting canceled\n",
+ new_domain));
+ ret = 0;
+ goto fail2;
+ }
+
+ } else {
+ new_address =
+ elm_message(FRM("%s@%s"),
+ value1,new_domain);
+
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain: adding domain, address %s => %s\n",
+ value1,new_address));
+ }
+
+ if (new_address) {
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain: changing address %s => %s\n",
+ env_from_addr,new_address));
+
+ ret = mailer_env_from_change(env_from,new_address);
+ if (ret) {
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain: return path address changed\n"));
+ }
+ }
+
+ fail2:
+ if (buffer1) {
+ free(buffer1);
+ buffer1 = NULL;
+ }
+
+ if (new_address) {
+ free(new_address);
+ new_address = NULL;
+ }
+ }
+
+ fail:
+
+ env_from_addr = mailer_env_from_value(env_from,NULL);
+ DPRINT(Debug,8,(&Debug,
+ "rewrite_env_from_domain=%d",
+ ret));
+ if (env_from_addr) {
+ DPRINT(Debug,8,(&Debug,"; return path address=%s",
+ env_from_addr));
+ }
+ DPRINT(Debug,8,(&Debug,"\n"));
+
+ return ret;
+ }
+
static enum verify_trans_result
verify_transmission P_((char *filename,
int already_has_text,
***************
*** 78,93 ****
struct Attachments *attachments,
charset_t file_set,
struct mailer_info *mailer_info,
! charset_t hdr_charset,
! struct MailboxView *mailbox,
! int encode_hdr,
struct AliasView *aview,
struct menu_context *page,
struct menu_context *prompt_area,
struct header_rec *parent_message,
const struct remote_server * remote_server,
int *PGP_status,
! struct elm_commands *snd_cmds));
static void mail_sent P_((union any_fd fd, char * title, struct run_state *rs,
int ret, int exit_stat));
--- 282,299 ----
struct Attachments *attachments,
charset_t file_set,
struct mailer_info *mailer_info,
! mime_send_t *mime_info,
! struct MailboxView *mailbox,
struct AliasView *aview,
struct menu_context *page,
struct menu_context *prompt_area,
struct header_rec *parent_message,
const struct remote_server * remote_server,
int *PGP_status,
! struct elm_commands *snd_cmds,
! enum rp_classify_domain * env_from_domain_class_p,
! struct classify_domain_result * env_from_cdr
! ));
static void mail_sent P_((union any_fd fd, char * title, struct run_state *rs,
int ret, int exit_stat));
***************
*** 1263,1274 ****
static void add_self_addr P_((struct expanded_address * cc_or_bcc,
struct address * usraddr,
struct mailer_info * mailer_info,
! struct expanded_address * from));
! static void add_self_addr(cc_or_bcc,usraddr,mailer_info,fr