summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2017-08-16 15:44:01 +0200
committermanuel <manuel@mausz.at>2017-08-16 15:44:01 +0200
commit08fb6b6e2d13be7b24bbf993bdc99c56e16ca3c5 (patch)
tree7641686730598953f5dc7a79219a290fd034ba75
parent59180d2a12cbd4cef4a45d0eedc63818ae1d14e3 (diff)
downloadqmail-08fb6b6e2d13be7b24bbf993bdc99c56e16ca3c5.tar.gz
qmail-08fb6b6e2d13be7b24bbf993bdc99c56e16ca3c5.tar.bz2
qmail-08fb6b6e2d13be7b24bbf993bdc99c56e16ca3c5.zip
realrcptto: extract username from dovecot-rda calls
-rw-r--r--realrcptto.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/realrcptto.c b/realrcptto.c
index b419847..866bd57 100644
--- a/realrcptto.c
+++ b/realrcptto.c
@@ -201,9 +201,28 @@ int depth;
201 case '#': 201 case '#':
202 case '.': 202 case '.':
203 case '/': 203 case '/':
204 case '|':
205 case '+': 204 case '+':
206 break; 205 break;
206 case '|':
207 ++i;
208 char *u, *u2;
209 if ((u = strstr(cmds.s + i, "dovecot-rda ")) != NULL
210 && (u = strstr(u + strlen("dovecot-rda "), "-a")) != NULL)
211 {
212 u += strlen("-a");
213 while (*u && (*u == ' ' || *u == '"'))
214 ++u;
215 u2 = u;
216 while (*u2 && *u2 != ' ' && *u2 != '"')
217 ++u2;
218 if (u != u2)
219 {
220 *u2 = '\0';
221 count++;
222 username = u;
223 }
224 }
225 break;
207 case '&': 226 case '&':
208 ++i; 227 ++i;
209 default: 228 default: