projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Deal with excess bytes in HTTP response for keepalive YAZ-830
[yaz-moved-to-github.git]
/
util
/
yaz-url.c
diff --git
a/util/yaz-url.c
b/util/yaz-url.c
index
cf9974f
..
cebf2ba
100644
(file)
--- a/
util/yaz-url.c
+++ b/
util/yaz-url.c
@@
-1,10
+1,10
@@
/* This file is part of the YAZ toolkit.
/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2012 Index Data
+ * Copyright (C) Index Data
* See the file LICENSE for details.
*/
#if HAVE_CONFIG_H
* See the file LICENSE for details.
*/
#if HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
#endif
#include <string.h>
#endif
#include <string.h>
@@
-13,6
+13,7
@@
#include <yaz/url.h>
#include <yaz/options.h>
#include <yaz/log.h>
#include <yaz/url.h>
#include <yaz/options.h>
#include <yaz/log.h>
+#include <yaz/backtrace.h>
static void usage(void)
{
static void usage(void)
{
@@
-21,7
+22,9
@@
static void usage(void)
printf(" -m method Sets HTTP method\n");
printf(" -O fname Writes HTTP content to file\n");
printf(" -p fname POSTs file at following url\n");
printf(" -m method Sets HTTP method\n");
printf(" -O fname Writes HTTP content to file\n");
printf(" -p fname POSTs file at following url\n");
+ printf(" -R num Set maximum number of HTTP redirects\n");
printf(" -u user/password Sets Basic HTTP auth\n");
printf(" -u user/password Sets Basic HTTP auth\n");
+ printf(" -v Verbose\n");
printf(" -x proxy Sets HTTP proxy\n");
exit(1);
}
printf(" -x proxy Sets HTTP proxy\n");
exit(1);
}
@@
-43,9
+46,15
@@
static char *get_file(const char *fname, size_t *len)
*len = ftell(inf);
if (*len) /* zero length not considered an error */
{
*len = ftell(inf);
if (*len) /* zero length not considered an error */
{
+ size_t r;
buf = xmalloc(*len);
fseek(inf, 0L, SEEK_SET);
buf = xmalloc(*len);
fseek(inf, 0L, SEEK_SET);
- (void) fread(buf, 1, *len, inf);
+ r = fread(buf, 1, *len, inf);
+ if (r != *len)
+ {
+ yaz_log(YLOG_FATAL|YLOG_ERRNO, "short fread of %s", fname);
+ exit(1);
+ }
}
fclose(inf);
return buf;
}
fclose(inf);
return buf;
@@
-66,7
+75,8
@@
int main(int argc, char **argv)
int no_urls = 0;
const char *outfname = 0;
int no_urls = 0;
const char *outfname = 0;
- while ((ret = options("hH:m:O:p:u:x:", argv, argc, &arg))
+ yaz_enable_panic_backtrace(*argv);
+ while ((ret = options("h{help}H:m:O:p:R{max-redirs}:u:vx:", argv, argc, &arg))
!= YAZ_OPTIONS_EOF)
{
switch (ret)
!= YAZ_OPTIONS_EOF)
{
switch (ret)
@@
-103,6
+113,9
@@
int main(int argc, char **argv)
post_buf = get_file(arg, &post_len);
method = "POST";
break;
post_buf = get_file(arg, &post_len);
method = "POST";
break;
+ case 'R':
+ yaz_url_set_max_redirects(p, atoi(arg));
+ break;
case 'u':
if (strchr(arg, '/'))
{
case 'u':
if (strchr(arg, '/'))
{
@@
-117,6
+130,9
@@
int main(int argc, char **argv)
else
z_HTTP_header_add_basic_auth(odr, &http_headers, arg, 0);
break;
else
z_HTTP_header_add_basic_auth(odr, &http_headers, arg, 0);
break;
+ case 'v':
+ yaz_url_set_verbose(p, 1);
+ break;
case 'x':
yaz_url_set_proxy(p, arg);
break;
case 'x':
yaz_url_set_proxy(p, arg);
break;