};
struct _request {
int fd;
- char url[8192];
+ char *url;
char method[16];
char requestbodyfile[256];
char buf[READ_BUF_SZ * 2 + 1];
int maxfd = 0;
+static void
+free_request(struct _request *r)
+{
+ if (r->url)
+ free(r->url);
+ free(r);
+}
+
char *
mkrfc850(t)
time_t *t;
fprintf(trace_file, "%s %s %s %d 0x%lx\n",
r->method, r->url, r->requestbodyfile, r->bodysize, r->sum);
}
- free(r);
+ free_request(r);
}
struct _request *
checksum = "-";
r = calloc(1, sizeof *r);
assert(r != NULL);
- strcpy(r->url, url);
+ r->url = strdup(url);
+ assert(r->url);
strcpy(r->method, method);
strcpy(r->requestbodyfile, file);
r->fd = s;
if ((len2 = write(s, msg, len)) != len) {
close(s);
perror("write request");
- free(r);
+ free_request(r);
return NULL;
} else
total_bytes_written += len2;
if (len2 < 0) {
perror("write body");
close(s);
- free(r);
+ free_request(r);
}
}
if (len < 0) {