code: func (s *PublicTransactionPoolAPI) Resend(ctx context.Context, sendArgs SendTxArgs, gasPrice *hexutil.Big, gasLimit *hexutil.Uint64) (common.Hash, error) {
  	if sendArgs.Nonce == nil {
  		return common.Hash{}, fmt.Errorf("missing transaction nonce in transaction spec")
  	}
  	if err := sendArgs.setDefaults(ctx, s.b); err != nil {
  		return common.Hash{}, err
  	}
  	matchTx := sendArgs.toTransaction()
  	pending, err := s.b.GetPoolTransactions()
  	if err != nil {
  		return common.Hash{}, err
  	}
  
  	for _, p := range pending {
  		var signer types.Signer = types.HomesteadSigner{}
  		if p.Protected() {
  			signer = types.NewEIP155Signer(p.ChainId())
  		}
  		wantSigHash := signer.Hash(matchTx)
  
  		if pFrom, err := types.Sender(signer, p); err == nil && pFrom == sendArgs.From && signer.Hash(p) == wantSigHash {
  			// Match. Re-sign and send the transaction.
  			if gasPrice != nil && (*big.Int)(gasPrice).Sign() != 0 {
  				sendArgs.GasPrice = gasPrice
  			}
  			if gasLimit != nil && *gasLimit != 0 {
  				sendArgs.Gas = gasLimit
  			}
  			signedTx, err := s.sign(sendArgs.From, sendArgs.toTransaction())
  			if err != nil {
  				return common.Hash{}, err
  			}
  			if err = s.b.SendTx(ctx, signedTx); err != nil {
  				return common.Hash{}, err
  			}
  			return signedTx.Hash(), nil
  		}
  	}
  
  	return common.Hash{}, fmt.Errorf("Transaction %#x not found", matchTx.Hash())
  }
docs: // Resend accepts an existing transaction and a new gas price and limit. It will remove
  // the given transaction from the pool and reinsert it with the new gas price and limit.