Lines Matching refs:wsi
31 lws_issue_raw(struct lws *wsi, unsigned char *buf, size_t len)
33 struct lws_context *context = lws_get_context(wsi);
48 if (lwsi_state(wsi) == LRS_FLUSHING_BEFORE_CLOSE &&
49 !lws_has_buffered_out(wsi)
51 && !wsi->http.comp_ctx.may_have_more
56 if (buf && lws_has_buffered_out(wsi)) {
57 lwsl_wsi_info(wsi, "** prot: %s, incr buflist_out by %lu",
58 wsi->a.protocol->name, (unsigned long)len);
66 if (lws_buflist_append_segment(&wsi->buflist_out, buf, len))
73 if (wsi->buflist_out) {
76 len = lws_buflist_next_segment_len(&wsi->buflist_out, &buf);
79 lwsl_wsi_debug(wsi, "draining %d", (int)len);
85 if (!wsi->mux_substream && !lws_socket_is_valid(wsi->desc.sockfd))
86 lwsl_wsi_err(wsi, "invalid sock");
89 if (wsi->a.protocol->tx_packet_size)
90 n = (unsigned int)wsi->a.protocol->tx_packet_size;
92 n = (unsigned int)wsi->a.protocol->rx_buffer_size;
102 if (lws_fi(&wsi->fic, "sendfail"))
105 m = (unsigned int)lws_ssl_capable_write(wsi, buf, n);
107 lwsl_wsi_info(wsi, "ssl_capable_write (%d) says %d", n, m);
110 wsi->could_have_pending = 1;
115 wsi->socket_is_permanently_unusable = 1;
135 if (lws_has_buffered_out(wsi)) {
137 lwsl_wsi_info(wsi, "partial adv %d (vs %ld)",
139 lws_buflist_use_segment(&wsi->buflist_out, m);
142 if (!lws_has_buffered_out(wsi)) {
143 lwsl_wsi_info(wsi, "buflist_out flushed");
146 if (lwsi_state(wsi) == LRS_FLUSHING_BEFORE_CLOSE) {
147 lwsl_wsi_info(wsi, "*signalling to close now");
151 if (wsi->close_when_buffered_out_drained) {
152 wsi->close_when_buffered_out_drained = 0;
158 if (wsi->http.deferred_transaction_completed) {
159 lwsl_wsi_notice(wsi, "partial completed, doing "
161 wsi->http.deferred_transaction_completed = 0;
162 return lws_http_transaction_completed(wsi) ?
169 if (wsi->ws)
170 wsi->ws->inside_frame = 0;
174 lws_callback_on_writable(wsi);
180 if (wsi->http.comp_ctx.may_have_more)
181 lws_callback_on_writable(wsi);
194 lwsl_wsi_debug(wsi, "new partial sent %d from %lu total",
197 if (lws_buflist_append_segment(&wsi->buflist_out, buf + m,
202 if (lws_wsi_is_udp(wsi))
204 wsi->udp->sa46_pending = wsi->udp->sa46;
208 lws_callback_on_writable(wsi);
214 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
220 lwsl_wsi_err(wsi, "suspicious len int %d, ulong %lu",
226 wsi->http.access_log.sent += len;
229 assert(wsi->role_ops);
231 if (!lws_rops_fidx(wsi->role_ops, LWS_ROPS_write_role_protocol))
232 m = lws_issue_raw(wsi, buf, len);
234 m = lws_rops_func_fidx(wsi->role_ops, LWS_ROPS_write_role_protocol).
235 write_role_protocol(wsi, buf, len, &wp);
238 if (wsi->a.vhost)
239 lws_metric_event(wsi->a.vhost->mt_traffic_tx, (char)
247 lws_ssl_capable_read_no_ssl(struct lws *wsi, unsigned char *buf, size_t len)
253 if (lws_wsi_is_udp(wsi)) {
254 socklen_t slt = sizeof(wsi->udp->sa46);
256 n = (int)recvfrom(wsi->desc.sockfd, (char *)buf,
261 sa46_sockaddr(&wsi->udp->sa46), &slt);
264 n = (int)recv(wsi->desc.sockfd, (char *)buf,
272 if (!n && wsi->unix_skt)
279 if (!n && !wsi->unix_skt)
283 if (wsi->a.vhost)
284 lws_metric_event(wsi->a.vhost->mt_traffic_rx,
298 if (wsi->a.vhost)
299 lws_metric_event(wsi->a.vhost->mt_traffic_rx, METRES_NOGO, 0u);
302 lwsl_wsi_info(wsi, "error on reading from skt : %d, errno %d", n, en);
308 lws_ssl_capable_write_no_ssl(struct lws *wsi, unsigned char *buf, size_t len)
316 if (lws_wsi_is_udp(wsi)) {
318 if (lws_fi(&wsi->fic, "udp_tx_loss")) {
324 if (lws_has_buffered_out(wsi))
325 n = (int)sendto(wsi->desc.sockfd, (const char *)buf,
329 len, 0, sa46_sockaddr(&wsi->udp->sa46_pending),
330 sa46_socklen(&wsi->udp->sa46_pending));
332 n = (int)sendto(wsi->desc.sockfd, (const char *)buf,
336 len, 0, sa46_sockaddr(&wsi->udp->sa46),
337 sa46_socklen(&wsi->udp->sa46));
340 if (wsi->role_ops->file_handle)
341 n = (int)write((int)(lws_intptr_t)wsi->desc.filefd, buf,
347 n = (int)send(wsi->desc.sockfd, (char *)buf,
364 lws_set_blocking_send(wsi);
370 lwsl_wsi_debug(wsi, "ERROR writing len %d to skt fd %d err %d / errno %d",
371 (int)(ssize_t)len, wsi->desc.sockfd, n, LWS_ERRNO);
377 lws_ssl_pending_no_ssl(struct lws *wsi)
379 (void)wsi;