diff -uNr gnokii.orig/smsd/lowlevel.c gnokii/smsd/lowlevel.c --- gnokii.orig/smsd/lowlevel.c 2005-12-11 22:11:15.425351000 +0100 +++ gnokii/smsd/lowlevel.c 2005-12-11 22:07:09.117802121 +0100 @@ -349,9 +349,8 @@ }; -void *Connect (void *phone) +static void RealConnect (void *phone) { - static gint status = 1; gn_data *data; gn_sms_status SMSStatus = {0, 0, 0, 0}; gn_sms_folder SMSFolder; @@ -385,7 +384,7 @@ { data->sms_folder = &SMSFolder; SMSFolder.folder_id = smsdConfig.memoryType; - if (status && (error = gn_sm_functions (GN_OP_GetSMSFolderStatus, data, &sm)) == GN_ERR_NONE) + if ((error = gn_sm_functions (GN_OP_GetSMSFolderStatus, data, &sm)) == GN_ERR_NONE) { if (phoneMonitor.sms.number != SMSFolder.number) { @@ -397,14 +396,8 @@ } else { - if (status) - { - g_print (_("GN_OP_GetSMSFolderStatus at line %d in file %s returns error %d\nEntering dumb mode."), __LINE__, __FILE__, error); - status = 0; - } - phoneMonitor.working = TRUE; - RefreshSMS (smsdConfig.maxSMS); - phoneMonitor.working = FALSE; + g_print (_("GN_OP_GetSMSFolderStatus at line %d in file %s returns error %d\nRestarting connection."), __LINE__, __FILE__, error); + break; } } else @@ -414,7 +407,7 @@ data->sms_status = &SMSStatus; data->memory_status = &dummy; - if (status && (error = gn_sm_functions (GN_OP_GetSMSStatus, data, &sm)) == GN_ERR_NONE) + if ((error = gn_sm_functions (GN_OP_GetSMSStatus, data, &sm)) == GN_ERR_NONE) { if (phoneMonitor.sms.unRead != SMSStatus.unread || phoneMonitor.sms.number != SMSStatus.number) @@ -427,14 +420,8 @@ } else { - if (status) - { - g_print (_("GN_OP_GetSMSStatus at line %d in file %s returns error %d\nEntering dumb mode."), __LINE__, __FILE__, error); - status = 0; - } - phoneMonitor.working = TRUE; - RefreshSMS (smsdConfig.maxSMS); - phoneMonitor.working = FALSE; + g_print (_("GN_OP_GetSMSStatus at line %d in file %s returns error %d\nRestaring connection."), __LINE__, __FILE__, error); + break; } } @@ -453,3 +440,14 @@ free (data); } + + +void *Connect (void *phone) +{ + while (1) + { + RealConnect (phone); + busterminate (); + sleep (1); + } +}