View | Details | Raw Unified | Return to bug 1506 | Differences between
and this patch

Collapse All | Expand All

(-)openssh-5.1p1/scard-opensc.c (+9 lines)
Lines 121-127 Link Here
121
	struct sc_pkcs15_prkey_info *key;
121
	struct sc_pkcs15_prkey_info *key;
122
	struct sc_pkcs15_object *pin_obj;
122
	struct sc_pkcs15_object *pin_obj;
123
	struct sc_pkcs15_pin_info *pin;
123
	struct sc_pkcs15_pin_info *pin;
124
	int detach_retry = 1;
124
125
126
 detachretry:
125
	priv = (struct sc_priv_data *) RSA_get_app_data(rsa);
127
	priv = (struct sc_priv_data *) RSA_get_app_data(rsa);
126
	if (priv == NULL)
128
	if (priv == NULL)
127
		return -1;
129
		return -1;
Lines 159-164 Link Here
159
	}
161
	}
160
	pin = pin_obj->data;
162
	pin = pin_obj->data;
161
	r = sc_lock(card);
163
	r = sc_lock(card);
164
	if (r == SC_ERROR_READER_DETACHED) {
165
	  /* first retry after a plug fails; we'll try one more time */
166
	  debug("Retrying sc_lock() after receiving Error %d (%s)", r, sc_strerror(r));
167
	  detach_retry = 0;
168
	  sc_close();
169
	  goto detachretry;
170
	}
162
	if (r) {
171
	if (r) {
163
		error("Unable to lock smartcard: %s", sc_strerror(r));
172
		error("Unable to lock smartcard: %s", sc_strerror(r));
164
		goto err;
173
		goto err;

Return to bug 1506