74 syslog(LOG_NOTICE, "send: \"%s\"", out); |
74 syslog(LOG_NOTICE, "send: \"%s\"", out); |
75 fprintf(stdout, "send: \"%s\"\n", out); |
75 fprintf(stdout, "send: \"%s\"\n", out); |
76 } |
76 } |
77 |
77 |
78 if (send(s, out, strlen(out), 0) != strlen(out)) { |
78 if (send(s, out, strlen(out), 0) != strlen(out)) { |
79 syslog(LOG_WARNING, "srv_send failed"); |
79 syslog(LOG_NOTICE, "srv_send failed"); |
80 return -1; |
80 return -1; |
81 } |
81 } |
82 |
82 |
83 if (send(s, (char *)"\r\n", 2, 0) != 2) { |
83 if (send(s, (char *)"\r\n", 2, 0) != 2) { |
84 syslog(LOG_WARNING, "srv_send failed"); |
84 syslog(LOG_NOTICE, "srv_send failed"); |
85 return -1; |
85 return -1; |
86 } |
86 } |
87 |
87 |
88 return 0; |
88 return 0; |
89 } |
89 } |
348 while (1) { |
348 while (1) { |
349 memset((char *)&ibuf, 0, SS_BUFSIZE); |
349 memset((char *)&ibuf, 0, SS_BUFSIZE); |
350 fromlen = sizeof(peeraddr_in); |
350 fromlen = sizeof(peeraddr_in); |
351 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
351 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
352 if (rlen == -1) { |
352 if (rlen == -1) { |
353 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
353 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
354 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
354 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
355 return 1; |
355 return 1; |
356 } |
356 } |
357 for (i = 0; i < strlen(ibuf); i++) { |
357 for (i = 0; i < strlen(ibuf); i++) { |
358 if (ibuf[i] == '\n') |
358 if (ibuf[i] == '\n') |
490 while (1) { |
490 while (1) { |
491 memset((char *)&ibuf, 0, SS_BUFSIZE); |
491 memset((char *)&ibuf, 0, SS_BUFSIZE); |
492 fromlen = sizeof(peeraddr_in); |
492 fromlen = sizeof(peeraddr_in); |
493 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
493 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
494 if (rlen == -1) { |
494 if (rlen == -1) { |
495 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
495 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
496 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
496 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
497 return 1; |
497 return 1; |
498 } |
498 } |
499 for (i = 0; i < strlen(ibuf); i++) { |
499 for (i = 0; i < strlen(ibuf); i++) { |
500 if (ibuf[i] == '\n') |
500 if (ibuf[i] == '\n') |
794 while (1) { |
794 while (1) { |
795 memset((char *)&ibuf, 0, SS_BUFSIZE); |
795 memset((char *)&ibuf, 0, SS_BUFSIZE); |
796 fromlen = sizeof(peeraddr_in); |
796 fromlen = sizeof(peeraddr_in); |
797 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
797 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
798 if (rlen == -1) { |
798 if (rlen == -1) { |
799 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
799 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
800 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
800 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
801 return 1; |
801 return 1; |
802 } |
802 } |
803 for (i = 0; i < strlen(ibuf); i++) { |
803 for (i = 0; i < strlen(ibuf); i++) { |
804 if (ibuf[i] == '\n') |
804 if (ibuf[i] == '\n') |
872 while (1) { |
872 while (1) { |
873 memset((char *)&ibuf, 0, SS_BUFSIZE); |
873 memset((char *)&ibuf, 0, SS_BUFSIZE); |
874 fromlen = sizeof(peeraddr_in); |
874 fromlen = sizeof(peeraddr_in); |
875 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
875 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
876 if (rlen == -1) { |
876 if (rlen == -1) { |
877 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
877 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
878 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
878 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
879 return 1; |
879 return 1; |
880 } else { |
880 } else { |
881 for (i = 0; i < strlen(ibuf); i++) { |
881 for (i = 0; i < strlen(ibuf); i++) { |
882 if (ibuf[i] == '\n') |
882 if (ibuf[i] == '\n') |
1109 while (1) { |
1109 while (1) { |
1110 memset((char *)&ibuf, 0, SS_BUFSIZE); |
1110 memset((char *)&ibuf, 0, SS_BUFSIZE); |
1111 fromlen = sizeof(peeraddr_in); |
1111 fromlen = sizeof(peeraddr_in); |
1112 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1112 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1113 if (rlen == -1) { |
1113 if (rlen == -1) { |
1114 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
1114 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
1115 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
1115 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
1116 return 1; |
1116 return 1; |
1117 } |
1117 } |
1118 for (i = 0; i < strlen(ibuf); i++) { |
1118 for (i = 0; i < strlen(ibuf); i++) { |
1119 if (ibuf[i] == '\n') |
1119 if (ibuf[i] == '\n') |
1459 while (1) { |
1459 while (1) { |
1460 memset((char *)&ibuf, 0, SS_BUFSIZE); |
1460 memset((char *)&ibuf, 0, SS_BUFSIZE); |
1461 fromlen = sizeof(peeraddr_in); |
1461 fromlen = sizeof(peeraddr_in); |
1462 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1462 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1463 if (rlen == -1) { |
1463 if (rlen == -1) { |
1464 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
1464 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
1465 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
1465 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
1466 return 1; |
1466 return 1; |
1467 } |
1467 } |
1468 for (i = 0; i < strlen(ibuf); i++) { |
1468 for (i = 0; i < strlen(ibuf); i++) { |
1469 if (ibuf[i] == '\n') |
1469 if (ibuf[i] == '\n') |
1708 |
1708 |
1709 memset((char *)&buf, 0, SS_BUFSIZE); |
1709 memset((char *)&buf, 0, SS_BUFSIZE); |
1710 fromlen = sizeof(peeraddr_in); |
1710 fromlen = sizeof(peeraddr_in); |
1711 rlen = recvfrom(s, buf, sizeof(buf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1711 rlen = recvfrom(s, buf, sizeof(buf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1712 if (rlen == -1) { |
1712 if (rlen == -1) { |
1713 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
1713 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
1714 } else { |
1714 } else { |
1715 for (i = 0; i < strlen(buf); i++) { |
1715 for (i = 0; i < strlen(buf); i++) { |
1716 if (buf[i] == '\n') |
1716 if (buf[i] == '\n') |
1717 buf[i] = '\0'; |
1717 buf[i] = '\0'; |
1718 if (buf[i] == '\r') |
1718 if (buf[i] == '\r') |
1817 myaddr_in.sin_addr.s_addr = INADDR_ANY; |
1817 myaddr_in.sin_addr.s_addr = INADDR_ANY; |
1818 myaddr_in.sin_port = htons(Config.my_port); |
1818 myaddr_in.sin_port = htons(Config.my_port); |
1819 |
1819 |
1820 ls = socket(AF_INET, SOCK_STREAM, 0); |
1820 ls = socket(AF_INET, SOCK_STREAM, 0); |
1821 if (ls == -1) { |
1821 if (ls == -1) { |
1822 syslog(LOG_WARNING, "Can't create listen socket: %s", strerror(errno)); |
1822 syslog(LOG_NOTICE, "Can't create listen socket: %s", strerror(errno)); |
1823 fprintf(stderr, "Can't create listen socket: %s\n", strerror(errno)); |
1823 fprintf(stderr, "Can't create listen socket: %s\n", strerror(errno)); |
1824 return 0; |
1824 return 0; |
1825 } |
1825 } |
1826 |
1826 |
1827 if (setsockopt(ls, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)) == -1) { |
1827 if (setsockopt(ls, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)) == -1) { |
1828 syslog(LOG_WARNING, "Can't setsockopt SO_KEEPALIVE socket: %s", strerror(errno)); |
1828 syslog(LOG_NOTICE, "Can't setsockopt SO_KEEPALIVE socket: %s", strerror(errno)); |
1829 close(ls); |
1829 close(ls); |
1830 return 0; |
1830 return 0; |
1831 } |
1831 } |
1832 |
1832 |
1833 if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) { |
1833 if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) { |
1834 syslog(LOG_WARNING, "Can't setsockopt SO_REUSEADDR socket: %s", strerror(errno)); |
1834 syslog(LOG_NOTICE, "Can't setsockopt SO_REUSEADDR socket: %s", strerror(errno)); |
1835 close(ls); |
1835 close(ls); |
1836 return 0; |
1836 return 0; |
1837 } |
1837 } |
1838 |
1838 |
1839 if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) { |
1839 if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) { |
1840 syslog(LOG_WARNING, "Can't bind to listen socket: %s", strerror(errno)); |
1840 syslog(LOG_NOTICE, "Can't bind to listen socket: %s", strerror(errno)); |
1841 close(ls); |
1841 close(ls); |
1842 return 0; |
1842 return 0; |
1843 } |
1843 } |
1844 |
1844 |
1845 if (listen(ls, 5) == -1) { |
1845 if (listen(ls, 5) == -1) { |
1846 syslog(LOG_WARNING, "Can't listen on listen socket: %s", strerror(errno)); |
1846 syslog(LOG_NOTICE, "Can't listen on listen socket: %s", strerror(errno)); |
1847 close(ls); |
1847 close(ls); |
1848 return 0; |
1848 return 0; |
1849 } |
1849 } |
1850 |
1850 |
1851 syslog(LOG_NOTICE, "listen socket created %d", ls); |
1851 syslog(LOG_NOTICE, "listen socket created %d", ls); |
1863 * the connecting peer, and a new socket |
1863 * the connecting peer, and a new socket |
1864 * descriptor, s, for that connection. |
1864 * descriptor, s, for that connection. |
1865 */ |
1865 */ |
1866 s = accept(ls, (struct sockaddr *)&peeraddr_in, &addrlen); |
1866 s = accept(ls, (struct sockaddr *)&peeraddr_in, &addrlen); |
1867 if (s == -1) { |
1867 if (s == -1) { |
1868 syslog(LOG_WARNING, "my_server_loop accept failed %s", strerror(errno)); |
1868 syslog(LOG_NOTICE, "my_server_loop accept failed %s", strerror(errno)); |
1869 if (debug) |
1869 if (debug) |
1870 fprintf(stdout, "my_server_loop accept failed %s\n", strerror(errno)); |
1870 fprintf(stdout, "my_server_loop accept failed %s\n", strerror(errno)); |
1871 return 0; |
1871 return 0; |
1872 } |
1872 } |
1873 |
1873 |