Changeset 3444 for neercs/trunk/src/server.c
- Timestamp:
- 05/13/09 10:56:59 (4 years ago)
- File:
-
- 1 edited
-
neercs/trunk/src/server.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/server.c
r3441 r3444 99 99 size_t bytes; 100 100 void *buf; 101 char *buf2;102 101 buf = caca_export_memory (screen_list->cv, "caca", &bytes); 103 buf2 = malloc(bytes+8);104 memcpy(buf2, "REFRESH ", 8);105 memcpy(buf2+8, buf, bytes);106 102 if(!screen_list->socket[SOCK_CLIENT]) 107 103 connect_socket(screen_list, SOCK_CLIENT); 108 104 if(screen_list->socket[SOCK_CLIENT]) 109 105 { 110 size_t bufsize, towrite = bytes +8;111 ssize_t written ;106 size_t bufsize, towrite = bytes; 107 ssize_t written = 0, ret; 112 108 socklen_t optlen = sizeof(bufsize); 113 debug("Requesting refresh for %d", bytes+8); 109 debug("Requesting refresh for %d", bytes); 110 114 111 getsockopt(screen_list->socket[SOCK_CLIENT], SOL_SOCKET, SO_SNDBUF, 115 112 &bufsize, &optlen); 116 113 bufsize /= 2; 117 114 debug("bufsize=%d", bufsize); 118 written= write(screen_list->socket[SOCK_CLIENT],119 buf2,120 towrite > bufsize ? bufsize : towrite);121 if( written <= 0&& errno != EAGAIN)122 { 123 debug("Can't refresh (%s), with %d bytes (out of %d)", strerror(errno), towrite > bufsize ? bufsize : towrite, towrite);115 ret = write(screen_list->socket[SOCK_CLIENT], 116 "REFRESH ", 117 8); 118 if(ret <= 8 && errno != EAGAIN) 119 { 120 free(buf); 124 121 return -1; 125 122 } 126 debug("Wrote %d bytes", written); 127 towrite -= written; 128 while(written > 0 && towrite > 0) 123 while(towrite > 0) 129 124 { 130 125 ssize_t n; 131 126 debug("Wrote %d, %d remaining", written, towrite); 132 /* Block to readthe end of the message */127 /* Block to write the end of the message */ 133 128 fcntl(screen_list->socket[SOCK_CLIENT], F_SETFL, 0); 134 129 n = write(screen_list->socket[SOCK_CLIENT], 135 buf2+ written,130 (char *)buf + written, 136 131 towrite > bufsize ? bufsize : towrite); 137 132 if(n < 0) 138 133 { 139 debug("Can't refresh (%s), with %d bytes ", strerror(errno), bytes+8);134 debug("Can't refresh (%s), with %d bytes (out of %d)", strerror(errno), towrite > bufsize ? bufsize : towrite, towrite); 140 135 return -1; 141 136 } … … 146 141 } 147 142 free(buf); 148 free(buf2);149 143 return 0; 150 144 }
Note: See TracChangeset
for help on using the changeset viewer.
