Shortest Path Through a Mesh Surface

Hi- I want to construct the shortest (geodesic) path along the surface of a mesh between two vertices. (Not just through the mesh edges, but the general shortest path anywhere across the faces of the mesh.) I have discovered that bmesh.ops.connect_vert_pair() seems to do exactly this, as long as the vertices are sufficiently close together (say 5-10 faces apart), but when the vertices are further apart on a large mesh, an edge list of [] is returned. What is happening here? How can I call this function with any pair of vertices from a single mesh surface? (Or is there a better method I should be using?) Thanks in advance for your help!

sample code:

data = bpy.context.object.data
bm = bmesh.new()
bm.from_mesh(data)

v0 = bm.verts[vert_index_0]
v1 = bm.verts[vert_index_1]
new_path = bmesh.ops.connect_vert_pair(bm, verts=[v0,v1])

if v1 is too far from v0 on the mesh, an empty list is returned