23
23
24
24
#ifdef _WIN32
25
25
#include <BaseTsd.h>
26
- typedef SSIZE_T ssize_t ;
27
26
#include <WS2tcpip.h>
28
27
#include <winsock2.h>
29
28
@@ -33,11 +32,17 @@ typedef SSIZE_T ssize_t;
33
32
/* On Windows the invalid socket's value of INVALID_SOCKET */
34
33
#define JERRYX_SOCKET_INVALID INVALID_SOCKET
35
34
36
- /* On Windows sockets have a SOCKET typedef */
37
- typedef SOCKET jerryx_socket ;
38
-
35
+ /*
36
+ * On Windows, socket functions have the following signatures:
37
+ * int send(SOCKET s, const char *buf, int len, int flags);
38
+ * int recv(SOCKET s, char *buf, int len, int flags);
39
+ * int setsockopt(SOCKET s, int level, int optname, const char *optval, int optlen);
40
+ */
41
+ typedef int jerryx_socket_ssize_t ;
42
+ typedef SOCKET jerryx_socket_t ;
43
+ typedef char jerryx_socket_void_t ;
44
+ typedef int jerryx_socket_size_t ;
39
45
#else /* !_WIN32 */
40
-
41
46
#include <arpa/inet.h>
42
47
#include <fcntl.h>
43
48
#include <sys/socket.h>
@@ -49,8 +54,16 @@ typedef SOCKET jerryx_socket;
49
54
/* On *nix the invalid socket has a value of -1 */
50
55
#define JERRYX_SOCKET_INVALID (-1)
51
56
52
- /* On *nix the sockets are integer identifiers */
53
- typedef int jerryx_socket ;
57
+ /*
58
+ * On *nix, socket functions have the following signatures:
59
+ * ssize_t send(int sockfd, const void *buf, size_t len, int flags);
60
+ * ssize_t recv(int sockfd, void *buf, size_t len, int flags);
61
+ * int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
62
+ */
63
+ typedef ssize_t jerryx_socket_ssize_t ;
64
+ typedef int jerryx_socket_t ;
65
+ typedef void jerryx_socket_void_t ;
66
+ typedef size_t jerryx_socket_size_t ;
54
67
#endif /* _WIN32 */
55
68
56
69
/**
@@ -59,7 +72,7 @@ typedef int jerryx_socket;
59
72
typedef struct
60
73
{
61
74
jerry_debugger_transport_header_t header ; /**< transport header */
62
- jerryx_socket tcp_socket ; /**< tcp socket */
75
+ jerryx_socket_t tcp_socket ; /**< tcp socket */
63
76
} jerryx_debugger_transport_tcp_t ;
64
77
65
78
/**
@@ -85,7 +98,7 @@ jerryx_debugger_tcp_get_errno (void)
85
98
* Correctly close a single socket.
86
99
*/
87
100
static inline void
88
- jerryx_debugger_tcp_close_socket (jerryx_socket socket_id ) /**< socket to close */
101
+ jerryx_debugger_tcp_close_socket (jerryx_socket_t socket_id ) /**< socket to close */
89
102
{
90
103
#ifdef _WIN32
91
104
closesocket (socket_id );
@@ -109,7 +122,7 @@ jerryx_debugger_tcp_log_error (int errno_value) /**< error value to log */
109
122
char * error_message = NULL ;
110
123
FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS ,
111
124
NULL ,
112
- errno_value ,
125
+ ( DWORD ) errno_value ,
113
126
MAKELANGID (LANG_NEUTRAL , SUBLANG_DEFAULT ),
114
127
(LPTSTR ) & error_message ,
115
128
0 ,
@@ -152,6 +165,7 @@ jerryx_debugger_tcp_send (jerry_debugger_transport_header_t *header_p, /**< tcp
152
165
JERRYX_ASSERT (jerry_debugger_transport_is_connected ());
153
166
154
167
jerryx_debugger_transport_tcp_t * tcp_p = (jerryx_debugger_transport_tcp_t * ) header_p ;
168
+ jerryx_socket_size_t remaining_bytes = (jerryx_socket_size_t ) message_length ;
155
169
156
170
do
157
171
{
@@ -167,7 +181,8 @@ jerryx_debugger_tcp_send (jerry_debugger_transport_header_t *header_p, /**< tcp
167
181
}
168
182
#endif /* __linux__ */
169
183
170
- ssize_t sent_bytes = send (tcp_p -> tcp_socket , message_p , message_length , 0 );
184
+ const jerryx_socket_void_t * message_to_send_p = (const jerryx_socket_void_t * ) message_p ;
185
+ jerryx_socket_ssize_t sent_bytes = send (tcp_p -> tcp_socket , message_to_send_p , remaining_bytes , 0 );
171
186
172
187
if (sent_bytes < 0 )
173
188
{
@@ -184,9 +199,9 @@ jerryx_debugger_tcp_send (jerry_debugger_transport_header_t *header_p, /**< tcp
184
199
}
185
200
186
201
message_p += sent_bytes ;
187
- message_length -= (size_t ) sent_bytes ;
202
+ remaining_bytes -= (jerryx_socket_size_t ) sent_bytes ;
188
203
}
189
- while (message_length > 0 );
204
+ while (remaining_bytes > 0 );
190
205
191
206
return true;
192
207
} /* jerryx_debugger_tcp_send */
@@ -200,10 +215,12 @@ jerryx_debugger_tcp_receive (jerry_debugger_transport_header_t *header_p, /**< t
200
215
{
201
216
jerryx_debugger_transport_tcp_t * tcp_p = (jerryx_debugger_transport_tcp_t * ) header_p ;
202
217
203
- uint8_t * buffer_p = receive_context_p -> buffer_p + receive_context_p -> received_length ;
204
- size_t buffer_size = JERRY_DEBUGGER_TRANSPORT_MAX_BUFFER_SIZE - receive_context_p -> received_length ;
218
+ jerryx_socket_void_t * buffer_p = (jerryx_socket_void_t * ) (receive_context_p -> buffer_p
219
+ + receive_context_p -> received_length );
220
+ jerryx_socket_size_t buffer_size = (jerryx_socket_size_t ) (JERRY_DEBUGGER_TRANSPORT_MAX_BUFFER_SIZE
221
+ - receive_context_p -> received_length );
205
222
206
- ssize_t length = recv (tcp_p -> tcp_socket , buffer_p , buffer_size , 0 );
223
+ jerryx_socket_ssize_t length = recv (tcp_p -> tcp_socket , buffer_p , buffer_size , 0 );
207
224
208
225
if (length <= 0 )
209
226
{
@@ -241,7 +258,7 @@ jerryx_debugger_tcp_receive (jerry_debugger_transport_header_t *header_p, /**< t
241
258
* false if there was an error
242
259
*/
243
260
static bool
244
- jerryx_debugger_tcp_configure_socket (jerryx_socket server_socket , /** < socket to configure */
261
+ jerryx_debugger_tcp_configure_socket (jerryx_socket_t server_socket , /** < socket to configure */
245
262
uint16_t port ) /** < port number to be used for the socket */
246
263
{
247
264
struct sockaddr_in addr ;
@@ -250,9 +267,12 @@ jerryx_debugger_tcp_configure_socket (jerryx_socket server_socket, /** < socket
250
267
addr .sin_port = htons (port );
251
268
addr .sin_addr .s_addr = INADDR_ANY ;
252
269
253
- int opt_value = 1 ;
270
+ const int opt_value = 1 ;
254
271
255
- if (setsockopt (server_socket , SOL_SOCKET , SO_REUSEADDR , & opt_value , sizeof (int )) != 0 )
272
+ if (setsockopt (server_socket ,
273
+ SOL_SOCKET , SO_REUSEADDR ,
274
+ (const jerryx_socket_void_t * ) & opt_value ,
275
+ sizeof (int )) != 0 )
256
276
{
257
277
return false;
258
278
}
@@ -289,7 +309,7 @@ jerryx_debugger_tcp_create (uint16_t port) /**< listening port */
289
309
}
290
310
#endif /* _WIN32*/
291
311
292
- jerryx_socket server_socket = socket (AF_INET , SOCK_STREAM , 0 );
312
+ jerryx_socket_t server_socket = socket (AF_INET , SOCK_STREAM , 0 );
293
313
if (server_socket == JERRYX_SOCKET_INVALID )
294
314
{
295
315
jerryx_debugger_tcp_log_error (jerryx_debugger_tcp_get_errno ());
@@ -309,7 +329,7 @@ jerryx_debugger_tcp_create (uint16_t port) /**< listening port */
309
329
struct sockaddr_in addr ;
310
330
socklen_t sin_size = sizeof (struct sockaddr_in );
311
331
312
- jerryx_socket tcp_socket = accept (server_socket , (struct sockaddr * ) & addr , & sin_size );
332
+ jerryx_socket_t tcp_socket = accept (server_socket , (struct sockaddr * ) & addr , & sin_size );
313
333
314
334
jerryx_debugger_tcp_close_socket (server_socket );
315
335
@@ -322,7 +342,7 @@ jerryx_debugger_tcp_create (uint16_t port) /**< listening port */
322
342
/* Set non-blocking mode. */
323
343
#ifdef _WIN32
324
344
u_long nonblocking_enabled = 1 ;
325
- if (ioctlsocket (tcp_socket , FIONBIO , & nonblocking_enabled ) != NO_ERROR )
345
+ if (ioctlsocket (tcp_socket , ( long ) FIONBIO , & nonblocking_enabled ) != NO_ERROR )
326
346
{
327
347
jerryx_debugger_tcp_close_socket (tcp_socket );
328
348
return false;
0 commit comments