{
struct hostent *server_hostent;
struct sockaddr_in server_addr;
+ struct timeval tv;
char pkt[512];
struct pollfd pfd;
struct libwebsocket *wsi;
/* Disable Nagle */
setsockopt(wsi->sock, IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt));
+ /* Set receiving timeout */
+ tv.tv_sec = 0;
+ tv.tv_usec = 100 * 1000;
+ setsockopt(wsi->sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,
+ sizeof(tv));
+
if (connect(wsi->sock, (struct sockaddr *)&server_addr,
sizeof(struct sockaddr)) == -1) {
fprintf(stderr, "Connect failed\n");
return 0;
}
+static ssize_t
+libwebsocket_recv(int sock, void *buf, size_t len, int flags)
+{
+ int n, ret = 0;
+
+ while ((len > 0) && (n = recv(sock, (char *)buf + ret, len,
+ flags)) > 0) {
+ ret += n;
+ len -= n;
+ }
+ return ret;
+}
/**
* libwebsocket_service_fd() - Service polled socket with something waiting
return 1;
}
- n = recv(wsi->sock, pkt, sizeof pkt, 0);
+ n = libwebsocket_recv(wsi->sock, pkt, sizeof pkt, 0);
if (n < 0) {
libwebsocket_close_and_free_session(context, wsi,
LWS_CLOSE_STATUS_NOSTATUS);
len = SSL_read(wsi->ssl, pkt, sizeof pkt);
else
#endif
- len = recv(wsi->sock, pkt, sizeof pkt, 0);
+ len = libwebsocket_recv(wsi->sock, pkt, sizeof pkt, 0);
if (len < 0) {
fprintf(stderr,
else
#endif
eff_buf.token_len =
- recv(pollfd->fd, buf, sizeof buf, 0);
+ libwebsocket_recv(pollfd->fd, buf,
+ sizeof buf, 0);
if (eff_buf.token_len < 0) {
fprintf(stderr, "Socket read returned %d\n",