Bacula version 1.32c released

Kern Sibbald <[email protected]> 30 Oct 2003 11:13:15 +0100
Newsgroups gmane.comp.sysutils.backup.bacula.announce,gmane.comp.bacula.user
Message-ID <1067508794.14335.410.camel@rufus>
Hello,

I've just posted Bacula version 1.32c source code
and Windows binaries to Source Forge, and have
asked Scott to prepare the rpms, so they should
be available shortly.

This version is totally compatible with any
previous 1.32 -- that is as long as you have
1.32, 1.32a, or 1.32b installed, you need
not upgrade everything at the same time

There are two main features in this version:
1. I "finally" have the gnome-console working
   on Gnome 2.0 (or higher), and Gnome 1.4
   is also supported (in a different source 
   directory). The ./configure select the correct
   one.

2. I'm 95% sure I have solved the elusive Windows
   "Packet size too big" problem. As a consequence,
   if you are using any Windows Clients you will
   definitely want to upgrade.

Most Significant Changes since 1.32b
- Implemented a RunAfterFailedJob record in the Job resource.
- Implemented "delete job" command in the Console.
- Gnome 2.0 console compiles and works.
- Implemented VerifyJob record in the Job resource
  that tells Verify which job to verify (JobId not required)
- First cut Verify Disk to Catalog
- Fix "status dir" to examine all run commands in Schedule.
- Close unused file descriptors in bpipe.c
- There is now a patch for FreeBSD 4.8 pthreads that
  fixes the problems of data loss at the end of a tape.
  Please see:
  <bacula-source>/platforms/freebsd/pthreads-fix.txt
- Fixed (I think) the elusive Windows "packet too big" bug.
- Added %v to RunBefore/After editing codes. It edits in
  a list of Volumes used for the job (not tested).
 
If you want more details, please see the ChangeLog.

Best regards,

Kern

==== Windows "Packet too big" bug =======

For those of you who are interested in the Windows bug,
solving it started with Alexander Schremmer reporting
that turning on debug code in apcupsd (UPS control
program) caused apcupsd to shutdown his system because
the debug output was being sent to his serial port. Not
too nice, but it didn't seem very likely that debug
output was going to the serial port and who really
cares about seeing debug code under Windows?  
Nevertheless, he stuck with it and discovered that 
the serial port was opened on file descriptor
1 (stdout). This is because Windows being very intelligent
(sarcasm) doesn't bother to open stdin, stdout,
and stderr for a Windowing program. As a consequence,
the first files that are opened will be allocated to 
those descriptors. Which means that if the program
writes debug code to stdout, it will go straight
to the serial port.

It then dawned on me that the same thing was happening
on Bacula, namely that the communicates sockets were
being opened on stdin, stdout, and stderr, and that
if there is a stray error message printed, it would
blast the comm socket giving the packet too big 
error.

The solution is simple: very early in the program, open
/dev/null. If the fd is greater than 2, close it and
continue.  If the fd is less to or equal to 2, 
keep it open -- do the same for fd 0 and 1. So no
sockets will be opened on stdin, stdout, or stderr,
and any code that uses them will simply go to
/dev/null. Rather amusing, isn't it?

======= end Windows bug =======







-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?   SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/