shlist

share and manage lists between multiple people
Log | Files | Refs

commit 17d14e4ad1a30d1b7a300b77aa18008dc767c066
parent 94ea20006403a5efa47d1295115cdaec826e2730
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Sun, 24 May 2015 22:52:39 -0600

sl: unpack and print peer address upon connection

Also remove some overly verbose info messages.

Diffstat:
Msl | 21++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/sl b/sl @@ -5,7 +5,7 @@ use strict; use DBI; use Digest::SHA qw(sha256_hex); -use IO::Socket; +use IO::Socket qw(getnameinfo NI_NUMERICHOST NI_NUMERICSERV); use Scalar::Util qw(looks_like_number); use Socket; @@ -56,21 +56,19 @@ my $sql = qq{insert into lists (list_id, phone_num, name, timestamp) my $new_list_sth = $dbh->prepare($sql); print "info: ready for connections\n"; -while (my ($new_sock, $peer_addr_bin) = $sock->accept()) { +while (my ($new_sock, $bin_addr) = $sock->accept()) { - # I don't know how to reliably detect whether its ipv4 or ipv6 - # my $peer_addr = Socket::inet_ntop(AF_INET6, $peer_addr_bin); + my ($err, $addr, $port) = getnameinfo($bin_addr, NI_NUMERICHOST | NI_NUMERICSERV); + print "warn: getnameinfo() failed: $err\n" if ($err); + print "info: new connection from $addr:$port\n"; read $new_sock, my $msg_type, 1; - if ($msg_type == 1) { - # new list - - print "msg_type is new list\n"; - read $new_sock, my $new_list_size, 2; - # my $hdr = "$peer_addr: new list"; + if ($msg_type == 1) { my $hdr = "new list"; + print "info: received msg type = new list\n"; + read $new_sock, my $new_list_size, 2; if (!looks_like_number($new_list_size)) { print "warn: $hdr: $new_list_size is not a number, skipping\n"; close($new_sock); @@ -79,10 +77,7 @@ while (my ($new_sock, $peer_addr_bin) = $sock->accept()) { # we know this is safe $new_list_size = int($new_list_size); - print "info: $hdr: message size = $new_list_size\n"; read($new_sock, my $new_list, $new_list_size); - - print "info: $hdr: raw message: $new_list\n"; my ($phone_num, $name) = split("\0", $new_list); unless ($name && $name ne "") {