Code freezes if dsl line is down

There are a couple things are not correct.

  1. Do not use the protocol on the server name
// change this...
char serverName[] = "http://www.abc.com";
...to this
char serverName[] = "www.abc.com";
  1. This has the wrong parameters.
// change this...
Ethernet.begin(mac, ip, subnet, gateway);
...to this
Ethernet.begin(mac, ip, gateway, gateway, subnet);

The first gateway is actually the dns server. If you are using dns and a dns server, specify that in your network stuff and use it there. Like this:

IPAddress dnServer(1,2,3,4);

Ethernet.begin(mac, ip, dnServer, gateway, subnet);