diff --git a/channels/chan_vpb.c b/channels/chan_vpb.c
index 764fb396154dc24b279a49e37533af2d72270b24..30b183cdf477635ca317b8fb28d426b2c2aab7ee 100755
--- a/channels/chan_vpb.c
+++ b/channels/chan_vpb.c
@@ -682,16 +682,19 @@ static int vpb_call(struct ast_channel *ast, char *dest, int timeout)
 	  vpb_set_call(p->handle, &call);
 
 	  if (option_verbose > 2)
-	       ast_verbose(VERBOSE_PREFIX_3 " Calling %s on %s \n", dest, ast->name); 
+	       ast_verbose(VERBOSE_PREFIX_3 " Calling %s on %s \n", 
+			   dest, ast->name); 
+
+	  vpb_sethook_sync(p->handle,VPB_OFFHOOK);
 	  
 	  res = vpb_dial_async(p->handle, s);
 
-	 if (res != VPB_OK) {
-	      ast_log(LOG_DEBUG, "Call on %s to %s failed: %s\n", 
-		      ast->name, dest, vpb_strerror(res));	      
-	      res = -1;
-	 } else 
-	      res = 0;
+	  if (res != VPB_OK) {
+	    ast_log(LOG_DEBUG, "Call on %s to %s failed: %s\n", 
+		    ast->name, dest, vpb_strerror(res));	      
+	    res = -1;
+	  } else 
+	    res = 0;
     }
 
     if (option_verbose > 2)