thermferm/server.c

changeset 235
885ad8d52126
parent 223
14700edd2a67
child 237
51a294d683cd
equal deleted inserted replaced
234:b69438db19ec 235:885ad8d52126
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

mercurial