|
17 | 17 | #define DEFAULT_LOG_FMT "ABDhmsvRti"
|
18 | 18 | #define UDP 0
|
19 | 19 | #define TCP 1
|
20 |
| -#define RECONNECT_INTERVAL 120000000 |
| 20 | +//#define RECONNECT_INTERVAL 120000000 // reconnect every 2min |
| 21 | +#define RECONNECT_INTERVAL 0 |
21 | 22 | #define MIN_CONNECTIONS 1
|
22 |
| -#define MAX_CONNECTIONS 5 |
| 23 | +#define MAX_CONNECTIONS 3 |
23 | 24 | #define SEND_BUFFER 1048576
|
24 | 25 |
|
25 | 26 | module AP_MODULE_DECLARE_DATA log_gelf_module;
|
@@ -406,10 +407,11 @@ static int log_gelf_transaction(request_rec *request) {
|
406 | 407 | }
|
407 | 408 |
|
408 | 409 | char* json = log_gelf_make_json(request);
|
| 410 | + |
409 | 411 | if (config->protocol == TCP) {
|
410 | 412 | /* allocate memory for actual log message */
|
411 | 413 | tdata = apr_palloc(request->pool, sizeof(transferData));
|
412 |
| - memset(tdata, 0, sizeof(transferData)); |
| 414 | + memset(tdata, '\0', sizeof(transferData)); |
413 | 415 | tdata->data = json;
|
414 | 416 | tdata->size = strlen(json);
|
415 | 417 | log_gelf_send_message_tcp(tdata, request);
|
@@ -454,12 +456,14 @@ char * log_gelf_make_json(request_rec *request) {
|
454 | 456 | }
|
455 | 457 |
|
456 | 458 | /* get json string */
|
457 |
| - const char * str = json_object_to_json_string_ext(object, JSON_C_TO_STRING_PLAIN); |
| 459 | + const char * json_str = json_object_to_json_string_ext(object, JSON_C_TO_STRING_PLAIN); |
| 460 | + char *result = apr_pcalloc(request->pool, strlen(json_str)+1); |
| 461 | + apr_cpystrn(result, json_str, strlen(json_str)+1); |
458 | 462 |
|
459 | 463 | /* free temporary json object */
|
460 | 464 | json_object_put(object);
|
461 | 465 |
|
462 |
| - return apr_pstrdup(request->pool, str); |
| 466 | + return result; |
463 | 467 | }
|
464 | 468 |
|
465 | 469 | json_object * json_add_string(json_object *jobj, const char *key, const char *value) {
|
@@ -490,7 +494,7 @@ transferData* log_gelf_zlib_compress(const char *line, request_rec *request) {
|
490 | 494 | void * buf = apr_palloc(request->pool, len);
|
491 | 495 |
|
492 | 496 | strm = apr_palloc(request->pool, sizeof(z_stream));
|
493 |
| - memset(strm, 0, sizeof(z_stream)); |
| 497 | + memset(strm, '\0', sizeof(z_stream)); |
494 | 498 | strm->zalloc = Z_NULL;
|
495 | 499 | strm->zfree = Z_NULL;
|
496 | 500 | strm->opaque = Z_NULL;
|
@@ -518,7 +522,7 @@ transferData* log_gelf_zlib_compress(const char *line, request_rec *request) {
|
518 | 522 |
|
519 | 523 | /* create data to transfer */
|
520 | 524 | transferData * ret = apr_palloc(request->pool, sizeof(transferData));
|
521 |
| - memset(ret, 0, sizeof(transferData)); |
| 525 | + memset(ret, '\0', sizeof(transferData)); |
522 | 526 | ret->data = buf;
|
523 | 527 | ret->size = csize;
|
524 | 528 |
|
@@ -593,9 +597,9 @@ void log_gelf_send_message_tcp(const transferData* payload, request_rec *request
|
593 | 597 | "mod_log_gelf: Error writing to socket %d bytes. Error %s",
|
594 | 598 | payload->size, apr_strerror(rv, errbuf, sizeof(errbuf)));
|
595 | 599 | apr_reslist_invalidate(config->connection_pool, con) ;
|
| 600 | + } else { |
| 601 | + log_gelf_connection_release(request, con); |
596 | 602 | }
|
597 |
| - |
598 |
| - log_gelf_connection_release(request, con); |
599 | 603 | }
|
600 | 604 |
|
601 | 605 | double log_gelf_get_timestamp() {
|
|
0 commit comments