72 syslog(LOG_NOTICE, "send: \"%s\"", out); |
72 syslog(LOG_NOTICE, "send: \"%s\"", out); |
73 fprintf(stdout, "send: \"%s\"\n", out); |
73 fprintf(stdout, "send: \"%s\"\n", out); |
74 } |
74 } |
75 |
75 |
76 if (send(s, out, strlen(out), 0) != strlen(out)) { |
76 if (send(s, out, strlen(out), 0) != strlen(out)) { |
77 syslog(LOG_NOTICE, "srv_send failed"); |
77 syslog(LOG_WARNING, "srv_send failed"); |
78 return -1; |
78 return -1; |
79 } |
79 } |
80 |
80 |
81 if (send(s, (char *)"\r\n", 2, 0) != 2) { |
81 if (send(s, (char *)"\r\n", 2, 0) != 2) { |
82 syslog(LOG_NOTICE, "srv_send failed"); |
82 syslog(LOG_WARNING, "srv_send failed"); |
83 return -1; |
83 return -1; |
84 } |
84 } |
85 |
85 |
86 return 0; |
86 return 0; |
87 } |
87 } |
327 while (1) { |
327 while (1) { |
328 memset((char *)&ibuf, 0, SS_BUFSIZE); |
328 memset((char *)&ibuf, 0, SS_BUFSIZE); |
329 fromlen = sizeof(peeraddr_in); |
329 fromlen = sizeof(peeraddr_in); |
330 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
330 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
331 if (rlen == -1) { |
331 if (rlen == -1) { |
332 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
332 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
333 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
333 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
334 return 1; |
334 return 1; |
335 } |
335 } |
336 for (i = 0; i < strlen(ibuf); i++) { |
336 for (i = 0; i < strlen(ibuf); i++) { |
337 if (ibuf[i] == '\n') |
337 if (ibuf[i] == '\n') |
469 while (1) { |
469 while (1) { |
470 memset((char *)&ibuf, 0, SS_BUFSIZE); |
470 memset((char *)&ibuf, 0, SS_BUFSIZE); |
471 fromlen = sizeof(peeraddr_in); |
471 fromlen = sizeof(peeraddr_in); |
472 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
472 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
473 if (rlen == -1) { |
473 if (rlen == -1) { |
474 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
474 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
475 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
475 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
476 return 1; |
476 return 1; |
477 } |
477 } |
478 for (i = 0; i < strlen(ibuf); i++) { |
478 for (i = 0; i < strlen(ibuf); i++) { |
479 if (ibuf[i] == '\n') |
479 if (ibuf[i] == '\n') |
734 while (1) { |
734 while (1) { |
735 memset((char *)&ibuf, 0, SS_BUFSIZE); |
735 memset((char *)&ibuf, 0, SS_BUFSIZE); |
736 fromlen = sizeof(peeraddr_in); |
736 fromlen = sizeof(peeraddr_in); |
737 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
737 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
738 if (rlen == -1) { |
738 if (rlen == -1) { |
739 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
739 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
740 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
740 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
741 return 1; |
741 return 1; |
742 } |
742 } |
743 for (i = 0; i < strlen(ibuf); i++) { |
743 for (i = 0; i < strlen(ibuf); i++) { |
744 if (ibuf[i] == '\n') |
744 if (ibuf[i] == '\n') |
812 while (1) { |
812 while (1) { |
813 memset((char *)&ibuf, 0, SS_BUFSIZE); |
813 memset((char *)&ibuf, 0, SS_BUFSIZE); |
814 fromlen = sizeof(peeraddr_in); |
814 fromlen = sizeof(peeraddr_in); |
815 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
815 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
816 if (rlen == -1) { |
816 if (rlen == -1) { |
817 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
817 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
818 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
818 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
819 return 1; |
819 return 1; |
820 } else { |
820 } else { |
821 for (i = 0; i < strlen(ibuf); i++) { |
821 for (i = 0; i < strlen(ibuf); i++) { |
822 if (ibuf[i] == '\n') |
822 if (ibuf[i] == '\n') |
1092 while (1) { |
1092 while (1) { |
1093 memset((char *)&ibuf, 0, SS_BUFSIZE); |
1093 memset((char *)&ibuf, 0, SS_BUFSIZE); |
1094 fromlen = sizeof(peeraddr_in); |
1094 fromlen = sizeof(peeraddr_in); |
1095 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1095 rlen = recvfrom(s, ibuf, sizeof(ibuf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1096 if (rlen == -1) { |
1096 if (rlen == -1) { |
1097 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
1097 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
1098 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
1098 srv_send((char *)"518 recfrom(): %s", strerror(errno)); |
1099 return 1; |
1099 return 1; |
1100 } |
1100 } |
1101 for (i = 0; i < strlen(ibuf); i++) { |
1101 for (i = 0; i < strlen(ibuf); i++) { |
1102 if (ibuf[i] == '\n') |
1102 if (ibuf[i] == '\n') |
1331 |
1331 |
1332 memset((char *)&buf, 0, SS_BUFSIZE); |
1332 memset((char *)&buf, 0, SS_BUFSIZE); |
1333 fromlen = sizeof(peeraddr_in); |
1333 fromlen = sizeof(peeraddr_in); |
1334 rlen = recvfrom(s, buf, sizeof(buf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1334 rlen = recvfrom(s, buf, sizeof(buf) -1, 0, (struct sockaddr *)&peeraddr_in, &fromlen); |
1335 if (rlen == -1) { |
1335 if (rlen == -1) { |
1336 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno)); |
1336 syslog(LOG_WARNING, "recvfrom(): %s", strerror(errno)); |
1337 } else { |
1337 } else { |
1338 for (i = 0; i < strlen(buf); i++) { |
1338 for (i = 0; i < strlen(buf); i++) { |
1339 if (buf[i] == '\n') |
1339 if (buf[i] == '\n') |
1340 buf[i] = '\0'; |
1340 buf[i] = '\0'; |
1341 if (buf[i] == '\r') |
1341 if (buf[i] == '\r') |
1428 myaddr_in.sin_addr.s_addr = INADDR_ANY; |
1428 myaddr_in.sin_addr.s_addr = INADDR_ANY; |
1429 myaddr_in.sin_port = htons(Config.my_port); |
1429 myaddr_in.sin_port = htons(Config.my_port); |
1430 |
1430 |
1431 ls = socket(AF_INET, SOCK_STREAM, 0); |
1431 ls = socket(AF_INET, SOCK_STREAM, 0); |
1432 if (ls == -1) { |
1432 if (ls == -1) { |
1433 syslog(LOG_NOTICE, "Can't create listen socket: %s", strerror(errno)); |
1433 syslog(LOG_WARNING, "Can't create listen socket: %s", strerror(errno)); |
1434 fprintf(stderr, "Can't create listen socket: %s\n", strerror(errno)); |
1434 fprintf(stderr, "Can't create listen socket: %s\n", strerror(errno)); |
1435 return 0; |
1435 return 0; |
1436 } |
1436 } |
1437 |
1437 |
1438 if (setsockopt(ls, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)) == -1) { |
1438 if (setsockopt(ls, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)) == -1) { |
1439 syslog(LOG_NOTICE, "Can't setsockopt SO_KEEPALIVE socket: %s", strerror(errno)); |
1439 syslog(LOG_WARNING, "Can't setsockopt SO_KEEPALIVE socket: %s", strerror(errno)); |
1440 close(ls); |
1440 close(ls); |
1441 return 0; |
1441 return 0; |
1442 } |
1442 } |
1443 |
1443 |
1444 if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) { |
1444 if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) { |
1445 syslog(LOG_NOTICE, "Can't setsockopt SO_REUSEADDR socket: %s", strerror(errno)); |
1445 syslog(LOG_WARNING, "Can't setsockopt SO_REUSEADDR socket: %s", strerror(errno)); |
1446 close(ls); |
1446 close(ls); |
1447 return 0; |
1447 return 0; |
1448 } |
1448 } |
1449 |
1449 |
1450 if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) { |
1450 if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) { |
1451 syslog(LOG_NOTICE, "Can't bind to listen socket: %s", strerror(errno)); |
1451 syslog(LOG_WARNING, "Can't bind to listen socket: %s", strerror(errno)); |
1452 close(ls); |
1452 close(ls); |
1453 return 0; |
1453 return 0; |
1454 } |
1454 } |
1455 |
1455 |
1456 if (listen(ls, 5) == -1) { |
1456 if (listen(ls, 5) == -1) { |
1457 syslog(LOG_NOTICE, "Can't listen on listen socket: %s", strerror(errno)); |
1457 syslog(LOG_WARNING, "Can't listen on listen socket: %s", strerror(errno)); |
1458 close(ls); |
1458 close(ls); |
1459 return 0; |
1459 return 0; |
1460 } |
1460 } |
1461 |
1461 |
1462 syslog(LOG_NOTICE, "listen socket created %d", ls); |
1462 syslog(LOG_NOTICE, "listen socket created %d", ls); |
1463 if (debug) |
|
1464 fprintf(stdout, "listen socket created %d\n", ls); |
|
1465 |
1463 |
1466 |
1464 |
1467 /* |
1465 /* |
1468 * Loop forever until the external shutdown variable is set. |
1466 * Loop forever until the external shutdown variable is set. |
1469 */ |
1467 */ |
1476 * the connecting peer, and a new socket |
1474 * the connecting peer, and a new socket |
1477 * descriptor, s, for that connection. |
1475 * descriptor, s, for that connection. |
1478 */ |
1476 */ |
1479 s = accept(ls, (struct sockaddr *)&peeraddr_in, &addrlen); |
1477 s = accept(ls, (struct sockaddr *)&peeraddr_in, &addrlen); |
1480 if (s == -1) { |
1478 if (s == -1) { |
1481 syslog(LOG_NOTICE, "my_server_loop accept failed %s", strerror(errno)); |
1479 syslog(LOG_WARNING, "my_server_loop accept failed %s", strerror(errno)); |
1482 if (debug) |
1480 if (debug) |
1483 fprintf(stdout, "my_server_loop accept failed %s\n", strerror(errno)); |
1481 fprintf(stdout, "my_server_loop accept failed %s\n", strerror(errno)); |
1484 return 0; |
1482 return 0; |
1485 } |
1483 } |
1486 |
1484 |