X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_stats.c;h=867147591c195116773d2a62ce752232846d0919;hb=557de9b08007dd2b482778ba934574bcf7ee531f;hp=8928ee0909ec06bbba9ab23be4486d86fb2d948b;hpb=ca065f55235fd9979ede818963780f417d70c64e;p=m6w6%2Flibmemcached diff --git a/lib/memcached_stats.c b/lib/memcached_stats.c index 8928ee09..86714759 100644 --- a/lib/memcached_stats.c +++ b/lib/memcached_stats.c @@ -122,7 +122,7 @@ static memcached_return memcached_stats_fetch(memcached_st *ptr, { memcached_return rc; char buffer[HUGE_STRING_LEN]; - size_t send_length; + size_t send_length, sent_length; rc= memcached_connect(ptr); @@ -136,10 +136,21 @@ static memcached_return memcached_stats_fetch(memcached_st *ptr, send_length= snprintf(buffer, HUGE_STRING_LEN, "stats\r\n"); - if ((write(ptr->hosts[server_key].fd, buffer, send_length) == -1)) + if (send_length >= MEMCACHED_DEFAULT_COMMAND_SIZE) + return MEMCACHED_WRITE_FAILURE; + + sent_length= write(ptr->hosts[server_key].fd, buffer, send_length); + + if (sent_length == -1) { - fprintf(stderr, "failed on stats\n"); + fprintf(stderr, "error %s: write: %m\n", __FUNCTION__); + return MEMCACHED_WRITE_FAILURE; + } + if (sent_length != send_length) + { + fprintf(stderr, "error %s: short write %d %d: %m\n", + __FUNCTION__, sent_length, send_length); return MEMCACHED_WRITE_FAILURE; } @@ -207,9 +218,7 @@ memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_retur memcached_return memcached_stat_hostname(memcached_stat_st *stat, char *args, char *hostname, unsigned int port) { - size_t send_length; memcached_return rc; - char buffer[HUGE_STRING_LEN]; memcached_st memc; memcached_init(&memc);