mirror of
https://git.gnunet.org/libmicrohttpd.git
synced 2026-09-25 04:09:31 +03:00
websocket_threaded_example: fixed sprintf() usage, compiler warnings
This commit is contained in:
@@ -151,9 +151,9 @@ SHA1ProcessMessageBlock (struct SHA1Context *context)
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
W[i] = context->message_block[i * 4] << 24;
|
||||
W[i] |= context->message_block[i * 4 + 1] << 16;
|
||||
W[i] |= context->message_block[i * 4 + 2] << 8;
|
||||
W[i] = ((uint32_t) context->message_block[i * 4]) << 24;
|
||||
W[i] |= ((uint32_t) context->message_block[i * 4 + 1]) << 16;
|
||||
W[i] |= ((uint32_t) context->message_block[i * 4 + 2]) << 8;
|
||||
W[i] |= context->message_block[i * 4 + 3];
|
||||
}
|
||||
for (i = 16; i < 80; i++)
|
||||
@@ -237,14 +237,14 @@ SHA1PadMessage (struct SHA1Context *context)
|
||||
context->message_block[context->message_block_index++] = 0;
|
||||
}
|
||||
}
|
||||
context->message_block[56] = context->length_high >> 24;
|
||||
context->message_block[57] = context->length_high >> 16;
|
||||
context->message_block[58] = context->length_high >> 8;
|
||||
context->message_block[59] = context->length_high;
|
||||
context->message_block[60] = context->length_low >> 24;
|
||||
context->message_block[61] = context->length_low >> 16;
|
||||
context->message_block[62] = context->length_low >> 8;
|
||||
context->message_block[63] = context->length_low;
|
||||
context->message_block[56] = (unsigned char) (context->length_high >> 24);
|
||||
context->message_block[57] = (unsigned char) (context->length_high >> 16);
|
||||
context->message_block[58] = (unsigned char) (context->length_high >> 8);
|
||||
context->message_block[59] = (unsigned char) (context->length_high);
|
||||
context->message_block[60] = (unsigned char) (context->length_low >> 24);
|
||||
context->message_block[61] = (unsigned char) (context->length_low >> 16);
|
||||
context->message_block[62] = (unsigned char) (context->length_low >> 8);
|
||||
context->message_block[63] = (unsigned char) (context->length_low);
|
||||
SHA1ProcessMessageBlock (context);
|
||||
}
|
||||
|
||||
@@ -298,7 +298,8 @@ SHA1Result (struct SHA1Context *context, unsigned char
|
||||
for (i = 0; i < SHA1HashSize; ++i)
|
||||
{
|
||||
Message_Digest[i]
|
||||
= context->intermediate_hash[i >> 2] >> 8 * (3 - (i & 0x03));
|
||||
= (unsigned char) (context->intermediate_hash[i >> 2]
|
||||
>> 8 * (3 - (i & 0x03)));
|
||||
}
|
||||
return SHA1_RESULT_SUCCESS;
|
||||
}
|
||||
@@ -541,9 +542,13 @@ send_all (MHD_socket sock, const unsigned char *buf, size_t len)
|
||||
ssize_t ret;
|
||||
size_t off;
|
||||
|
||||
for (off = 0; off < len; off += ret)
|
||||
for (off = 0; off < len; off += (size_t) ret)
|
||||
{
|
||||
#if ! defined(_WIN32) || defined(__CYGWIN__)
|
||||
ret = send (sock, (const void *) &buf[off], len - off, 0);
|
||||
#else /* Native W32 */
|
||||
ret = send (sock, (const void *) &buf[off], (int) (len - off), 0);
|
||||
#endif /* Native W32 */
|
||||
if (0 > ret)
|
||||
{
|
||||
if (EAGAIN == errno)
|
||||
@@ -562,14 +567,14 @@ send_all (MHD_socket sock, const unsigned char *buf, size_t len)
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
static ssize_t
|
||||
ws_send_frame (MHD_socket sock, const char *msg, size_t length)
|
||||
{
|
||||
unsigned char *response;
|
||||
unsigned char frame[10];
|
||||
unsigned char idx_first_rdata;
|
||||
int idx_response;
|
||||
int output;
|
||||
size_t idx_response;
|
||||
size_t output;
|
||||
MHD_socket isock;
|
||||
size_t i;
|
||||
|
||||
@@ -614,7 +619,7 @@ ws_send_frame (MHD_socket sock, const char *msg, size_t length)
|
||||
}
|
||||
for (i = 0; i < length; i++)
|
||||
{
|
||||
response[idx_response] = msg[i];
|
||||
response[idx_response] = (unsigned char) msg[i];
|
||||
idx_response++;
|
||||
}
|
||||
response[idx_response] = '\0';
|
||||
@@ -630,7 +635,7 @@ ws_send_frame (MHD_socket sock, const char *msg, size_t length)
|
||||
}
|
||||
pthread_mutex_unlock (&MUTEX);
|
||||
free (response);
|
||||
return output;
|
||||
return (ssize_t) output;
|
||||
}
|
||||
|
||||
|
||||
@@ -643,7 +648,7 @@ ws_receive_frame (unsigned char *frame, ssize_t *length, int *type)
|
||||
unsigned char flength;
|
||||
unsigned char idx_first_mask;
|
||||
unsigned char idx_first_data;
|
||||
ssize_t data_length;
|
||||
size_t data_length;
|
||||
int i;
|
||||
int j;
|
||||
|
||||
@@ -663,7 +668,7 @@ ws_receive_frame (unsigned char *frame, ssize_t *length, int *type)
|
||||
idx_first_mask = 10;
|
||||
}
|
||||
idx_first_data = idx_first_mask + 4;
|
||||
data_length = *length - idx_first_data;
|
||||
data_length = (size_t) *length - idx_first_data;
|
||||
masks[0] = frame[idx_first_mask + 0];
|
||||
masks[1] = frame[idx_first_mask + 1];
|
||||
masks[2] = frame[idx_first_mask + 2];
|
||||
@@ -675,7 +680,7 @@ ws_receive_frame (unsigned char *frame, ssize_t *length, int *type)
|
||||
{
|
||||
msg[j] = frame[i] ^ masks[j % 4];
|
||||
}
|
||||
*length = data_length;
|
||||
*length = (ssize_t) data_length;
|
||||
msg[j] = '\0';
|
||||
}
|
||||
}
|
||||
@@ -698,12 +703,9 @@ run_usock (void *cls)
|
||||
struct MHD_UpgradeResponseHandle *urh = ws->urh;
|
||||
unsigned char buf[2048];
|
||||
unsigned char *msg;
|
||||
char client[20];
|
||||
char *text;
|
||||
ssize_t got;
|
||||
size_t size;
|
||||
int type;
|
||||
int sent;
|
||||
int i;
|
||||
|
||||
make_blocking (ws->sock);
|
||||
@@ -721,19 +723,26 @@ run_usock (void *cls)
|
||||
}
|
||||
if (type == WS_OPCODE_TEXT_FRAME)
|
||||
{
|
||||
size = sprintf (client, "User#%d: ", (int) ws->sock);
|
||||
size += got;
|
||||
text = malloc (size);
|
||||
if (NULL != text)
|
||||
ssize_t sent;
|
||||
int buf_size;
|
||||
buf_size = snprintf (NULL, 0, "User#%d: %s", (int) ws->sock, msg);
|
||||
if (0 < buf_size)
|
||||
{
|
||||
sprintf (text, "%s%s", client, msg);
|
||||
sent = ws_send_frame (ws->sock, text, size);
|
||||
free (text);
|
||||
text = malloc ((size_t) buf_size + 1);
|
||||
if (NULL != text)
|
||||
{
|
||||
if (snprintf (text, (size_t) buf_size + 1,
|
||||
"User#%d: %s", (int) ws->sock, msg) == buf_size)
|
||||
sent = ws_send_frame (ws->sock, text, (size_t) buf_size);
|
||||
else
|
||||
sent = -1;
|
||||
free (text);
|
||||
}
|
||||
else
|
||||
sent = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sent = -1;
|
||||
}
|
||||
free (msg);
|
||||
if (-1 == sent)
|
||||
{
|
||||
@@ -888,18 +897,19 @@ int
|
||||
main (int argc, char *const *argv)
|
||||
{
|
||||
struct MHD_Daemon *d;
|
||||
uint16_t port;
|
||||
unsigned int port;
|
||||
size_t i;
|
||||
|
||||
if (argc != 2)
|
||||
if ( (argc != 2) ||
|
||||
(1 != sscanf (argv[1], "%u", &port)) ||
|
||||
(65535 < port) )
|
||||
{
|
||||
printf ("%s PORT\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
port = atoi (argv[1]);
|
||||
d = MHD_start_daemon (MHD_ALLOW_UPGRADE | MHD_USE_AUTO_INTERNAL_THREAD
|
||||
| MHD_USE_ERROR_LOG,
|
||||
port, NULL, NULL, &ahc_cb, &port, MHD_OPTION_END);
|
||||
(uint16_t) port, NULL, NULL,
|
||||
&ahc_cb, NULL, MHD_OPTION_END);
|
||||
if (NULL == d)
|
||||
return 1;
|
||||
for (i = 0; i < sizeof(CLIENT_SOCKS) / sizeof(CLIENT_SOCKS[0]); ++i)
|
||||
|
||||
Reference in New Issue
Block a user