#!/usr/bin/env perl

use strict;
use warnings;

use IO::Socket::INET;

my $version   = $ARGV[0];

my $socket = new IO::Socket::INET (
    LocalHost => '127.0.0.1',
    LocalPort => '5432',
    Proto => 'tcp',
    Listen => 5,
    ReuseAddr => 1
);
die "could not create socket $!\n" unless $socket;

while(1) {
    my $client_socket = $socket->accept();

    print "accepted connection\n";
	
    my $data = "";
    $client_socket->recv($data, 100);

	print "received '$data'\n";

	if ($version eq 'v2')
	{
		my $errordata = "Efake v2 error\n\0";
		$client_socket->send($errordata, 1024);

		print "sent V2 error, closing\n";
		$client_socket->close()
	}
	else
	{
		my $errordata = "E\x00\x00\x00\x09Mfake V3 message\0\0";
		$client_socket->send($errordata, 22);

		print "sent V3 error, closing\n";
		$client_socket->close()
	}
}
