masqmail
view src/libident/id_query.c @ 209:10da50168dab
replaced the MD5 implementation with the one of Solar Designer
Until now, the sample code of RFC 1321 was used. It had an ugly license.
Now we use the implementation of Solar Designer, which is in the Public Domain.
http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
author | meillo@marmaro.de |
---|---|
date | Sun, 18 Jul 2010 21:58:15 +0200 |
parents | 08114f7dcc23 |
children |
line source
1 /*
2 ** id_query.c Transmit a query to an IDENT server
3 **
4 ** Author: Peter Eriksson <pen@lysator.liu.se>
5 */
7 #ifdef NeXT3
8 # include <libc.h>
9 #endif
11 #include <stdio.h>
12 #include <errno.h>
13 #include <signal.h>
15 #ifdef HAVE_ANSIHEADERS
16 # include <stdlib.h>
17 # include <string.h>
18 # include <unistd.h>
19 #endif
21 #include <sys/types.h>
22 #include <sys/wait.h>
23 #include <sys/time.h>
25 #ifdef _AIX
26 # include <sys/select.h>
27 #endif
29 #ifdef _AIX
30 # include <sys/select.h>
31 #endif
32 #ifdef VMS
33 # include <sys/socket.h> /* for fd_set */
34 #endif
35 #define IN_LIBIDENT_SRC
36 #include "ident.h"
39 /*
40 int
41 id_query __P4(ident_t *, id, int, lport, int, fport, struct timeval *, timeout)
42 */
44 int
45 id_query __P((ident_t * id, int lport, int fport, __STRUCT_TIMEVAL_P timeout))
46 {
47 #ifdef SIGRETURNTYPE
48 SIGRETURNTYPE(*old_sig) ();
49 #else
50 void (*old_sig) __P((int));
51 #endif
52 int res;
53 char buf[80];
54 fd_set ws;
56 sprintf(buf, "%d , %d\r\n", lport, fport);
58 if (timeout) {
59 FD_ZERO(&ws);
60 FD_SET(id->fd, &ws);
62 #ifdef __hpux
63 if ((res = select(FD_SETSIZE, (int *) 0, (int *) &ws, (int *) 0, timeout)) < 0)
64 #else
65 if ((res = select(FD_SETSIZE, (fd_set *) 0, &ws, (fd_set *) 0, timeout)) < 0)
66 #endif
67 return -1;
69 if (res == 0) {
70 errno = ETIMEDOUT;
71 return -1;
72 }
73 }
75 old_sig = signal(SIGPIPE, SIG_IGN);
77 res = write(id->fd, buf, strlen(buf));
79 signal(SIGPIPE, old_sig);
81 return res;
82 }