summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2014-11-12 13:31:34 +0100
committerGravatar Nikias Bassen2014-11-12 13:31:34 +0100
commita5e57e872bb5be8b13d3497f2c07fff8a8e37f3f (patch)
treeaf7e129ba4668fbc91c9cf567027e517503725f9
parent23ecea077d8f22d9da5cae50df3e2ff3406fee90 (diff)
downloadusbmuxd-a5e57e872bb5be8b13d3497f2c07fff8a8e37f3f.tar.gz
usbmuxd-a5e57e872bb5be8b13d3497f2c07fff8a8e37f3f.tar.bz2
Revert "client: Make sure fd is writable before calling send() to avoid blocking"
This reverts commit 23ecea077d8f22d9da5cae50df3e2ff3406fee90.
-rw-r--r--src/client.c19
1 files changed, 1 insertions, 18 deletions
diff --git a/src/client.c b/src/client.c
index 417ba35..268c8b9 100644
--- a/src/client.c
+++ b/src/client.c
@@ -30,7 +30,6 @@
30#include <unistd.h> 30#include <unistd.h>
31#include <sys/types.h> 31#include <sys/types.h>
32#include <sys/socket.h> 32#include <sys/socket.h>
33#include <sys/select.h>
34#include <sys/un.h> 33#include <sys/un.h>
35#include <arpa/inet.h> 34#include <arpa/inet.h>
36#include <pthread.h> 35#include <pthread.h>
@@ -101,28 +100,12 @@ int client_read(struct mux_client *client, void *buffer, uint32_t len)
101 */ 100 */
102int client_write(struct mux_client *client, void *buffer, uint32_t len) 101int client_write(struct mux_client *client, void *buffer, uint32_t len)
103{ 102{
104 int sret = -1;
105 fd_set fds;
106 struct timeval to = {0, 0};
107
108 usbmuxd_log(LL_SPEW, "client_write fd %d buf %p len %d", client->fd, buffer, len); 103 usbmuxd_log(LL_SPEW, "client_write fd %d buf %p len %d", client->fd, buffer, len);
109 if(client->state != CLIENT_CONNECTED) { 104 if(client->state != CLIENT_CONNECTED) {
110 usbmuxd_log(LL_ERROR, "Attempted to write to client %d not in CONNECTED state", client->fd); 105 usbmuxd_log(LL_ERROR, "Attempted to write to client %d not in CONNECTED state", client->fd);
111 return -1; 106 return -1;
112 } 107 }
113 108 return send(client->fd, buffer, len, 0);
114 /* make sure fd is ready for writing */
115 FD_ZERO(&fds);
116 FD_SET(client->fd, &fds);
117 sret = select(client->fd + 1, NULL, &fds, NULL, &to);
118
119 /* only send data if the fd is ready */
120 if (sret > 0) {
121 sret = send(client->fd, buffer, len, 0);
122 } else {
123 usbmuxd_log(LL_ERROR, "ERROR: client_write: fd %d not ready for writing", client->fd);
124 }
125 return sret;
126} 109}
127 110
128/** 111/**