# File lib/Dnsruby/message.rb, line 486
    def to_s
      retval = "";
      
      if (@answerfrom != nil && @answerfrom != "")
        retval = retval + ";; Answer received from #{@answerfrom} (#{@answersize} bytes)\n;;\n";
      end
      retval = retval + ";; Security Level : #{@security_level.string}\n"
      
      retval = retval + ";; HEADER SECTION\n"
      # OPT pseudosection? EDNS flags, udpsize
      opt = get_opt
      if (!opt)
        retval = retval + @header.to_s
      else
        retval = retval + @header.to_s_with_rcode(rcode())
      end
      retval = retval + "\n"
      
      if (opt)
        retval = retval + opt.to_s
        retval = retval + "\n"
      end
            
      section = (@header.opcode == OpCode.UPDATE) ? "ZONE" : "QUESTION";
      retval = retval +  ";; #{section} SECTION (#{@header.qdcount}  record#{@header.qdcount == 1 ? '' : 's'})\n";
      each_question { |qr|
        retval = retval + ";; #{qr.to_s}\n";
      }
      
      if (@answer.size > 0)
        retval = retval + "\n";
        section = (@header.opcode == OpCode.UPDATE) ? "PREREQUISITE" : "ANSWER";
        retval = retval + ";; #{section} SECTION (#{@header.ancount}  record#{@header.ancount == 1 ? '' : 's'})\n";
        each_answer { |rr|
          retval = retval + rr.to_s + "\n";
        }
      end
      
      if (@authority.size > 0)
        retval = retval + "\n";
        section = (@header.opcode == OpCode.UPDATE) ? "UPDATE" : "AUTHORITY";
        retval = retval + ";; #{section} SECTION (#{@header.nscount}  record#{@header.nscount == 1 ? '' : 's'})\n";
        each_authority { |rr|
          retval = retval + rr.to_s + "\n";
        }
      end
      
      if ((@additional.size > 0 && !opt) || (@additional.size > 1))
        retval = retval + "\n";
        retval = retval + ";; ADDITIONAL SECTION (#{@header.arcount}  record#{@header.arcount == 1 ? '' : 's'})\n";
        each_additional { |rr|
          if (rr.type != Types::OPT)
            retval = retval + rr.to_s+ "\n"
          end
        }
      end
      
      return retval;
    end