thermferm/server.c

changeset 706
50d9a25aba86
parent 703
344470c6bb1c
child 708
13555c27b592
equal deleted inserted replaced
705:d7c8106b28e4 706:50d9a25aba86
105 } 105 }
106 106
107 if (send(s, (char *)"\r\n", 2, 0) != 2) { 107 if (send(s, (char *)"\r\n", 2, 0) != 2) {
108 syslog(LOG_NOTICE, "srv_send failed"); 108 syslog(LOG_NOTICE, "srv_send failed");
109 return -1; 109 return -1;
110 }
111
112 return 0;
113 }
114
115
116
117 /*
118 * Send unlimited size message
119 */
120 int large_send(int s, char *out)
121 {
122 if (s == -1)
123 return -1;
124
125 if (send(s, out, strlen(out), 0) != strlen(out)) {
126 syslog(LOG_NOTICE, "large_send failed");
127 return -1;
128 }
129
130 if (send(s, (char *)"\r\n", 2, 0) != 2) {
131 syslog(LOG_NOTICE, "large_send failed");
132 return -1;
110 } 133 }
111 134
112 return 0; 135 return 0;
113 } 136 }
114 137
358 comma = true; 381 comma = true;
359 free(payloadu); 382 free(payloadu);
360 payloadu = NULL; 383 payloadu = NULL;
361 } 384 }
362 payload = xstrcat(payload, (char *)"]"); 385 payload = xstrcat(payload, (char *)"]");
363 srv_send(s, payload); 386 large_send(s, payload);
364 srv_send(s, (char *)"."); 387 srv_send(s, (char *)".");
365 free(payload); 388 free(payload);
366 payload = NULL; 389 payload = NULL;
367 return 0; 390 return 0;
368 } else { 391 } else {
378 payload = xstrcat(payload, payloadu); 401 payload = xstrcat(payload, payloadu);
379 free(payloadu); 402 free(payloadu);
380 payloadu = NULL; 403 payloadu = NULL;
381 payload = xstrcat(payload, (char *)"}"); 404 payload = xstrcat(payload, (char *)"}");
382 srv_send(s, (char *)"213 Device json record follows:"); 405 srv_send(s, (char *)"213 Device json record follows:");
383 srv_send(s, payload); 406 large_send(s, payload);
384 free(payload); 407 free(payload);
385 payload = NULL; 408 payload = NULL;
386 srv_send(s, (char *)"."); 409 srv_send(s, (char *)".");
387 return 0; 410 return 0;
388 } 411 }
662 comma = true; 685 comma = true;
663 free(payloadu); 686 free(payloadu);
664 payloadu = NULL; 687 payloadu = NULL;
665 } 688 }
666 payload = xstrcat(payload, (char *)"]"); 689 payload = xstrcat(payload, (char *)"]");
667 srv_send(s, payload); 690 large_send(s, payload);
668 srv_send(s, (char *)"."); 691 srv_send(s, (char *)".");
669 free(payload); 692 free(payload);
670 payload = NULL; 693 payload = NULL;
671 return 0; 694 return 0;
672 } 695 }
1475 comma = true; 1498 comma = true;
1476 free(payloadu); 1499 free(payloadu);
1477 payloadu = NULL; 1500 payloadu = NULL;
1478 } 1501 }
1479 payload = xstrcat(payload, (char *)"]"); 1502 payload = xstrcat(payload, (char *)"]");
1480 srv_send(s, payload); 1503 large_send(s, payload);
1481 srv_send(s, (char *)"."); 1504 srv_send(s, (char *)".");
1482 free(payload); 1505 free(payload);
1483 payload = NULL; 1506 payload = NULL;
1484 return 0; 1507 return 0;
1485 } else { 1508 } else {
1491 payload = xstrcat(payload, unit->alias); 1514 payload = xstrcat(payload, unit->alias);
1492 payload = xstrcat(payload, (char *)"\",\"metric\":"); 1515 payload = xstrcat(payload, (char *)"\",\"metric\":");
1493 payloadu = unit_data(unit, false); 1516 payloadu = unit_data(unit, false);
1494 payload = xstrcat(payload, payloadu); 1517 payload = xstrcat(payload, payloadu);
1495 payload = xstrcat(payload, (char *)"}"); 1518 payload = xstrcat(payload, (char *)"}");
1496 srv_send(s, payload); 1519 large_send(s, payload);
1497 free(payload); 1520 free(payload);
1498 free(payloadu); 1521 free(payloadu);
1499 payload = payloadu = NULL; 1522 payload = payloadu = NULL;
1500 srv_send(s, (char *)"."); 1523 srv_send(s, (char *)".");
1501 return 0; 1524 return 0;

mercurial