Commit facfa19c authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

weirdo hack to fix debian bug report 278691:

'curl -v writes debugging to its network socket if stderr is closed'
parent 3347ced8
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -6,6 +6,15 @@

                                  Changelog

Daniel (8 November 2004)
- Ian Gulliver reported in debian bug report #278691: if curl is invoked in an
  environment where stderr is closed the -v output will still be sent to file
  descriptor 2 which then might be the network socket handle! Now we have a
  weird hack instead that attempts to make sure that file descriptor 2 is
  opened (with a call to pipe()) before libcurl is called to do the transfer.
  configure now checks for pipe() and systems without pipe don't get the weird
  hack done.

Daniel (5 November 2004)
- Tim Sneddon made libcurl send no more than 64K in a single first chunk when
  doing a huge POST on VMS, as this is a system limitation. Default on general
+1 −0
Original line number Diff line number Diff line
@@ -1227,6 +1227,7 @@ AC_CHECK_FUNCS( strtoll \
                basename \
                setlocale \
                ftruncate \
                pipe \
                poll,
dnl if found
[],
+6 −0
Original line number Diff line number Diff line
@@ -109,3 +109,9 @@

/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY

/* Define to 1 if you have the `ftruncate' function. */
#undef HAVE_FTRUNCATE

/* Define to 1 if you have the `pipe' function. */
#undef HAVE_PIPE
+23 −0
Original line number Diff line number Diff line
@@ -3771,12 +3771,35 @@ operate(struct Configurable *config, int argc, char *argv[])
  return res;
}

static void checkfds(void);

static void checkfds(void)
{
#ifdef HAVE_PIPE
  int fd[2] = { STDIN_FILENO, STDIN_FILENO };
  while( fd[0] == STDIN_FILENO ||
         fd[0] == STDOUT_FILENO ||
         fd[0] == STDERR_FILENO ||
         fd[1] == STDIN_FILENO ||
         fd[1] == STDOUT_FILENO ||
         fd[1] == STDERR_FILENO )
    pipe(fd);

  close(fd[0]);
  close(fd[1]);
#endif
}



int main(int argc, char *argv[])
{
  int res;
  struct Configurable config;
  memset(&config, 0, sizeof(struct Configurable));

  checkfds();

  res = operate(&config, argc, argv);
  free_config_fields(&config);