@@ -36,11 +36,13 @@ struct ipc_softc {
36
36
#define MAX_LEN 2048
37
37
38
38
#ifdef _WIN32
39
- #define WIN32_HEADER_LEN 2
40
- #define WIN32_SOCKET_PORT "50007"
39
+ #define HEADER_LEN 2
40
+ #define SOCKET_PORT "50007"
41
41
42
42
unsigned char ipc_rxbuffer [2 * MAX_LEN ];
43
43
int ipc_rxlen ;
44
+ #else
45
+ #define HEADER_LEN 0
44
46
#endif
45
47
46
48
struct ipc_softc * ipc_connect (const char * sockaddr ,
@@ -75,7 +77,7 @@ struct ipc_softc *ipc_connect(const char *sockaddr,
75
77
hints .ai_socktype = SOCK_STREAM ;
76
78
hints .ai_protocol = IPPROTO_TCP ;
77
79
78
- if (getaddrinfo (sockaddr , WIN32_SOCKET_PORT , NULL , & my_addrinfo ) != 0 ) {
80
+ if (getaddrinfo (sockaddr , SOCKET_PORT , NULL , & my_addrinfo ) != 0 ) {
79
81
free (sc );
80
82
return NULL ;
81
83
}
@@ -132,7 +134,7 @@ static int ipc_receive_packet(struct ipc_softc *sc, unsigned char *buffer) {
132
134
int len ;
133
135
int packet_len ;
134
136
/* ensure we have packet header */
135
- while (ipc_rxlen < WIN32_HEADER_LEN ) {
137
+ while (ipc_rxlen < HEADER_LEN ) {
136
138
len = recv (sc -> socket , (char * )& ipc_rxbuffer [ipc_rxlen ], MAX_LEN , 0 );
137
139
if (len )
138
140
ipc_rxlen += len ;
@@ -147,13 +149,13 @@ static int ipc_receive_packet(struct ipc_softc *sc, unsigned char *buffer) {
147
149
}
148
150
149
151
/* copy packet to buffer */
150
- memcpy (buffer , ipc_rxbuffer + WIN32_HEADER_LEN , packet_len - WIN32_HEADER_LEN );
152
+ memcpy (buffer , ipc_rxbuffer + HEADER_LEN , packet_len - HEADER_LEN );
151
153
152
154
/* prepare ipc_rxbuffer for next packet */
153
155
ipc_rxlen = ipc_rxlen - packet_len ;
154
156
memcpy (ipc_rxbuffer , ipc_rxbuffer + packet_len , ipc_rxlen );
155
157
156
- return packet_len - WIN32_HEADER_LEN ;
158
+ return packet_len - HEADER_LEN ;
157
159
#else
158
160
return recv (sc -> socket , buffer , MAX_LEN , 0 );
159
161
#endif
@@ -218,24 +220,16 @@ int ipc_receive(struct ipc_softc *sc)
218
220
int ipc_tick (struct ipc_softc * sc )
219
221
{
220
222
ssize_t l ;
223
+ char c [HEADER_LEN + 1 ];
221
224
222
225
#ifdef _WIN32
223
- char c [3 ];
224
-
225
226
c [0 ] = 3 ;
226
227
c [1 ] = 0 ;
227
- c [2 ] = MESSAGE_TICK ;
228
- l = send (sc -> socket , c , 3 , 0 );
229
- if (l != 3 )
230
- return 0 ;
231
- #else
232
- char c ;
233
-
234
- c = MESSAGE_TICK ;
235
- l = send (sc -> socket , & c , 1 , 0 );
236
- if (l != 1 )
237
- return 0 ;
238
228
#endif
229
+ c [HEADER_LEN + 0 ] = MESSAGE_TICK ;
230
+ l = send (sc -> socket , c , HEADER_LEN + 1 , 0 );
231
+ if (l != (HEADER_LEN + 1 ))
232
+ return 0 ;
239
233
240
234
return 1 ;
241
235
}
@@ -246,25 +240,17 @@ int ipc_read_reply(struct ipc_softc *sc, int nchunks, const unsigned char *chunk
246
240
char buffer [MAX_LEN ];
247
241
ssize_t l ;
248
242
249
- #ifdef _WIN32
250
- len = nchunks + 4 ;
243
+ len = nchunks + HEADER_LEN + 2 ;
251
244
assert (len < MAX_LEN );
252
245
assert (nchunks < 256 );
253
246
247
+ #ifdef _WIN32
254
248
buffer [0 ] = len & 0xFF ;
255
249
buffer [1 ] = (0xFF00 & len ) >> 8 ;
256
- buffer [2 ] = MESSAGE_READ_REPLY ;
257
- buffer [3 ] = nchunks ;
258
- memcpy (& buffer [4 ], chunks , nchunks );
259
- #else
260
- len = nchunks + 2 ;
261
- assert (len < MAX_LEN );
262
- assert (nchunks < 256 );
263
-
264
- buffer [0 ] = MESSAGE_READ_REPLY ;
265
- buffer [1 ] = nchunks ;
266
- memcpy (& buffer [2 ], chunks , nchunks );
267
250
#endif
251
+ buffer [HEADER_LEN + 0 ] = MESSAGE_READ_REPLY ;
252
+ buffer [HEADER_LEN + 1 ] = nchunks ;
253
+ memcpy (& buffer [HEADER_LEN + 2 ], chunks , nchunks );
268
254
269
255
l = send (sc -> socket , buffer , len , 0 );
270
256
if (l != len )
0 commit comments