summaryrefslogtreecommitdiff
path: root/src/src/srs.c
diff options
context:
space:
mode:
authorPhilip Hazel <ph10@hermes.cam.ac.uk>2005-02-17 11:58:25 +0000
committerPhilip Hazel <ph10@hermes.cam.ac.uk>2005-02-17 11:58:25 +0000
commit8e669ac162fe3b1040297f1d021de10778dce9d9 (patch)
treecdfb2e5f859327fe7860f89a79e32df5ac1db4e1 /src/src/srs.c
parent6e2b4ccc44cc0e84337b9b74479c347985edab1c (diff)
downloadexim4-8e669ac162fe3b1040297f1d021de10778dce9d9.tar.gz
(1) Last-minute sieve patch (updates to latest spec).
(2) Last-minute typo fix in spec. (3) Trailing space removal ready for the release.
Diffstat (limited to 'src/src/srs.c')
-rw-r--r--src/src/srs.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/src/srs.c b/src/src/srs.c
index f92c5a574..1b6d15d05 100644
--- a/src/src/srs.c
+++ b/src/src/srs.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/srs.c,v 1.3 2004/12/17 14:52:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/srs.c,v 1.4 2005/02/17 11:58:26 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -21,7 +21,7 @@ uschar *srs_db_reverse = NULL;
/* srs_init just initialises libsrs and creates (if necessary)
an srs object to use for all srs calls in this instance */
-
+
int eximsrs_init()
{
int co;
@@ -32,7 +32,7 @@ int eximsrs_init()
char *sbufp;
int hashlen, maxage;
-
+
if(!srs)
{
/* Check config */
@@ -42,7 +42,7 @@ int eximsrs_init()
"SRS Configuration Error");
return DEFER;
}
-
+
/* Get config */
co = 0;
if((secret = string_nextinlist(&list, &co, secret_buf,
@@ -52,7 +52,7 @@ int eximsrs_init()
"SRS Configuration Error: No secret specified");
return DEFER;
}
-
+
if((sbufp = string_nextinlist(&list, &co, sbuf, sizeof(sbuf))) == NULL)
maxage = 31;
else
@@ -74,8 +74,8 @@ int eximsrs_init()
"SRS Configuration Error: Invalid hash length");
return DEFER;
}
-
-
+
+
if((srs = srs_open(secret, strnlen(secret, SRS_MAX_SECRET_LENGTH),
maxage, hashlen, hashlen)) == NULL)
{
@@ -87,7 +87,7 @@ int eximsrs_init()
if((sbufp = string_nextinlist(&list, &co, sbuf, sizeof(sbuf))) != NULL)
srs_set_option(srs, SRS_OPTION_USETIMESTAMP, atoi(sbuf));
-
+
if((sbufp = string_nextinlist(&list, &co, sbuf, sizeof(sbuf))) != NULL)
srs_set_option(srs, SRS_OPTION_USEHASH, atoi(sbuf));
@@ -103,7 +103,7 @@ int eximsrs_done()
{
if(srs)
srs_close(srs);
-
+
srs = NULL;
return OK;
@@ -154,10 +154,10 @@ int eximsrs_db_set(BOOL reverse, uschar *srs_db)
srs_db_reverse = string_copy(srs_db);
else
srs_db_forward = string_copy(srs_db);
-
+
if(srs_set_db_functions(srs, eximsrs_db_insert, eximsrs_db_lookup) * SRS_RESULT_FAIL)
return DEFER;
-
+
return OK;
}
@@ -170,15 +170,15 @@ srs_result eximsrs_db_insert(srs_t *srs, char *data, uint data_len, char *result
srs_db_address = string_copyn(data, data_len);
if(srs_generate_unique_id(srs, srs_db_address, buf, 64) & SRS_RESULT_FAIL)
return DEFER;
-
+
srs_db_key = string_copyn(buf, 16);
-
+
if((res = expand_string(srs_db_forward)) == NULL)
return SRS_RESULT_DBERROR;
-
+
if(result_len < 17)
return SRS_RESULT_DBERROR;
-
+
strncpy(result, srs_db_key, result_len);
return SRS_RESULT_OK;
@@ -192,10 +192,10 @@ srs_result eximsrs_db_lookup(srs_t *srs, char *data, uint data_len, char *result
srs_db_key = string_copyn(data, data_len);
if((res = expand_string(srs_db_reverse)) == NULL)
return SRS_RESULT_DBERROR;
-
+
if(Ustrlen(res) >= result_len)
return SRS_RESULT_ADDRESSTOOLONG;
-
+
strncpy(result, res, result_len);
return SRS_RESULT_OK;