chiark / gitweb /
d9fa156900b6cb3a426fc16e5f8ea4becc10fd31
[inn-innduct.git] / genid.c
1 /*  $Id: genid.c 6135 2003-01-19 01:15:40Z rra $
2 **
3 **  Generate a message ID.
4 */
5
6 #include "config.h"
7 #include "clibrary.h"
8
9 #include "inn/innconf.h"
10 #include "libinn.h"
11
12 /* Scale time back a bit, for shorter Message-ID's. */
13 #define OFFSET  673416000L
14
15 char *
16 GenerateMessageID(char *domain)
17 {
18     static char         buff[SMBUF];
19     static int          count;
20     char                *p;
21     char                sec32[10];
22     char                pid32[10];
23     TIMEINFO            Now;
24
25     if (GetTimeInfo(&Now) < 0)
26         return NULL;
27     Radix32(Now.time - OFFSET, sec32);
28     Radix32(getpid(), pid32);
29     if ((domain != NULL && innconf->domain == NULL) ||
30         (domain != NULL && innconf->domain != NULL
31          && strcmp(domain, innconf->domain) != 0)) {
32         p = domain;
33     } else {
34         if ((p = GetFQDN(domain)) == NULL)
35             return NULL;
36     }
37     snprintf(buff, sizeof(buff), "<%s$%s$%d@%s>", sec32, pid32, ++count, p);
38     return buff;
39 }