upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/main/cvm_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/cvm_server.c')
-rw-r--r--main/cvm_server.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/main/cvm_server.c b/main/cvm_server.c
index cf052df..dd04047 100644
--- a/main/cvm_server.c
+++ b/main/cvm_server.c
@@ -100,9 +100,24 @@ static int ws_send_text(esp_tls_t *tls, const char *msg)
100 frame[pos + i] = (uint8_t)msg[i] ^ mask[i & 3]; 100 frame[pos + i] = (uint8_t)msg[i] ^ mask[i & 3];
101 pos += len; 101 pos += len;
102 102
103 int w = esp_tls_conn_write(tls, frame, pos); 103 int total = pos;
104 int written = 0;
105 while (written < total) {
106 int w = esp_tls_conn_write(tls, frame + written, total - written);
107 if (w < 0) {
108 ESP_LOGE(TAG, "ws_send: write failed at %d/%d", written, total);
109 free(frame);
110 return -1;
111 }
112 if (w == 0) {
113 ESP_LOGW(TAG, "ws_send: write returned 0 at %d/%d", written, total);
114 vTaskDelay(pdMS_TO_TICKS(1));
115 }
116 written += w;
117 }
118 ESP_LOGD(TAG, "ws_send: sent %d bytes (payload %d)", total, (int)len);
104 free(frame); 119 free(frame);
105 return w > 0 ? 0 : -1; 120 return 0;
106} 121}
107 122
108static esp_err_t ws_connect(const char *relay_url, esp_tls_t **tls_out) 123static esp_err_t ws_connect(const char *relay_url, esp_tls_t **tls_out)
@@ -292,7 +307,7 @@ static esp_err_t publish_event_to_relay(const char *relay_url, const char *event
292 307
293 char *msg; 308 char *msg;
294 size_t event_len2 = strlen(event_json); 309 size_t event_len2 = strlen(event_json);
295 size_t msg_len2 = 8 + event_len2 + 1; 310 size_t msg_len2 = 10 + event_len2 + 2;
296 msg = malloc(msg_len2); 311 msg = malloc(msg_len2);
297 snprintf(msg, msg_len2, "[\"EVENT\",%s]", event_json); 312 snprintf(msg, msg_len2, "[\"EVENT\",%s]", event_json);
298 313
@@ -591,7 +606,7 @@ static esp_err_t publish_event_via_ws(esp_tls_t *tls, int kind,
591 606
592 char *msg; 607 char *msg;
593 size_t event_len = strlen(event_json); 608 size_t event_len = strlen(event_json);
594 size_t msg_len = 8 + event_len + 1; 609 size_t msg_len = 10 + event_len + 2;
595 msg = malloc(msg_len); 610 msg = malloc(msg_len);
596 snprintf(msg, msg_len, "[\"EVENT\",%s]", event_json); 611 snprintf(msg, msg_len, "[\"EVENT\",%s]", event_json);
597 612