Fossil SCM
Clean up the interface to internal smtp_session_new() routine.
Commit
3fc9b90587ea4885bff869fb87a1cf9013a9c16a343172284b42f3623697c398
Parent
4859a911f5b80cf…
2 files changed
+1
-1
+24
-18
+1
-1
| --- src/alerts.c | ||
| +++ src/alerts.c | ||
| @@ -641,11 +641,11 @@ | ||
| 641 | 641 | emailerGetSetting(p, &zRelay, "email-send-relayhost"); |
| 642 | 642 | if( zRelay ){ |
| 643 | 643 | u32 smtpFlags = SMTP_DIRECT; |
| 644 | 644 | if( mFlags & ALERT_TRACE ) smtpFlags |= SMTP_TRACE_STDOUT; |
| 645 | 645 | p->pSmtp = smtp_session_new(domain_of_addr(p->zFrom), zRelay, |
| 646 | - smtpFlags); | |
| 646 | + smtpFlags, 0); | |
| 647 | 647 | smtp_client_startup(p->pSmtp); |
| 648 | 648 | } |
| 649 | 649 | } |
| 650 | 650 | return p; |
| 651 | 651 | } |
| 652 | 652 |
| --- src/alerts.c | |
| +++ src/alerts.c | |
| @@ -641,11 +641,11 @@ | |
| 641 | emailerGetSetting(p, &zRelay, "email-send-relayhost"); |
| 642 | if( zRelay ){ |
| 643 | u32 smtpFlags = SMTP_DIRECT; |
| 644 | if( mFlags & ALERT_TRACE ) smtpFlags |= SMTP_TRACE_STDOUT; |
| 645 | p->pSmtp = smtp_session_new(domain_of_addr(p->zFrom), zRelay, |
| 646 | smtpFlags); |
| 647 | smtp_client_startup(p->pSmtp); |
| 648 | } |
| 649 | } |
| 650 | return p; |
| 651 | } |
| 652 |
| --- src/alerts.c | |
| +++ src/alerts.c | |
| @@ -641,11 +641,11 @@ | |
| 641 | emailerGetSetting(p, &zRelay, "email-send-relayhost"); |
| 642 | if( zRelay ){ |
| 643 | u32 smtpFlags = SMTP_DIRECT; |
| 644 | if( mFlags & ALERT_TRACE ) smtpFlags |= SMTP_TRACE_STDOUT; |
| 645 | p->pSmtp = smtp_session_new(domain_of_addr(p->zFrom), zRelay, |
| 646 | smtpFlags, 0); |
| 647 | smtp_client_startup(p->pSmtp); |
| 648 | } |
| 649 | } |
| 650 | return p; |
| 651 | } |
| 652 |
+24
-18
| --- src/smtp.c | ||
| +++ src/smtp.c | ||
| @@ -184,26 +184,23 @@ | ||
| 184 | 184 | } |
| 185 | 185 | |
| 186 | 186 | /* |
| 187 | 187 | ** Allocate a new SmtpSession object. |
| 188 | 188 | ** |
| 189 | -** Both zFrom and zDest must be specified. | |
| 190 | -** | |
| 191 | -** The ... arguments are in this order: | |
| 189 | +** Both zFrom and zDest must be specified. smtpFlags may not contain | |
| 190 | +** either SMTP_TRACE_FILE or SMTP_TRACE_BLOB as those settings must be | |
| 191 | +** added by a subsequent call to smtp_session_config(). | |
| 192 | 192 | ** |
| 193 | -** SMTP_PORT: int | |
| 194 | -** SMTP_TRACE_FILE: FILE* | |
| 195 | -** SMTP_TRACE_BLOB: Blob* | |
| 193 | +** The iPort option is ignored unless SMTP_PORT is set in smtpFlags | |
| 196 | 194 | */ |
| 197 | 195 | SmtpSession *smtp_session_new( |
| 198 | 196 | const char *zFrom, /* Domain for the client */ |
| 199 | 197 | const char *zDest, /* Domain of the server */ |
| 200 | 198 | u32 smtpFlags, /* Flags */ |
| 201 | - ... /* Arguments depending on the flags */ | |
| 199 | + int iPort /* TCP port if the SMTP_PORT flags is present */ | |
| 202 | 200 | ){ |
| 203 | 201 | SmtpSession *p; |
| 204 | - va_list ap; | |
| 205 | 202 | UrlData url; |
| 206 | 203 | |
| 207 | 204 | p = fossil_malloc( sizeof(*p) ); |
| 208 | 205 | memset(p, 0, sizeof(*p)); |
| 209 | 206 | p->zFrom = zFrom; |
| @@ -210,21 +207,13 @@ | ||
| 210 | 207 | p->zDest = zDest; |
| 211 | 208 | p->smtpFlags = smtpFlags; |
| 212 | 209 | memset(&url, 0, sizeof(url)); |
| 213 | 210 | url.port = 25; |
| 214 | 211 | blob_init(&p->inbuf, 0, 0); |
| 215 | - va_start(ap, smtpFlags); | |
| 216 | 212 | if( smtpFlags & SMTP_PORT ){ |
| 217 | - url.port = va_arg(ap, int); | |
| 218 | - } | |
| 219 | - if( smtpFlags & SMTP_TRACE_FILE ){ | |
| 220 | - p->logFile = va_arg(ap, FILE*); | |
| 221 | - } | |
| 222 | - if( smtpFlags & SMTP_TRACE_BLOB ){ | |
| 223 | - p->pTranscript = va_arg(ap, Blob*); | |
| 224 | - } | |
| 225 | - va_end(ap); | |
| 213 | + url.port = iPort; | |
| 214 | + } | |
| 226 | 215 | if( (smtpFlags & SMTP_DIRECT)!=0 ){ |
| 227 | 216 | int i; |
| 228 | 217 | p->zHostname = fossil_strdup(zDest); |
| 229 | 218 | for(i=0; p->zHostname[i] && p->zHostname[i]!=':'; i++){} |
| 230 | 219 | if( p->zHostname[i]==':' ){ |
| @@ -246,10 +235,27 @@ | ||
| 246 | 235 | p->zErr = socket_errmsg(); |
| 247 | 236 | socket_close(); |
| 248 | 237 | } |
| 249 | 238 | return p; |
| 250 | 239 | } |
| 240 | + | |
| 241 | +/* | |
| 242 | +** Configure debugging options on SmtpSession. Add all bits in | |
| 243 | +** smtpFlags to the settings. The following bits can be added: | |
| 244 | +** | |
| 245 | +** SMTP_FLAG_FILE: In which case pArg is the FILE* pointer to use | |
| 246 | +** | |
| 247 | +** SMTP_FLAG_BLOB: In which case pArg is the Blob* poitner to use. | |
| 248 | +*/ | |
| 249 | +void smtp_session_config(SmtpSession *p, u32 smtpFlags, void *pArg){ | |
| 250 | + p->smtpFlags = smtpFlags; | |
| 251 | + if( smtpFlags & SMTP_TRACE_FILE ){ | |
| 252 | + p->logFile = (FILE*)pArg; | |
| 253 | + }else if( smtpFlags & SMTP_TRACE_BLOB ){ | |
| 254 | + p->pTranscript = (Blob*)pArg; | |
| 255 | + } | |
| 256 | +} | |
| 251 | 257 | |
| 252 | 258 | /* |
| 253 | 259 | ** Send a single line of output the SMTP client to the server. |
| 254 | 260 | */ |
| 255 | 261 | static void smtp_send_line(SmtpSession *p, const char *zFormat, ...){ |
| 256 | 262 |
| --- src/smtp.c | |
| +++ src/smtp.c | |
| @@ -184,26 +184,23 @@ | |
| 184 | } |
| 185 | |
| 186 | /* |
| 187 | ** Allocate a new SmtpSession object. |
| 188 | ** |
| 189 | ** Both zFrom and zDest must be specified. |
| 190 | ** |
| 191 | ** The ... arguments are in this order: |
| 192 | ** |
| 193 | ** SMTP_PORT: int |
| 194 | ** SMTP_TRACE_FILE: FILE* |
| 195 | ** SMTP_TRACE_BLOB: Blob* |
| 196 | */ |
| 197 | SmtpSession *smtp_session_new( |
| 198 | const char *zFrom, /* Domain for the client */ |
| 199 | const char *zDest, /* Domain of the server */ |
| 200 | u32 smtpFlags, /* Flags */ |
| 201 | ... /* Arguments depending on the flags */ |
| 202 | ){ |
| 203 | SmtpSession *p; |
| 204 | va_list ap; |
| 205 | UrlData url; |
| 206 | |
| 207 | p = fossil_malloc( sizeof(*p) ); |
| 208 | memset(p, 0, sizeof(*p)); |
| 209 | p->zFrom = zFrom; |
| @@ -210,21 +207,13 @@ | |
| 210 | p->zDest = zDest; |
| 211 | p->smtpFlags = smtpFlags; |
| 212 | memset(&url, 0, sizeof(url)); |
| 213 | url.port = 25; |
| 214 | blob_init(&p->inbuf, 0, 0); |
| 215 | va_start(ap, smtpFlags); |
| 216 | if( smtpFlags & SMTP_PORT ){ |
| 217 | url.port = va_arg(ap, int); |
| 218 | } |
| 219 | if( smtpFlags & SMTP_TRACE_FILE ){ |
| 220 | p->logFile = va_arg(ap, FILE*); |
| 221 | } |
| 222 | if( smtpFlags & SMTP_TRACE_BLOB ){ |
| 223 | p->pTranscript = va_arg(ap, Blob*); |
| 224 | } |
| 225 | va_end(ap); |
| 226 | if( (smtpFlags & SMTP_DIRECT)!=0 ){ |
| 227 | int i; |
| 228 | p->zHostname = fossil_strdup(zDest); |
| 229 | for(i=0; p->zHostname[i] && p->zHostname[i]!=':'; i++){} |
| 230 | if( p->zHostname[i]==':' ){ |
| @@ -246,10 +235,27 @@ | |
| 246 | p->zErr = socket_errmsg(); |
| 247 | socket_close(); |
| 248 | } |
| 249 | return p; |
| 250 | } |
| 251 | |
| 252 | /* |
| 253 | ** Send a single line of output the SMTP client to the server. |
| 254 | */ |
| 255 | static void smtp_send_line(SmtpSession *p, const char *zFormat, ...){ |
| 256 |
| --- src/smtp.c | |
| +++ src/smtp.c | |
| @@ -184,26 +184,23 @@ | |
| 184 | } |
| 185 | |
| 186 | /* |
| 187 | ** Allocate a new SmtpSession object. |
| 188 | ** |
| 189 | ** Both zFrom and zDest must be specified. smtpFlags may not contain |
| 190 | ** either SMTP_TRACE_FILE or SMTP_TRACE_BLOB as those settings must be |
| 191 | ** added by a subsequent call to smtp_session_config(). |
| 192 | ** |
| 193 | ** The iPort option is ignored unless SMTP_PORT is set in smtpFlags |
| 194 | */ |
| 195 | SmtpSession *smtp_session_new( |
| 196 | const char *zFrom, /* Domain for the client */ |
| 197 | const char *zDest, /* Domain of the server */ |
| 198 | u32 smtpFlags, /* Flags */ |
| 199 | int iPort /* TCP port if the SMTP_PORT flags is present */ |
| 200 | ){ |
| 201 | SmtpSession *p; |
| 202 | UrlData url; |
| 203 | |
| 204 | p = fossil_malloc( sizeof(*p) ); |
| 205 | memset(p, 0, sizeof(*p)); |
| 206 | p->zFrom = zFrom; |
| @@ -210,21 +207,13 @@ | |
| 207 | p->zDest = zDest; |
| 208 | p->smtpFlags = smtpFlags; |
| 209 | memset(&url, 0, sizeof(url)); |
| 210 | url.port = 25; |
| 211 | blob_init(&p->inbuf, 0, 0); |
| 212 | if( smtpFlags & SMTP_PORT ){ |
| 213 | url.port = iPort; |
| 214 | } |
| 215 | if( (smtpFlags & SMTP_DIRECT)!=0 ){ |
| 216 | int i; |
| 217 | p->zHostname = fossil_strdup(zDest); |
| 218 | for(i=0; p->zHostname[i] && p->zHostname[i]!=':'; i++){} |
| 219 | if( p->zHostname[i]==':' ){ |
| @@ -246,10 +235,27 @@ | |
| 235 | p->zErr = socket_errmsg(); |
| 236 | socket_close(); |
| 237 | } |
| 238 | return p; |
| 239 | } |
| 240 | |
| 241 | /* |
| 242 | ** Configure debugging options on SmtpSession. Add all bits in |
| 243 | ** smtpFlags to the settings. The following bits can be added: |
| 244 | ** |
| 245 | ** SMTP_FLAG_FILE: In which case pArg is the FILE* pointer to use |
| 246 | ** |
| 247 | ** SMTP_FLAG_BLOB: In which case pArg is the Blob* poitner to use. |
| 248 | */ |
| 249 | void smtp_session_config(SmtpSession *p, u32 smtpFlags, void *pArg){ |
| 250 | p->smtpFlags = smtpFlags; |
| 251 | if( smtpFlags & SMTP_TRACE_FILE ){ |
| 252 | p->logFile = (FILE*)pArg; |
| 253 | }else if( smtpFlags & SMTP_TRACE_BLOB ){ |
| 254 | p->pTranscript = (Blob*)pArg; |
| 255 | } |
| 256 | } |
| 257 | |
| 258 | /* |
| 259 | ** Send a single line of output the SMTP client to the server. |
| 260 | */ |
| 261 | static void smtp_send_line(SmtpSession *p, const char *zFormat, ...){ |
| 262 |