// For debug
static void __print_received_data(void *in, size_t len)
{
- char *data = (char *)calloc(len, sizeof(char));
- memcpy(data, in, len);
- VINE_LOGD(">> len[%zd] received[%s]", len, data);
- free(data);
+ VINE_LOGD("len[%zd] received [%s]", len, (char *)in);
}
static int _websocket_protocol_cb(struct lws *wsi,
return -1;
}
- if (g_callbacks.written_cb)
+ if (n && g_callbacks.written_cb)
g_callbacks.written_cb(n, ws->user);
break;
if (!ws->write_buffer)
return bytes;
- while ((wd = ws->write_buffer->pop())) {
+ if ((wd = ws->write_buffer->pop())) {
unsigned char *out = (unsigned char *)calloc(LWS_PRE + wd->len,
sizeof(unsigned char));
memcpy(out + LWS_PRE, wd->buf, wd->len);
int n = lws_write(ws->wsi, out + LWS_PRE, wd->len, LWS_WRITE_BINARY);
if (n < 0) {
+ VINE_LOGE("lws_write() is failed.");
free(out);
__destroy_websocket_data(wd);
return n;
wd = NULL;
}
+ if (ws->write_buffer->size() > 0)
+ _request_write(ws);
+
return bytes;
}
wd->len = len;
ws->write_buffer->push(wd);
- VINE_LOGD("websocket_data[%p] is pushed to write_buffer.", wd);
+ VINE_LOGD("websocket_data[%p] is pushed to write_buffer. len[%d]", wd, len);
if (_add_websocket_op_request(WEBSOCKET_OP_WRITE, ws, 0, NULL, -1, NULL, 0, NULL) < 0)
return VINE_DATA_PATH_ERROR_OPERATION_FAILED;