~ubuntu-branches/ubuntu/vivid/gnome-online-accounts/vivid

« back to all changes in this revision

Viewing changes to src/goaidentity/goakerberosidentityinquiry.c

  • Committer: Package Import Robot
  • Author(s): Laurent Bigonville
  • Date: 2014-12-04 22:51:04 UTC
  • mfrom: (1.2.11)
  • Revision ID: package-import@ubuntu.com-20141204225104-e06neyc83zmj283n
Tags: 3.14.2-1
* New upstream bugfix release
* debian/rules: Disable yahoo provider, it is experimental, broken and
  nothing is using it anyway (Closes: #764816)
* debian/control.in: Use the canonical URL for the Vcs-Svn field

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
  GList *queries;
34
34
  int number_of_queries;
35
35
  int number_of_unanswered_queries;
 
36
  gboolean is_failed;
36
37
};
37
38
 
38
39
typedef struct
230
231
 
231
232
  self = GOA_KERBEROS_IDENTITY_INQUIRY (inquiry);
232
233
 
233
 
  return self->priv->number_of_unanswered_queries == 0;
 
234
  return self->priv->number_of_unanswered_queries == 0 || self->priv->is_failed;
 
235
}
 
236
 
 
237
static gboolean
 
238
goa_kerberos_identity_inquiry_is_failed (GoaIdentityInquiry *inquiry)
 
239
{
 
240
  GoaKerberosIdentityInquiry *self;
 
241
 
 
242
  g_return_val_if_fail (GOA_IS_KERBEROS_IDENTITY_INQUIRY (inquiry), FALSE);
 
243
 
 
244
  self = GOA_KERBEROS_IDENTITY_INQUIRY (inquiry);
 
245
 
 
246
  return self->priv->is_failed;
234
247
}
235
248
 
236
249
static void
252
265
}
253
266
 
254
267
static void
 
268
goa_kerberos_identity_inquiry_fail (GoaKerberosIdentityInquiry *self)
 
269
{
 
270
  self->priv->is_failed = TRUE;
 
271
  _goa_identity_inquiry_emit_complete (GOA_IDENTITY_INQUIRY (self));
 
272
}
 
273
 
 
274
static void
255
275
goa_kerberos_identity_inquiry_answer_query (GoaIdentityInquiry * inquiry,
256
276
                                            GoaIdentityQuery *query,
257
277
                                            const char *answer)
258
278
{
259
279
  GoaKerberosIdentityInquiry *self;
260
280
  GoaKerberosIdentityQuery *kerberos_query = (GoaKerberosIdentityQuery *) query;
 
281
  size_t answer_length;
261
282
 
262
283
  g_return_if_fail (GOA_IS_KERBEROS_IDENTITY_INQUIRY (inquiry));
263
284
  g_return_if_fail (inquiry == kerberos_query->inquiry);
265
286
 
266
287
  self = GOA_KERBEROS_IDENTITY_INQUIRY (inquiry);
267
288
 
268
 
  inquiry = kerberos_query->inquiry;
269
 
 
270
 
  strncpy (kerberos_query->kerberos_prompt->reply->data,
271
 
           answer, kerberos_query->kerberos_prompt->reply->length);
272
 
  kerberos_query->kerberos_prompt->reply->length =
273
 
    (unsigned int) strlen (kerberos_query->kerberos_prompt->reply->data);
274
 
 
275
 
  goa_kerberos_identity_inquiry_mark_query_answered (self, kerberos_query);
 
289
  answer_length = strlen (answer);
 
290
 
 
291
  if (kerberos_query->kerberos_prompt->reply->length < answer_length)
 
292
    {
 
293
      goa_kerberos_identity_inquiry_fail (self);
 
294
    }
 
295
  else
 
296
    {
 
297
      strncpy (kerberos_query->kerberos_prompt->reply->data,
 
298
               answer, kerberos_query->kerberos_prompt->reply->length);
 
299
      kerberos_query->kerberos_prompt->reply->length = (unsigned int) answer_length;
 
300
 
 
301
      goa_kerberos_identity_inquiry_mark_query_answered (self, kerberos_query);
 
302
    }
276
303
}
277
304
 
278
305
static void
361
388
  interface->get_name = goa_kerberos_identity_inquiry_get_name;
362
389
  interface->get_banner = goa_kerberos_identity_inquiry_get_banner;
363
390
  interface->is_complete = goa_kerberos_identity_inquiry_is_complete;
 
391
  interface->is_failed = goa_kerberos_identity_inquiry_is_failed;
364
392
  interface->answer_query = goa_kerberos_identity_inquiry_answer_query;
365
393
  interface->iter_init = goa_kerberos_identity_inquiry_iter_init;
366
394
  interface->iter_next = goa_kerberos_identity_inquiry_iter_next;