#include <netdb.h>
 #include <sys/time.h>
 #include <unistd.h>
+#include <stdint.h>
 
 #include "cjobid.h"
 #include "strmd5.h"
     struct timeval tv;
     int skip;
     char* portbeg;
-    char* rndaddr = NULL;
+    int rndaddr = 0;
 
     struct hostent* he;
 
        srandom(tv.tv_usec);
        gethostname(hostname, 100);
        he = gethostbyname(hostname);
-       if (!he) asprintf(&rndaddr,"%d.%d.%d.%d",rand()%256,rand()%256,rand()%256,rand()%256);
+       if (he) rndaddr = *((uint32_t *)he->h_addr_list[0]);
+       else {
+#define RAND8 (rand() & 0xFF)
+#define RAND16 (RAND8 << 8 | RAND8)
+               rndaddr = RAND16 << 16 | RAND16;
+       }
 
        skip = strlen(hostname);
        skip += sprintf(hostname + skip, "-IP:0x%x-pid:%d-rnd:%d-time:%d:%d",
-                   rndaddr ? rndaddr : *((int*)he->h_addr_list[0]),
+                   rndaddr,
                    getpid(), (int)random(), (int)tv.tv_sec, (int)tv.tv_usec);
-       free(rndaddr);
     }
 
     *jobId = NULL;