- debug_printf("Client IP: %s\n", client_ip);
- Ustrncpy(sockip, dcc_daemon_ip, sizeof(sockip)-1);
- /* strncat(opts, my_request, strlen(my_request)); */
- Ustrcat(opts, "\n");
- Ustrncat(opts, client_ip, sizeof(opts)-Ustrlen(opts)-1);
- Ustrncat(opts, "\nHELO ", sizeof(opts)-Ustrlen(opts)-1);
- Ustrncat(opts, dcc_helo_option, sizeof(opts)-Ustrlen(opts)-2);
- Ustrcat(opts, "\n");
-
- /* initialize the other variables */
- dcchdr = header_list;
- rcpt_count = 0;
- /* we set the default return value to DEFER */
- retval = DEFER;
-
- bzero(sendbuf,sizeof(sendbuf));
- bzero(xhdr,sizeof(xhdr));
- bzero(rcpt,sizeof(rcpt));
- bzero(from,sizeof(from));
-
- Ustrncpy(from, sender_address, sizeof(from));
- Ustrncat(from, "\n", sizeof(from)-Ustrlen(from)-1);
-
- /**************************************
- * Now creating the socket connection *
- **************************************/
-
- /* If there is a dcc_daemon_ip, we use a tcp socket, otherwise a UNIX socket */
- if(Ustrcmp(sockip, "")){
- ipaddress = gethostbyname((char *)sockip);
- bzero((char *) &serv_addr_in, sizeof(serv_addr_in));
- serv_addr_in.sin_family = AF_INET;
- bcopy((char *)ipaddress->h_addr, (char *)&serv_addr_in.sin_addr.s_addr, ipaddress->h_length);
- serv_addr_in.sin_port = htons(portnr);
- if ((sockfd = socket(AF_INET, SOCK_STREAM,0)) < 0){
- DEBUG(D_acl)
- debug_printf("Creating socket failed: %s\n", strerror(errno));
- log_write(0,LOG_REJECT,"Creating socket failed: %s\n", strerror(errno));
- /* if we cannot create the socket, defer the mail */
- (void)fclose(data_file);
- return retval;
- }
- /* Now connecting the socket (INET) */
- if (connect(sockfd, (struct sockaddr *)&serv_addr_in, sizeof(serv_addr_in)) < 0){
- DEBUG(D_acl)
- debug_printf("Connecting socket failed: %s\n", strerror(errno));
- log_write(0,LOG_REJECT,"Connecting socket failed: %s\n", strerror(errno));
- /* if we cannot contact the socket, defer the mail */
- (void)fclose(data_file);
- return retval;
- }
- } else {
- /* connecting to the dccifd UNIX socket */
- bzero((char *)&serv_addr,sizeof(serv_addr));
- serv_addr.sun_family = AF_UNIX;
- Ustrcpy(serv_addr.sun_path, sockpath);
- servlen = Ustrlen(serv_addr.sun_path) + sizeof(serv_addr.sun_family);
- if ((sockfd = socket(AF_UNIX, SOCK_STREAM,0)) < 0){
- DEBUG(D_acl)
- debug_printf("Creating socket failed: %s\n", strerror(errno));
- log_write(0,LOG_REJECT,"Creating socket failed: %s\n", strerror(errno));
- /* if we cannot create the socket, defer the mail */
- (void)fclose(data_file);
- return retval;
- }
- /* Now connecting the socket (UNIX) */
- if (connect(sockfd, (struct sockaddr *) &serv_addr, servlen) < 0){
- DEBUG(D_acl)
- debug_printf("Connecting socket failed: %s\n", strerror(errno));
- log_write(0,LOG_REJECT,"Connecting socket failed: %s\n", strerror(errno));
- /* if we cannot contact the socket, defer the mail */
- (void)fclose(data_file);
- return retval;
- }