diff --git a/Datagram.cpp b/Datagram.cpp
index 0802295a..1a97afc5 100644
--- a/Datagram.cpp
+++ b/Datagram.cpp
@@ -221,6 +221,11 @@ namespace datagram
 		{
 			// try to get one
 			if(m_RemoteLeaseSet) m_RoutingSession = m_LocalDestination->GetRoutingSession(m_RemoteLeaseSet, true);
+			else
+			{
+				UpdateLeaseSet(msg);
+				return;
+			}
 		}
 		// do we have a routing session?
 		if(m_RoutingSession)
@@ -261,7 +266,7 @@ namespace datagram
 		}
 		auto now = i2p::util::GetMillisecondsSinceEpoch ();
 		// if this path looks dead reset the routing path since we didn't seem to be able to get a path in time
-		if (now - m_LastPathChange >= DATAGRAM_SESSION_PATH_TIMEOUT ) ResetRoutingPath();
+		if (m_LastPathChange && now - m_LastPathChange >= DATAGRAM_SESSION_PATH_TIMEOUT ) ResetRoutingPath();
 		UpdateLeaseSet(msg);
 		
 	}