* Add Unix domain socket support to citmail.c
authorArt Cancro <ajc@citadel.org>
Sun, 5 Mar 2000 07:42:00 +0000 (07:42 +0000)
committerArt Cancro <ajc@citadel.org>
Sun, 5 Mar 2000 07:42:00 +0000 (07:42 +0000)
citadel/citmail.c
citadel/sysconfig.h

index ff0ea65864db82088f462a841ec03158ea337669..83c54ea664dbb8eea1d3fe472d2369e9070cd32b 100644 (file)
@@ -19,6 +19,7 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
+#include <sys/un.h>
 #include <netdb.h>
 #include <string.h>
 #include <pwd.h>
@@ -62,6 +63,31 @@ int connectsock(char *host, char *service, char *protocol)
        struct protoent *ppe;
        struct sockaddr_in sin;
        int s, type;
+       struct sockaddr_un sun;
+
+       if ( (!strcmp(protocol, "unix")) || (atoi(service)<0) ) {
+               memset(&sun, 0, sizeof(sun));
+               sun.sun_family = AF_UNIX;
+               sprintf(sun.sun_path, USOCKPATH, 0-atoi(service) );
+
+               s = socket(AF_UNIX, SOCK_STREAM, 0);
+               if (s < 0) {
+                       fprintf(stderr, "Can't create socket: %s\n",
+                               strerror(errno));
+                       exit(3);
+               }
+
+               if (connect(s, (struct sockaddr *) &sun, sizeof(sun)) < 0) {
+                       fprintf(stderr, "can't connect: %s\n",
+                               strerror(errno));
+                       exit(3);
+               }
+
+               return s;
+       }
+
+
+       /* otherwise it's a network connection */
 
        memset(&sin, 0, sizeof(sin));
        sin.sin_family = AF_INET;
index 70e2162d8b3339f4beee2d76e480ac6c694abc45..70f6d01d0c94d076d0294bb838f9237c02958598 100644 (file)
 
 /* 
  * These define what port to listen on for various services.
+ * If you don't want to run these services on the network, you can specify
+ * a negative port number to create Unix domain sockets.  This will allow,
+ * for example, the "citmail" utility to connect to the Citadel SMTP server
+ * to import email, without having to actually run Citadel SMTP on the network.
+ *
  * FIXME ... put this in a programmable config somewhere
  */
 #define POP3_PORT              110