diff --git a/TFTPServer/TFTPServer/Server.cs b/TFTPServer/TFTPServer/Server.cs
index c97ebd584f5af8b1e0ad725383e383cc313ea6dd..332295f0a96caf9a9aa5226720c8582c61c2fc1b 100644
--- a/TFTPServer/TFTPServer/Server.cs
+++ b/TFTPServer/TFTPServer/Server.cs
@@ -114,6 +114,7 @@ namespace TFTPServer
         /// <param name="remote"></param>
         private static bool WaitAcknowledge(int number, EndPoint remote)
         {
+            socket.ReceiveTimeout = socket_timeout;
             byte[] buffer = new byte[4];
             try
             {
@@ -127,9 +128,12 @@ namespace TFTPServer
                     SendError(remote, ERROR_CODE.Not_defined, "invalid ack packet");
                     return false;
                 }
+
+                socket.ReceiveTimeout = 30000;
                 return true;
             } catch (SocketException)
             {
+                socket.ReceiveTimeout = 30000;
                 return false;
             }
         }
@@ -329,7 +333,6 @@ namespace TFTPServer
             {
                 socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                 socket.Bind(iep);
-                socket.ReceiveTimeout = socket_timeout;
             }
             catch (Exception ex)
             {
@@ -355,15 +358,6 @@ namespace TFTPServer
                     case (int)PACKET_TYPE.WRQ:
                         WriteRequest(buffer, remote);
                         break;
-                    case (int)PACKET_TYPE.DATA:
-                        DataRequest(buffer);
-                        break;
-                    case (int)PACKET_TYPE.ACK:
-                        AckResponse(buffer);
-                        break;
-                    case (int)PACKET_TYPE.ERROR:
-                        ErrorResponse(buffer);
-                        break;
                     default:
                         break;
                 }