312
312
case GEARMAN_COMMAND_GET_STATUS:
313
/* This may not be NULL terminated, so copy to make sure it is. */
314
snprintf(job_handle, GEARMAN_JOB_HANDLE_SIZE, "%.*s",
315
(uint32_t)(packet->arg_size[0]), (char *)(packet->arg[0]));
317
server_job= gearman_server_job_get(server_con->thread->server, job_handle, NULL);
319
/* Queue status result packet. */
320
if (server_job == NULL)
322
ret= gearman_server_io_packet_add(server_con, false,
323
GEARMAN_MAGIC_RESPONSE,
324
GEARMAN_COMMAND_STATUS_RES, job_handle,
325
(size_t)(strlen(job_handle) + 1),
326
"0", (size_t)2, "0", (size_t)2, "0",
327
(size_t)2, "0", (size_t)1, NULL);
331
snprintf(numerator_buffer, 11, "%u", server_job->numerator);
332
snprintf(denominator_buffer, 11, "%u", server_job->denominator);
334
ret= gearman_server_io_packet_add(server_con, false,
335
GEARMAN_MAGIC_RESPONSE,
336
GEARMAN_COMMAND_STATUS_RES, job_handle,
337
(size_t)(strlen(job_handle) + 1),
339
server_job->worker == NULL ? "0" : "1",
340
(size_t)2, numerator_buffer,
341
(size_t)(strlen(numerator_buffer) + 1),
343
(size_t)strlen(denominator_buffer),
347
if (ret != GEARMAN_SUCCESS)
315
/* This may not be NULL terminated, so copy to make sure it is. */
316
check_length= snprintf(job_handle, GEARMAN_JOB_HANDLE_SIZE, "%.*s",
317
(int)(packet->arg_size[0]), (char *)(packet->arg[0]));
319
if (check_length >= GEARMAN_JOB_HANDLE_SIZE || GEARMAN_JOB_HANDLE_SIZE < 0)
320
return GEARMAN_MEMORY_ALLOCATION_FAILURE;
322
server_job= gearman_server_job_get(server_con->thread->server, job_handle, NULL);
324
/* Queue status result packet. */
325
if (server_job == NULL)
327
ret= gearman_server_io_packet_add(server_con, false,
328
GEARMAN_MAGIC_RESPONSE,
329
GEARMAN_COMMAND_STATUS_RES, job_handle,
330
(size_t)(strlen(job_handle) + 1),
331
"0", (size_t)2, "0", (size_t)2, "0",
332
(size_t)2, "0", (size_t)1, NULL);
336
check_length= snprintf(numerator_buffer, sizeof(numerator_buffer), "%u", server_job->numerator);
337
if ((size_t)check_length >= sizeof(numerator_buffer) || sizeof(numerator_buffer) < 0)
338
return GEARMAN_MEMORY_ALLOCATION_FAILURE;
340
check_length= snprintf(denominator_buffer, sizeof(denominator_buffer), "%u", server_job->denominator);
341
if ((size_t)check_length >= sizeof(denominator_buffer) || sizeof(denominator_buffer) < 0)
342
return GEARMAN_MEMORY_ALLOCATION_FAILURE;
344
ret= gearman_server_io_packet_add(server_con, false,
345
GEARMAN_MAGIC_RESPONSE,
346
GEARMAN_COMMAND_STATUS_RES, job_handle,
347
(size_t)(strlen(job_handle) + 1),
349
server_job->worker == NULL ? "0" : "1",
350
(size_t)2, numerator_buffer,
351
(size_t)(strlen(numerator_buffer) + 1),
353
(size_t)strlen(denominator_buffer),
357
if (ret != GEARMAN_SUCCESS)
352
363
case GEARMAN_COMMAND_OPTION_REQ:
353
364
/* This may not be NULL terminated, so copy to make sure it is. */
354
365
snprintf(option, GEARMAN_OPTION_SIZE, "%.*s",
355
(uint32_t)(packet->arg_size[0]), (char *)(packet->arg[0]));
366
(int)(packet->arg_size[0]), (char *)(packet->arg[0]));
357
368
if (!strcasecmp(option, "exceptions"))